Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

[Ê®ÔÂÍùÎô]——LinuxÄÚºËÖеÄlist.hdz̸

ΪʲôҪ½Ð×ö“Ê®ÔÂÍùÎô”ÄØ£¬ÊÇΪÁ˼ÍÄîÎÒµÄÔ­²©¿Í£¬http://www.casual0402.cn¡£
²»ÖªµÀΪʲô£¬Í»È»ÏëÀ´Ò»¸öеĿªÊ¼——¶øÄǸö²©¿Í´æ»îÖÁ½ñ¸ÕºÃÊ®¸öÔ£¬Ò²ÓÐÊ®¸öÔÂÀïµÄÎĵµ¡£
Ê®ÔÂÍùÎô£¬×ÜÓÐһЩ¾õµÃÕä¹óµÄ£¬ËùÒÔ°áǨµ½ÕâÀïÀ´¡£
¶øÕâƪÎÄÕÂÊÇÔÚ09.04.10ÀïдµÄ¡£
ÖÕ¹éÊÇÒ»¼Ò̸֮¡£
Jason Lee
 
————————————–cut-line
/*-------------------------------
include/linux/list.h -2.6.29
*/
¸ÃÎļþ°üº¬£º
1#ifndef _LINUX_LIST_H
2#define _LINUX_LIST_H
3
4#include <linux/stddef.h>
5#include <linux/poison.h>
6#include <linux/prefetch.h>
7#include <asm/system.h>
 
 
Á´±íµÄ³õʼ»¯
19struct list_head {
20 struct list_head *next, *prev;
21};
22
23#define LIST_HEAD_INIT(name) { &(name), &(name) }
24
25#define LIST_HEAD(name) \
26 struct list_head name = LIST_HEAD_INIT(name)
27
28static inline void INIT_LIST_HEAD(struct list_head *list)
29{
30 list->next = list;
31 list->prev = list;
32}
19-21
Ðж¨ÒåÁËÒ»¸ölist_head
½á¹¹£¬Ö»ÓÐÁ½¸öÖ¸Ïòlist_head
½á¹¹µÄÖ¸Õ룬һ¸önext
£¬Ò»¸öprev
£¬×÷ÓÃÏÔ¶øÒ×¼û¡£
23
ÐеĺêLIST_HEAD_INIT(name)
Óë25
ÐеĺêLIST_HEAD(name)
×éºÏ½øÐÐÁ´±íµÄ³õʼ»¯£¬¼´next
ºÍprev
¶¼Ö¸Ïò×ÔÉí¡£
25
Ðеľ²Ì¬ÄÚÁªº¯ÊýINIT_LIST_HEAD(struct list_head *list)
ͬÑùÊÇÓÃÀ´³õʼ»¯Á´±í£¬Ð§¹ûͬÉÏÊöÒ»µã¡£GNU
쵀C
ÓïÑÔ¶ÔC
½øÐÐÁËÀ©³ä£¬²»ÔÙÊÇANSI C
£¬ËüÀïÃæÔöÌíÁ˺ܶàC++
µÄÌØÐÔ£¬ËùÒÔ¶ÔÄں˽øÐбàÒëÖ»ÄÜÑ¡ÓÃÏàÓ¦µÄGCC
¡£
INIT_LIST_HEAD
ÔÚÓеÄÎÄÏ×ÖÐÊÇÒÔºêµÄÐÎʽ³öÏÖ£º
#define INIT_LIST_HEAD(ptr) do { \
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)
 
 
Á´±íµÄ²åÈë
34/*
35 * Insert a new entry between two known consecutive entries.
36 *
37 * This is only for internal list manipulation where we know
38 * the prev/next entries already!
39 */
40#ifndef CONFIG_DEBUG_LIST
41static inline void __list_add(struct list_head *new,
42 struct list_head *prev,
43 struct list_head *next)


Ïà¹ØÎĵµ£º

ʵսLinux Bluetooth±à³Ì(Áù) L2CAP±à³ÌʵÀý

ÀýÒ»£º·¢ËÍ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 ......

