Learning BSD.sys/queue.h

This file includes 4 data-structures..

Insteresting because they are written in 1994.. to make it easier using the structures..

LIST:

the common usage of the structures is to create a structure containing the list-entry as manage-tools of its pointers, this structure might contain prev|next pointers.

Then to create a header of the specific data-structure.. this header contains only 1 pointer pointing to the first struct of the data-structure..

then the pointed struct‘s next pointer is pointing to the next struct of the list, or null, the prev pointer is pointing to the previous pointer‘s address.

so this kind of design has its problem: cannot know if it‘s the first struct of this structure, even do not know if it has a prev pointer.. and actually cannot traverse backward..

As i forseen, this kind of design can back-traverse, but in other way like using methods like container_of(le_prev,type). though no macros in queue.h can do this. As the document says, it‘s a list may only be traversed in forward direction.

this doubly linked list has its fast insertion in the middle of the list, if buildt a hash table for all the **prev address and their entries. O(1).

the usages:

时间: 2024-10-08 00:31:13

Learning BSD.sys/queue.h的相关文章

24>>sys/types.h和fcntl.h有什么用

sys/types.h 是Unix/Linux系统的基本系统数据类型的头文件,含有size_t,time_t,pid_t等类型. 在应用程序源文件中包含 <sys/types.h> 以访问 _LP64 和 _ILP32 的定义.此头文件还包含适当时应使用的多个基本派生类型.尤其是以下类型更为重要: clock_t 表示系统时间(以时钟周期为单位). dev_t 用于设备号. off_t 用于文件大小和偏移量. ptrdiff_t 是一种带符号整型,用于对两个指针执行减法运算后所得的结果. si

解决fatal error: sys/system_properties.h: No such file or directory compilation terminated.

编译的异常log: system/core/include/cutils/properties.h:22:35: fatal error: sys/system_properties.h: No such file or directory compilation terminated. make[1]: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libinput_intermediates/<strong>xxxxx</strong>

#include &lt;sys/socket.h&gt;找不到头文件

ubuntu下socket编程涉及到头文件sys/socket.h 和sys/types.h.我是用的codeblocks编辑器,当我想查看socket,h头文件时编辑器提示找不到头文件. 我就想可能是没有设置codeblocks头文件的搜索路径.好吧,那首先就找找这个文件藏在哪里吧 <span style="font-size:12px;">find / -name socket.h -print 或者locate sys/socket.h</span> 结果

[opencv3.2cmake error ] sys/videoio.h no such file or directories

I don't have /usr/include/sys/videoio.h at all Before that , I have ipp download question. So I download a ippiv from the internet and move it to the thirdparties. Then the sys/videoio.h question came. I mistake it is another question isolated from i

linux中#include &lt;sys/stat.h&gt;的位置

linux中的gcc编译器默认是从 "cd /usr/include/" 中查找头文件的,但是在该目录下并没有发现sys子目录.那么这个sys到底对应于系统的哪个目录?经过一番查找,我发现#include <sys/stat.h>在:"cd /usr/include/x86_64-linux-gnu/sys/stat.h"这个里面. 我的操作如下图所示: 原文地址:https://www.cnblogs.com/chenmingjun/p/8352735

&lt;sys/types.h&gt;中的系统数据类型

操作系统的实现中,有很多数据的数据类型是不同的,比如历史上的主设备号和次设备号,分别为8位,而Solaris则分别是14位和18位,那么我现在正在使用的操作系统,其主从设备号分别是多少位呢? 类似设备号这样的操作系统属性,其数据类型都由文件<sys/types.h>来定义,统称为基本系统数据类型(primitive system data type).以下是该文件中定义的不同基本系统数据类型: 常用的基本系统数据类型 类型 说明  clock_t 时钟滴答计数器(进程时间)  comp_t 压

在vc6里头文件sys/timeb.h里struct timeb各变量的具体含义?

timeb的定义:struct _timeb{         time_t time;          unsigned short millitm;          short timezone, dstflag;};           time是从UTC时间1970年1月1日午夜(00:00:00)起累计的秒数:      millitm是一秒内的毫秒数      dstflag不为0,说明这是夏令时时间      timezone是UTC时间和本地时间的相差分钟数

《SaltStack技术入门与实践》—— 实践案例 &lt;中小型Web架构&gt;3 Memcached配置管理

实践案例 <中小型Web架构>3 Memcached配置管理 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Memcached介绍 Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态数据库驱动网站的访问速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通

libevent在windows下使用步骤详解

libevent是一个常用的网络库,下面就看看在windows下面编译测试的过程吧. 一 环境 系统:win8.1 编译器:VS2013 官方下载地址:http://libevent.org/ 版本:2.0.22-stable 二 编译静态库 1 解压 把上面下载到libevent-2.0.22-stable.tar.gz解压,得到libevent-2.0.22-stable文件夹 2 添加宏定义 在libevent-2.0.22-stable文件夹下找到下面三个文件: event_iocp.c