LinuxÄÚºËÖеÄ˫ѻ·Á´±í
LinuxÄÚºËÖеÄ˫ѻ·Á´±í
2006-11-27 19:14
˫ѻ·Á´±í´«Í³ÊµÏÖ
ÔÚ´«Í³µÄ˫ѻ·Á´±íʵÏÖÖУ¬Èç¹û´´½¨Ä³ÖÖÊý¾Ý½á¹¹µÄ˫ѻ·Á´±í£¬Í¨³£²ÉÓõİ취ÊÇÔÚÕâ¸öÊý¾Ý½á¹¹µÄÀàÐͶ¨ÒåÖмÓÈëÁ½¸ö£¨Ö¸Ïò¸ÃÀàÐͶÔÏóµÄ£©Ö¸ÕënextºÍprev¡£ÀýÈ磺
typedef struct foo {
…
struct foo *prev;
struct foo *next;
…
} foo_t;
ÕâÀï¸ø³öÁ˶ÔÓ¦µÄ½Úµã½á¹¹¡¢¿ÕµÄ˫ѻ·Á´±íºÍ·Ç¿ÕµÄ˫ѻ·Á´±íʾÒâͼ¡£
LinuxÄÚºËÖÐ˫ѻ·Á´±íʵÏÖ
ÔÚlinuxÄÚºËÖУ¬ÓдóÁ¿µÄÊý¾Ý½á¹¹ÐèÒªÓõ½Ë«Ñ»·Á´±í£¬ÀýÈç½ø³Ì¡¢Îļþ¡¢Ä£¿é¡¢Ò³ÃæµÈ¡£Èô²ÉÓÃ˫ѻ·Á´±íµÄ´«Í³ÊµÏÖ·½Ê½£¬ÐèҪΪÕâЩÊý¾Ý½á¹¹Î¬»¤¸÷×ÔµÄÁ´±í£¬²¢ÇÒΪÿ¸öÁ´±í¶¼ÒªÉè¼Æ²åÈ롢ɾ³ýµÈ²Ù×÷º¯Êý¡££¨ÓÉÓÚÓÃÀ´Î¬³ÖÁ´±íµÄnextºÍprevÖ¸ÕëÖ¸Ïò¶ÔÓ¦ÀàÐ͵ĶÔÏó£¬Òò´ËÒ»ÖÖÊý¾Ý½á¹¹µÄÁ´±í²Ù×÷º¯Êý²»ÄÜÓÃÓÚ²Ù×÷ÆäËüÊý¾Ý½á¹¹µÄÁ´±í¡££©
ÔÚLinuxÔ´´úÂëÊ÷µÄinclude/linux/list.hÎļþÖУ¬²ÉÓÃÁËÒ»ÖÖ£¨Êý¾Ý½á¹¹£©ÀàÐÍÎ޹صÄ˫ѻ·Á´±íʵÏÖ·½Ê½¡£Æä˼ÏëÊǽ«Ö¸ÕëprevºÍnext´Ó¾ßÌåµÄÊý¾Ý½á¹¹ÖÐÌáÈ¡´¦Àí¹¹³ÉÒ»ÖÖͨÓõÄ"Ë«Á´±í"Êý¾Ý½á¹¹list_head£¬¶ølist_head±»×÷Ϊһ¸ö³ÉԱǶÈëµ½ÒªÀÁ´µÄÊý¾Ý½á¹¹£¨±»³ÆÎªËÞÖ÷Êý¾Ý½á¹¹£©ÖС£ÕâÑù£¬Ö»ÐèÒªÒ»Ì×ͨÓõÄÁ´±í²Ù×÷º¯Êý¾Í¿ÉÒÔ½«list_head³ÉÔ±×÷Ϊ"Á¬½Ó¼þ"£¬°ÑËÞÖ÷Êý¾Ý½á¹¹Á´½ÓÆðÀ´¡£ÈçÏÂͼËùʾ£º
ÔÚLinuxÄÚºËÖеÄ˫ѻ·Á´±íʵÏÖ·½Ê½Ï£º
1. Á´±í½á¹¹×÷Ϊһ¸ö³ÉԱǶÈëµ½ËÞÖ÷Êý¾Ý½á¹¹ÄÚ£»
2. ¿ÉÒÔ½«Á´±í½á¹¹·ÅÔÚËÞÖ÷½á¹¹ÄÚµÄÈκεط½£»
3. ¿ÉÒÔΪÁ´±í½á¹¹È¡ÈκÎÃû×Ö£»
4. ËÞÖ÷½á¹¹¿ÉÒÔÓжà¸öÁ´±í½á¹¹¡£
ÏÂÃæÎÒÃǽ«»ùÓÚLinux 2.4.21·ÖÎöLinuxÄÚºË˫ѻ·Á´±íµÄʵÏÖ¼°Ó¦Óá£
ÉùÃ÷ºÍ³õʼ»¯
Á´±í½á¹¹¶¨ÒåÈçÏ£º
struct list_head {
struct list_head *next, *prev;
};
ÎÒÃÇ¿ÉÒÔÓÃstruct list_headÉùÃ÷Ò»¸öÁ´±í½Úµã¡£ÐèҪעÒâµÄÊÇ£¬Linux µÄÿ¸ö˫ѻ·Á´±í¶¼ÓÐÒ»¸öÁ´±íÍ·£¬Á´±íÍ·Ò²ÊÇÒ»¸ö½Úµã£¬Ö»²»¹ýËü²»Ç¶Èëµ½ËÞÖ÷Êý¾Ý½á¹¹ÖУ¬¼´²»ÄÜÀûÓÃÁ´±íÍ·¶¨Î»µ½¶ÔÓ¦µÄËÞÖ÷½á¹¹¡£
ÎÒÃÇ¿ÉÒÔµ÷ÓÃINIT_LIST_HEAD()ºê³õʼ»¯Á´±í½Úµã£¬½«nextºÍprevÖ¸Õë¶¼Ö¸ÏòÆä×ÔÉí¡£Èç¹ûÕâ¸ö½ÚµãÊÇÁ´±íÍ·£¬ÎÒÃǾ͹¹ÔìÁËÒ»¸ö¿ÕµÄ˫ѻ·Á´±í¡£
#define INIT_LIST_HEAD(ptr) do { \
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)
LIST_HEAD()ºê
Ïà¹ØÎĵµ£º
i
nt send( SOCKET s, const char FAR *buf, int len, int flags );
²»ÂÛÊǿͻ§»¹ÊÇ·þÎñÆ÷Ó¦ÓóÌÐò¶¼ÓÃsendº¯ÊýÀ´ÏòTCPÁ¬½ÓµÄÁíÒ»¶Ë·¢ËÍÊý¾Ý¡£
¿Í»§³ÌÐòÒ»°ãÓÃsendº¯ÊýÏò·þÎñÆ÷·¢ËÍÇëÇ󣬶ø·þÎñÆ÷Ôòͨ³£ÓÃsendº¯ÊýÀ´Ïò¿Í»§³ÌÐò·¢ËÍÓ¦´ð¡£
¸Ãº¯ÊýµÄµÚÒ»¸ö²ÎÊýÖ¸¶¨·¢ËͶËÌ ......
Ç°ÃæÎÒÃÇÒѾ·ÖÎöÁËlinuxÈçºÎÀûÓûï°éϵͳ,slab·ÖÅäÆ÷·ÖÅäÄÚ´æ,ÓÃÕâЩ·½·¨µÃµ½µÄÄÚ´æÔÚÎïÀíµØÖ·É϶¼ÊÇÁ¬ÐøµÄ,È»¶ø,ÓÐЩʱºò,ÿ´ÎÇëÇóÄÚ´æÊ±,ϵͳ¶¼·ÖÅäÎïÀíµØÖ·Á¬ÐøµÄÄÚ´æ¿éÊDz»ºÏÊʵÄ,¿ÉÒÔÀûÓÃС¿éÄÚ´æ“Á¬½Ó”³É´ó¿é¿ÉʹÓõÄÄÚ´æ.ÕâÔÚ²Ù×÷ϵͳÉè¼ÆÖÐÒ²±»³ÆÎª “ÄÚ´æÆ´½Ó”,ÏÔÈ»,ÄÚ´æÆ´½ÓÔÚÐèÒª½Ï´óÄÚ ......
1¡¢ һЩͷÎļþµÄ×÷Óãº
<assert.h>£ºANSI C¡£Ìṩ¶ÏÑÔ£¬assert(±í´ïʽ)
<glib.h>£ºGCC¡£GTK£¬GNOMEµÄ»ù´¡¿â£¬ÌṩºÜ¶àÓÐÓõĺ¯Êý£¬ÈçÓÐÊý¾Ý½á¹¹²Ù×÷º¯Êý¡£Ê¹ÓÃglibÖ»ÐèÒª°üº¬<glib.h>
<dirent.h>£ºGCC¡£Îļþ¼Ð²Ù×÷º¯Êý¡£struct dirent,struct DIR,opendir(),closedir(),readdir(),readdi ......
ÉÕд2410£S linux ²Ù×÷ϵͳ£º
ÔÚwindows xpϽøÐУ¬ÐèÒªµÄÎļþÔÚ¹âÅÌÖеÄimgĿ¼ºÍflashviviĿ¼ÏÂÌṩ¡£
ÉÕд2410£S linux ²Ù×÷ϵͳ°üÀ¨ÉÕдvivi,kernel,rootÈý¸ö²½Ö裬³ý´ËÎÒÃÇ»¹ÒªÉÕдyaffs.tar£¬ÕâËĸöÎļþÔÚimgĿ¼ÖС£
vivi ----linux²Ù×÷ϵͳÆô¶¯µÄbootloader;
zImage----linu ......
1) LinuxÖÐÖ÷ÒªÓÐÄļ¸ÖÖÄÚºËËø£¿
2) LinuxÖеÄÓû§Ä£Ê½ºÍÄÚºËģʽÊÇʲôº¬Ò⣿
3) ÔõÑùÉêÇë´ó¿éÄÚºËÄڴ棿
4) Óû§½ø³Ì¼äͨÐÅÖ÷ÒªÄļ¸ÖÖ·½Ê½£¿
5) ͨ¹ý»ï°éÏ ......