[תÌû]LinuxÇý¶¯¿ª·¢Ñ§Ï°µÄһЩ±ØÒª²½Öè

 1. ѧ»áд¼òµ¥µÄmakefile
2. ±àһЩӦÓÃ
³ÌÐò
£¬¿ÉÒÔÓÃmakefileÅÜÆðÀ´
3. ѧ»áдÇý¶¯
µÄmakefile
4. дһ¼òµ¥charÇý¶¯£¬makefile±àÒëͨ¹ý£¬¿ÉÒÔinsmod£¬ lsmod£¬ rmmod. ÔÚÇý¶¯µÄinitº¯ÊýÀï´òÓ¡hello world£¬insmodºóÓ¦¸ÃÄܹ»Í¨¹ýdmesg¿´µ½Êä³ö
¡£
5. дһÍêÕûÇý¶¯£¬ ¼ÓÉÏread£¬ write£¬ ioctl£¬ pollingµÈ¸ ......

LinuxϵͳµÄShell I/OÖض¨ÏòÏê½â

I/OÖض¨ÏòÏê½â¼°Ó¦ÓÃʵÀý
1¡¢ »ù±¾¸ÅÄÕâÊÇÀí½âºóÃæµÄ֪ʶµÄÇ°ÌᣬÇëÎñ±ØÀí½â£©
a¡¢ I/OÖض¨Ïòͨ³£Óë FDÓйأ¬shellµÄFDͨ³£Îª10¸ö£¬¼´ 0¡«9£»
b¡¢ ³£ÓÃFDÓÐ3¸ö£¬Îª0£¨stdin£¬±ê×¼ÊäÈ룩¡¢1£¨stdout£¬±ê×¼Êä³ö£©¡¢2£¨stderr£¬±ê×¼´íÎóÊä³ö£©£¬Ä¬ÈÏÓëkeyboard¡¢monitor¡¢monitorÓйأ»
c¡¢ Óà < À´¸Ä±ä¶Á½øµÄÊý ......

LinuxÏÂÐÂÔöMakefileÖеÄÈ«¾Ö±äÁ¿µÄ»úÖÆ

1. ²½ÖèÒ»
·¨Ò»£ºÐÞ¸Äϵͳ±àÒëʱҪÓõ½µÄConfig.in£¬Ôö¼ÓÄãÒªÓõÄÈ«¾Ö±äÁ¿
·¨¶þ£ºÐ´Ò»¸ö×Ô¼ºµÄConfig.in,È»ºóÔÚÆäËû»á±àÒëµ½µÄConfig.inÖаüº¬
2.²½Öè¶þ
make menuconfig
Ö®ºóÔÚÉú³ÉµÄ.configÖУ¬¾Í¿ÉÒÔgrepµ½ÐÂÌí¼ÓµÄ±äÁ¿ÁË
3.²½ÖèÈý
ÔÚMakefileÖоͿÉÒÔÓÃÕâ¸ö±äÁ¿ÁË¡£ ......

linux Ïß³ÌÓë½ø³Ì

1£®4 Ï̴߳´½¨µÄLinuxʵÏÖ
ÎÒÃÇÖªµÀ£¬LinuxµÄÏß³ÌʵÏÖÊÇÔÚºËÍâ½øÐеģ¬ºËÄÚÌṩµÄÊÇ´´½¨½ø³ÌµÄ½Ó¿Údo_fork()¡£ÄÚºËÌṩÁËÁ½¸öϵͳµ÷ÓÃ__clone()ºÍfork ()£¬×îÖÕ¶¼Óò»Í¬µÄ²ÎÊýµ÷ÓÃdo_fork()ºËÄÚAPI¡£µ±È»£¬ÒªÏëʵÏÖỊ̈߳¬Ã»ÓкËÐĶԶà½ø³Ì£¨ÆäʵÊÇÇáÁ¿¼¶½ø³Ì£©¹²ÏíÊý¾Ý¶ÎµÄÖ§³ÖÊDz»Ðеģ¬Òò´Ë£¬do_fork()ÌṩÁ˺ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