- 博客(20)
- 收藏
- 关注
原创 Linux 内存管理简介
struct page :描述的是一个物理页, 内存管理的最小单元, 只描述的是物理页面本身, 程序和系统运行,存在数据的换入换出, 因此page中的数据和page无本质的联系. 数据结构定义在 : include/linux/mm_types.h 主要内容: (1) 页面状态(page-flags.h); (2) 页的类型: a. page cache/anonymous page; b. page_pool used by ne..
2021-11-11 22:31:00
1193
原创 gitee 代码仓建立及本地同步
1.添加步骤https://www.yuque.com/moonpielu/ucdhn8/hkff8a添加公匙(1) 本地 :ssh-keygen -t rsa -C email address(2) gitee :密匙添加问题及解决–> 问题:sign_and_send_pubkey: signing failed: agent refused operation错误解释:表示ssh-agent 已经在运行了,但是找不到附加的任何keys,就是说你生成的key,没有附加
2021-03-27 22:01:44
633
原创 [kernel][technical points] likely & unlikely
一. 定义#define likely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 1))#define unlikely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 0))__builtin_constant_p(x) : int __builtin_constant_p (exp) [Built-in Function]...
2021-02-11 00:28:21
160
1
原创 Makefile理论实践(一)
makefile 就是为了软件工程的自动化编译, 日常进行软件工程时,随软件的增删改,应当减少人为的修改makefile文件,所以应该增强makefile的鲁棒性, makefile的 模式思维,就比较的重要 .应用举例 :多目标编译:(1) 对源文件严重依赖:all: test test1.PHONY: test test1test:test.c gcc -o $@ $<test1:test1.c gcc -o $@ $<.PHONY:cleanclean:rm -r
2020-08-13 16:18:31
171
原创 内核锁机制
一. 原子操作 原子操作,就是代码执行不会在执行完毕前被任何其他任务或事件打断. 原子操作需要硬件的支持,因此是架构相关的, 它们都使用内嵌汇编语言实现,因为C语言并不能实现这样的操作. 内核原子操作的理解: a. 资源的使用情况计数, atomic_t的counter是int型的,可以记录资源的使用情况; b. 资源使用的互斥, 当 atomic_t的counter的取值情况...
2019-11-21 10:34:57
450
原创 FTL(Flash Translation Layer)原理(1)
FTL (Flash Translation Layer) :是介于文件系统和物理闪存之间,充分结合闪存物理特性的一个磁盘管理软件抽象层。提供功能接口及多种可配置参数,用户可根据需要配置,从而提供最优的嵌入式存储方案。整体架构如下:f2fs 文件系统有多种可配置参数,因此可根据不同的存储需求方案,配置不同的参数,以达到需求的最佳性能,稳定性的存储方案。...
2019-10-29 17:30:18
1204
原创 makefile变量定义和使用
makefile变量定义和使用释义和示例:1. makefile 文件TARGET = mainobjects = main.o std.o#objects := $(wildcard *.o)#objects := [*.o]#隐藏编译规则HIDE := @##### 变量的定义和使用:# 1. :=# 直接赋值,定义的变量立即生效;# ...
2019-10-10 17:33:35
628
原创 内核container_of原理及应用
一. 原理container_of的作用是已知一个结构体的成员变量名(memmber),成员变量指针(ptr),结构体类型(type),来获取结构体的首地址。核心原理是,成员变量的地址减去成员变量相对于结构体起始地址的偏移量,获得结构体的首地址。#define container_of(ptr, type, member) ( \ { ...
2019-05-22 22:44:57
427
原创 安装anaconda后切换 python版本的方法
问题:安装anaconda后,无法使用update-alternatives --config来切换python的方法https://www.jianshu.com/p/fe327b72fa31问题:ubuntu-16.04 降低gcc 版本到gcc-4.4https://blog.csdn.net/wu11zhike/article/details/83865549...
2019-05-03 19:04:13
2012
原创 用户空间接收uevent示例
#include <stdio.h>#include <errno.h>#include <stdbool.h>#include <string.h>#include <strings.h>#include <sys/socket.h>#include <sys/un.h>#include <u...
2019-04-29 08:21:34
1463
原创 selinux 代码实现原理
1.概述 selinux描述的是主体(进程)和客体(文件,socket, 进程间通信的管道)间的访问控制的安全上下文。一个进程或者一个文件,目录相当于有了独有的一个安全域,其他的文件,进程要访问具有安全上下文的文件或者进程,需要有安全上下文标识的标签,才能互通有无。比如可以自己定义一个域: type test_monitor, domain; //test_monitor具有domain属...
2018-06-10 15:30:05
3966
原创 matplotlib添加字体及中文乱码问题
下载中文字体: http://www.font5.com.cn/font_download.php?id=151&amp;part=1237887120将下载的字体ttf文件放到matplotlib的字体库位置: anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/删除matplotlib的字体缓存,文件...
2018-06-07 22:21:12
5210
原创 matplotlib中防止中文乱码
matplotlib中有各种默认配置属性供画图使用。 matplotlib.rcParamas可在python中对matpoltlib中的各个配置属性进行修改,修改成功后,之后的绘图属性都按照新的属性来进行。 eg:## 设置字符集,防止中文乱码mpl.rcParams['font.sans-serif']=[u'simHei']mpl.rcParams['axes.unicode...
2018-06-03 22:24:14
498
原创 sklearn.model_selection.train_test_split
sklearn中, 对样本数据进行训练集和测试集分割的API :sklearn.model_selection.train_test_split(*arrays, **options) 参数说明: array : 具有相同行数的样本数据序列(每个序列中的样本数要一致); 可以有多个样本序列,序列可以是python list, numpy array, matrice,...
2018-06-02 21:52:18
682
原创 UART原理
1. 概述 UART(Universal Asynchronous Receiver/Transmitter)是一种异步串口IO端口(Asynchronous Serial I/O port),每个SOC上可支持多个独立的UART。每个独立的UART的特性如下: (1)每个UART port可基于中断或者DMA来工作,也就是UART可生成中断或者DMA请求,在内存和UART间进...
2018-04-07 11:10:29
7929
2
原创 Linux系统调用添加(base linux kernel-4.4)
(1) 添加系统调用号: arch/arm64/include/asm/unistd32.heg: #define __NR_sysinfo 116__SYSCALL(__NR_sysinfo, compat_sys_sysinfo)(2)添加用户空间和kernel中对应函数的向量表: arch/arm/tools/syscall.tble...
2018-04-01 16:39:57
357
原创 const和指针的三种组合
/* int *const p : p 指针的指向不能改变;(此时理解为const修饰的是p指针) int const* p / const int* p : p指向的地址空间的取值不能改变;(此时理解为const修饰的是p(理解为取值)) int const* const p : p指向的地址空间取值和指向都不能改变.编译的时候,如果编译器识别到被const修改的变量a,有代码有...
2018-03-17 22:43:51
788
原创 memset正确使用方式
/* memset(void* s, int c, size_t n) 该函数是以 字节为单位 将s指向的地址开始写入n长度的c, 所以数据类型为char时,可以正确memset ; 如果是其他类型的数据就不行了,就得用循环实现了. *///#define LOOP_INIT_STRUCT#include <stdio.h>#include <strin...
2018-03-17 10:49:39
4715
原创 数组/数组指针/指针数组的区别理解
/* 数组指针:首先是个指针,指向数组的指针,eg: int(*p)[10],p指向偶10个元素的int型数组(int(*)[10]p); 指针数组:首先是个数组,存储指针的数组,eg: int* p[10],p是数组名,存储的是10个 int型指针。 一维数组:一位数组名相当于一个指针,存放的是第0个元素首地址。 二维数组:二位数组名存放的是第0行的首地址,不是第...
2018-03-17 10:46:22
183
1
原创 git 使用部分总结
常用技法:git blame显示文件修改相关信息,包括commit-id, author, message,date.eg: git blame -L 166,+10 ,查看文件的166行开始的后10行相关信息。Git log –pretty=oneline一行行显示该git库的所有提交 Git log --pretty=format:""按照某一种格式显示,有如下供选择的格式:%H 提交
2016-07-10 15:02:30
290
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人