pr_debug打印输出 将xxxx_function里面调用pr_debug的地方使能输出,我们在kernel dmesg里面就能看到这条语句的打印。里面会列出内核里面使用pr_debug的所有地方。里面包括xxxx_function里面调用pr_debug的地方。
VIM快速跳转 例如,"6fm"表示移动到光标右边的第6个'm'字符上。f 命令移动到光标右边的指定字符上,例如,"fm",会把移动到光标右边的第一个'm'字符上。w b 跳转到下个/上个单词的第一个字符处。t 命令和”f“命令的区别在于,它移动到光标右边的指定字符之前。T 命令是”t“命令的反向版本,它移动到光标右边的指定字符之后。, 命令会反方向重复前一次输入的f, t, F, T命令。F 命令则反方向查找,也就是移动到光标左边的指定字符上。命令重复前一次输入的f, t, F, T命令,
VIM缓冲区 其中u表示这个缓冲区是vim软件(及其插件)本身打开的缓冲区,而不是用户为了编辑某个文件打开的缓冲区。特别的,如果用户只想查看自己打开的缓冲区,直接用":ls"命令即可;通过buffer编号或者buffer对应的file_path选择某个缓冲区,并在当前窗口覆盖显示选定的buffer。通过:bn / :bp / :blast / : bfirst切换缓冲区(所有缓冲区循环滚动)(1) 最前面的每行1,2,3,4表示缓冲区的编号;--> 删除指定范围的缓冲区。--> 卸载指定范围的缓冲区。
shell遍历目录并提取子目录/文件名字 {file//dir/path}:将全部dir 替换为 path:/path1/path2/path3/my.file.txt。${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt。${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt。${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file。单一符号是最小匹配;
Linux Initrd ramdisk就是将内存的一部分分配为一个分区并作为硬盘来使用。对于系统运行时不断使用的程序,将它们放在ramdisk中将加快计算机的操作,如大数据量的网络服务器、无盘工作站等。
vscode C++ IntelliSense插件配置compile_commands.json 本篇文章是的姊妹篇,ccls的配置相对来说更复杂,并且不支持gdb调试,所以这里再写一篇通过配置微软官方的C++ IntelliSense插件实现compile_commands.json解析,从而加快代码解析速度。
EDKII实现bmp图片加载并显示的应用程序 1.EDKII 支持BGR32作为原始数据的BMP图片2.所以,我们需要先找到或者自己制作一张满足这个要求的BMP图片3.这里,我们采用自己制作BMP图片的方式,制作过程分为两骤(实现代码如下):a.用ffmpeg将.png图片转换成BGRA原始数据b.编写一个将BGRA数据组装成BMP图片的程序。
C语言结构体的存储空间分配 1.如果某个机器的整型值长度为4个字节,那么结构体的起始存储位置必须能被4整除。2.编译器按照成员列表的顺序一个接一个地给每个成员分配内存。其中对于各个成员,编译器根据其类型分配赋予对其要求,比如char成员,按地址能被1整除对齐;short成员,按地址能被2整除对齐;int成员,按地址能被4整除对齐......3.编译器在存储结构体成员时,为了满足各个成员的正确边界对齐要求,会在成员之间添加用于填充的额外内存空间。
POSIX线程使用signal模拟“中断“处理流程 1. 与中断handler对应的,信号也有handler。每个特定的中断对应一个handler,每个特定的信号也对应一个handler。2. 中断通过硬件或者int指令等方式触发handler执行,信号通过pthread_kill向某个线程发送信号触发handler执行。该线程收到信号后,会打断当前执行流并跳转到信号handler执行,之后返回到当前执行流。......
lscpu命令信息解读 但是随着处理器的增加,共享内存可能会导致内存访问冲突越来越厉害,且如果内存访问达到瓶颈的时候,性能就不能随之增加。在物理分布上,NUMA node的处理器和内存块的物理距离更小,因此访问也更快。所以使用NUMA的模式如果能尽量保证本node内的CPU只访问本node内的内存块,那这样的效率就是最高的。BGA为CPU集成在主板上,不可拆卸式的。core:core是物理概念,一个独立的硬件执行单元,对应于物理CPU(但是是多个core集成在一个真正的物理CPU中),也是处理器芯片上的独立计算核心。...
Linux Completions - “wait for completion” barrier APIs If you have one or more threads that must wait for some kernel activity to have reached a point or a specific state, completions can provide a race-free solution to this problem. Semantically they are somewhat like a pthread_barrier() and have similar use-
XV6内核线程与进程切换过程 2. 期间两次调用swtch()函数,分别完成: 进程1 context->sechduler context和sechduler context->进程2 context的切换;1. 进程切换通过scheduler()内核线程中转实现;
DRM TTM概述 4.struct ttm_tt —— 对于应用程序来说,并不会关心内存设备和驱动,它们关心的是能够写入数据的虚拟内存;但对于显卡来说,它关心显存或映射为显存的内存,所以,把虚存和显存绑定在一起的一个对象就呼之欲出了,这就是ttm_tt。3.struct ttm_buffer_object —— TTM每分配一块内存,不管在系统内存中还是在显卡内存中,都会创建一个ttm_buffer_object对象,代表这块内存的实体,处理数据的放置和CPU映射。约定,这里说的显存包括VRAM和GTT。...