
linux common
... ...
RT-2022
这个作者很懒,什么都没留下…
展开
-
linux内核数据结构--bitmap
bitmap可以理解成一个位数组,即数组每个元素是一个bit, 内核提供了各种接口以方便操作bitmap定义#define DECLARE_BITMAP(name,bits) \ unsigned long name[BITS_TO_LONGS(bits)]使用之前需要先调用这个宏定义一个bitmap,实际上就是一个unsigned long类型的数组,数组长度是根椐bits, 以及long类型所占字节数计算出来的。bitmap操作函数 bitmap_zero(dst, nbits)原创 2022-03-05 13:13:28 · 1421 阅读 · 0 评论 -
linux内核数据结构--struct iov_iter
内核中很多地方都用到了这个数据结构,它主要用于处理一个或多个数据块。结构体定义struct iov_iter { u8 iter_type; bool nofault; bool data_source; size_t iov_offset; size_t count; union { const struct iovec *iov; const struct kvec *kvec; const struct bio_vec *bvec; struct xarray *xar原创 2022-03-04 16:19:23 · 1300 阅读 · 0 评论 -
linux 内核链表
linux内核代码中常用的两种链表:双向链表、哈希链表双向链表struct list_head { struct list_head *next, *prev;};内核中的链表是通过将链表节点嵌入到数据结构,将数据结构链接起来的,链表节点与数据的分离使其可以更操作起来更简单,并且能在内核发中通用。内核中也定义了一些对链表节点进行操作的函数及宏定义:1.链表定义#define LIST_HEAD_INIT(name) { &(name), &(name) }#define原创 2022-02-26 22:49:51 · 1148 阅读 · 0 评论