linux中的list
Linux内核提供了list这个数据结构以及操作函数。这个数据结构在内核驱动中使用广泛,而且确实方便使用。为了详细了解这个数据结构的用法,方便以后使用,把这个数据结构里面的功能都试用了一次,清楚了很多。下面是实验程序和自己得出的使用方法,请高手多多指教。 Struct list_head { struct list_head *next, *prev ;}; List结构实际上是一个list_head结构构成的链表。如果想使用这个结构来构造自己的链表,只要把这个struct list_head结构嵌入到自己的结构体中,成为自己结构体的一个成员即可。整个list.h文件的函数都使用这个结构构成一个链表,而自己的结构体成员实际并不在链表上,但是list.h中使用container_of这个宏可以通过结构体中的struct list_head成员的地址来得到整个结构体的地址,这样就可以实现使用list.h文件中的定义实现自己的链表构造了。 list.h提供的函数构造的链表是有一个空头节点的。 如果在用户程序中使用这个结构的话,需要对这个文件做一些改动。主要是找不到如何将这个头文件直接安装到/usr/include目录下,只好直接拷贝。但是这个头文件中同时包含了另外的两个体系相关的头文件,一个是prefetch.h文件,这个文件提供perfetch这个函数用来针对特定的CPU体系做优化;另一个是asm/system.h这两个文件无法提供,只能不拷贝,将list.h中使用到这两个文件的部分直接拷贝到list.h文件中。主要是container_of宏(这个在kernel.h中;另外需要将所有的prefetch注释掉,否则无法链接通过。 LIST_HEAD(name):这个宏可以定义一个struct list_head结构体,并初始化结构体中的两个成员函数 LIST_INIT_HEAD( struct list_head *head) ;这个函数初始化给定的结构体,使的成员指向自己; List_add ( struct list_head *new , struct list_head *list );new是要添加到list链表中的节点;list是要添加到的链表中的一个节点,new这个节点会添加到这个节点后面。如果提供的list是一个链表的头节点,那么这个函数用来模拟一个LIFO的栈是不错的。 list_add_tail( struct list_head *new , struct list_head *list );和上面的函数一样,只不过是new的位置在list的前面。如果提供的list是一个链表的头节点,那么就是一个FIFO的队列。 list_del (struct list_head *entry , struct list_head *list );从链表中删除entry节点,并将entry节点的成员指针指向无效地址。 list_replace(struct list_head * new , struct list_head *old);用节
相关文档:
例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......
在过去的十年中,嵌入式系统的开发发生了很大的变化。以前嵌入式设备往往是一个孤立的、资源有限的系统,它们追求的是在有限的价格上满足一定的功能性要求。通常它们采用那些功能并不强大的CPU,这也是开发者不得不尽可能地压缩嵌入式系统性能的原因。而今天人们对嵌入式设备在 ......
一.添加用户:
su命令使用root权限
修改/etc/passwd,添加用户记录
pwconv让/etc/passwd和/etc/shadow同步
修改/etc/group
创建用户的主目录,并把用户启动文件夹复制到用户的主目录
cp -R /etc/skel /home/xxj
改变新增用户的属主和权限
chown xxj:xxj /home/xxj
ls -ld /home/xxj
chmod 700 /home/xxj
设 ......
工作中发现,在linux中搭建WEBLOGIC应用服务器的环境下,有时可能同时发布多个war包,而且每一个war包的文件数目很多,或者客户同时访问量比较大,此时WEBLOGIC就会报错,报错信息中包含“Too many open files”,例如:
java.io.FileNotFoundException: /home/weblogic/bea/user_projects/domains/lhyth/server ......
Linux 正在嵌入式开发领域稳步发展。因为 Linux 使用 GPL(请参阅本文后面的参考资料
),所以任何对将 Linux 定制于
PDA、掌上机或者可佩带设备感兴趣的人都可以从因特网免费下载其内核和应用程序,并开始移植或开发。许多 Linux 改良品种迎合了嵌入式/实时市场。它们包括
RTLinux(实时 Linux)、uclinux( ......