内核内存申请函数
一、kmalloc12#include <linux/slab.h>static inline void *kmalloc(size_t size, gfp_t flags); ...
一、kmalloc12#include <linux/slab.h>static inline void *kmalloc(size_t size, gfp_t flags); ...
一、 红黑树的原理红黑树RB Tree是二叉树的一种,作为一种自平衡二叉树(一些情况下不是完全平衡的),它在最坏的情况下查询复杂度为O(logN)𝑂(𝑙𝑜𝑔𝑁)。与AVL树类似,尽管R...
一、kfifo原理 kfifo实现原理是采用循环(环形)队列。 1234567struct kfifo{ unsigned char *buffer; / *保存数据的缓冲区...
在Linux内核中使用了大量的链表结构来组织数据,包括设备列表以及各种功能模块中的数据组织。这些链表大多采用在include/linux/list.h实现的一个相当精彩的链表...
一、container_of 宏介绍到这里假设大家都懂了 typeof 和 语句表达式,那么我们就开始一睹 Linux 内核第一宏 container_of 的芳容吧: 1234#define ...
mmap 即 memory map,也就是内存映射。mmap 是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关...
一、构建gtest执行如下命令后,就会在系统目录下生成对应的头文件和静态库,可以直接在代码中引用了。 1234567git clone git@github.com:google/googlet...
一、poll介绍poll与select一样,只负责IO的等的过程,只不过一次可以等待多个文件描述符,他的作用是让read和write不再阻塞。 是用来监视多个文件描述符的状态变化的程序会停在po...
一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管...
一、信号量线程的信号量与进程间通信中使用的信号量的概念是一样,它是一种特殊的变量,它可以被增加或减少,但对其的关键访问被保证是原子操作。如果一个程序中有多个线程试图改变一个信号量的值,系统将保证...