[Ê®ÔÂÍùÎô]——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Îļþ½á¹¹
¡¡¡¡Îļþ½á¹¹ÊÇÎļþ´æ·ÅÔÚ´ÅÅ̵ȴæÖüÉ豸ÉϵÄ×éÖ¯·½·¨¡£Ö÷ÒªÌåÏÖÔÚ¶ÔÎļþºÍĿ¼µÄ×éÖ¯ÉÏ¡£
¡¡¡¡Ä¿Â¼ÌṩÁ˹ÜÀíÎļþµÄÒ»¸ö·½±ã¶øÓÐЧµÄ;¾¶¡£
¡¡¡¡LinuxʹÓñê×¼µÄĿ¼½á¹¹£¬ÔÚ°²×°µÄʱºò£¬°²×°³ÌÐò¾ÍÒѾΪÓû§´´½¨ÁËÎļþϵͳºÍÍêÕû¶ø¹Ì¶¨µÄĿ¼×é³ÉÐÎʽ£¬²¢Ö¸¶¨ÁËÿ¸öĿ¼µÄ×÷ÓúÍÆäÖеÄÎļþ ......
1£®4 Ï̴߳´½¨µÄLinuxʵÏÖ
ÎÒÃÇÖªµÀ£¬LinuxµÄÏß³ÌʵÏÖÊÇÔÚºËÍâ½øÐеģ¬ºËÄÚÌṩµÄÊÇ´´½¨½ø³ÌµÄ½Ó¿Údo_fork()¡£ÄÚºËÌṩÁËÁ½¸öϵͳµ÷ÓÃ__clone()ºÍfork ()£¬×îÖÕ¶¼Óò»Í¬µÄ²ÎÊýµ÷ÓÃdo_fork()ºËÄÚAPI¡£µ±È»£¬ÒªÏëʵÏÖỊ̈߳¬Ã»ÓкËÐĶԶà½ø³Ì£¨ÆäʵÊÇÇáÁ¿¼¶½ø³Ì£©¹²ÏíÊý¾Ý¶ÎµÄÖ§³ÖÊDz»Ðеģ¬Òò´Ë£¬do_fork()ÌṩÁ˺ ......
ÔÎĵØÖ·£ºhttp://www.xxlinux.com/linux/article/development/embed/20080227/14047.html
LinuxºÍuClinux
LinuxÕýÖð½¥µØÓ¦ÓÃÓÚǶÈëʽÉ豸£¬uClinuxÕýÊÇÔÚÕâÖÖ·ÕΧϲúÉúµÄ¡£uClinux¾ÍÊÇMicro-Control-Linux£¬ËüÒ²ÊÇÒ»¸ö ......
°²×°¹ý³ÌÖгöÏÖ“X11/extensions/Print.h: No such file or directory”µÄ½â¾ö·½·¨
ÕâÊÇÒòΪϵͳÖÐȱÉÙlibXp-devel
# yum install libXp-devel
°²×°¹ý³ÌÖгöÏÖ“X11/bitmaps/gray: No such file or directory”µÄ½â¾ö·½·¨
ÕâÊÇÒòΪϵͳÖÐȱÉÙxorg-x11-xbitmaps£¨x11/xbitmaps (Ubuntu) and xorg-x1 ......
¸ü¸Ä/etc/resolv.confÎļþ
Èç¹ûÄãµÄlinuxÖ÷»úÖ»ÊÇÔÚ¾ÖÓòÍøÄÚ¹¤×÷£¬Ç뽫nameserverµØÖ·¸ÄΪÍø¿¨±¾ÉíµÄµØÖ·¡£
Àý£º
# vi /etc/resolv.conf
nameserver 192.168.0.160
search site
È»ºó ......