Linux内核的链表
自2.1内核开发版以来,linux就引入了正式的链表实现,采用的是双向循环链表。因此,在开发过程中应该使用这些已有的接口。
1. 定义
链表结构体定义在文件<linux/list.h>中。
struct list_head {
struct list_head *next;
struct list_head *prev;
};
使用时通常需要把它嵌入到你自己的结构体中。
例:
struct my_struct {
struct list_head list;
unsigned long dog;
void * cat;
};
下面给出一些接口:
struct my_struct *p;
初始化:
/*动态初始化*/
p->dog = 0;
p->cat = NULL;
INIT_LIST_HEAD(&p->list);
/*静态初始化*/
struct my_struct mine = {
.list = LIST_HDAD_INIT(mine.list);
.dog = 0;
.cat = NULL;
};
/*直接声明并初始化*/
static LIST_HEAD(fox); /*声明并初始化一个名为fox的静态链表*/
2. 基本操作
给链表增加一个节点:
list_add(struct list_head *new, struct list_head *head);
/*该函数向指定链表的head节点后插入new节点。*/
list_add_tail(struct list_head *new, struct list_head *head);
/*该函数向指定链表的head节点前插入new节点。*/
从链表中删除一个节点:
list_del(struct list_head *entry);
/*该函数仅仅是将entry元素从链表中移走。*/
list_del_init(struct list_head *entry);
/*该函数将entry元素从链表中移走并再次�
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
(L2CAP协议简介,L2CAP在BlueZ中的实现以及L2CAP编程接口)
一:L2CAP协议简介:
Logical Link Control and Adaptation Protocol(L2CAP)
逻辑连接控制和适配协议 (L2CAP) 为上层协议提供面向连接和无连接的数据服务,并提供多协议功能和分割重组操作。L2CAP 充许上层协议和应用软件传输和接收最大长度为 64K 的 L2CAP � ......
一. 文件一次读入速度
linux下读文件这东西最后都是要通过系统调用sys_read(fd,buf,count)来实现的,所以如果要提高速度,就是最简单地调用sys_read的封装,比如直接用read()或fread()。下面是我在linux下的几个测试。
首先创建一个130M数据文件 dd if=/dev/zero of=data bs=1024k count=130
[dd if=/dev/zero of=data b ......
深入理解linux系统调用与使用之整理篇
一、 什么是系统调用
在Linux的世界里,我们经常会遇到系统调用这一术语,所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门(gate)陷入(trap)实现。系统� ......
深入理解与使用Linux系统调用之整理笔记
一、 什么是系统调用
在Linux的世界里,我们经常会遇到系统调用这一术语,所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门(gate)陷入(trap)实现。系� ......