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

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()ºê


Ïà¹ØÎĵµ£º

linux send recvº¯ÊýÏê½â


i
nt send( SOCKET s, const char FAR *buf, int len, int flags );

    ²»ÂÛÊǿͻ§»¹ÊÇ·þÎñÆ÷Ó¦ÓóÌÐò¶¼ÓÃsendº¯ÊýÀ´ÏòTCPÁ¬½ÓµÄÁíÒ»¶Ë·¢ËÍÊý¾Ý¡£
¿Í»§³ÌÐòÒ»°ãÓÃsendº¯ÊýÏò·þÎñÆ÷·¢ËÍÇëÇ󣬶ø·þÎñÆ÷Ôòͨ³£ÓÃsendº¯ÊýÀ´Ïò¿Í»§³ÌÐò·¢ËÍÓ¦´ð¡£
    ¸Ãº¯ÊýµÄµÚÒ»¸ö²ÎÊýÖ¸¶¨·¢ËͶËÌ ......

linuxÄÚ´æ¹ÜÀíÖ®·ÇÁ¬ÐøÎïÀíµØÖ··ÖÅä(vmalloc

Ç°ÃæÎÒÃÇÒѾ­·ÖÎöÁËlinuxÈçºÎÀûÓûï°éϵͳ,slab·ÖÅäÆ÷·ÖÅäÄÚ´æ,ÓÃÕâЩ·½·¨µÃµ½µÄÄÚ´æÔÚÎïÀíµØÖ·É϶¼ÊÇÁ¬ÐøµÄ,È»¶ø,ÓÐЩʱºò,ÿ´ÎÇëÇóÄÚ´æÊ±,ϵͳ¶¼·ÖÅäÎïÀíµØÖ·Á¬ÐøµÄÄÚ´æ¿éÊDz»ºÏÊʵÄ,¿ÉÒÔÀûÓÃС¿éÄÚ´æ“Á¬½Ó”³É´ó¿é¿ÉʹÓõÄÄÚ´æ.ÕâÔÚ²Ù×÷ϵͳÉè¼ÆÖÐÒ²±»³ÆÎª “ÄÚ´æÆ´½Ó”,ÏÔÈ»,ÄÚ´æÆ´½ÓÔÚÐèÒª½Ï´óÄÚ ......

LinuxÖг£ÓõÄC\C++Í·Îļþ

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 ......

linuxϵÄvivi¡¢Äںˡ¢rootµÄ°²×°²½ÖèÓë²âÊÔ

ÉÕд2410£­S linux ²Ù×÷ϵͳ£º
ÔÚwindows xpϽøÐУ¬ÐèÒªµÄÎļþÔÚ¹âÅÌÖеÄimgĿ¼ºÍflashviviĿ¼ÏÂÌṩ¡£
ÉÕд2410£­S linux ²Ù×÷ϵͳ°üÀ¨ÉÕдvivi,kernel,rootÈý¸ö²½Ö裬³ý´ËÎÒÃÇ»¹ÒªÉÕдyaffs.tar£¬ÕâËĸöÎļþÔÚimgĿ¼ÖС£
vivi ----linux²Ù×÷ϵͳÆô¶¯µÄbootloader;     
zImage----linu ......

LinuxÄں˿ª·¢¹¤³Ìʦ±ØÐëÕÆÎÕµÄÈýÊ®µÀÌâ

1)      LinuxÖÐÖ÷ÒªÓÐÄļ¸ÖÖÄÚºËËø£¿
2)      LinuxÖеÄÓû§Ä£Ê½ºÍÄÚºËģʽÊÇʲôº¬Ò⣿
3)      ÔõÑùÉêÇë´ó¿éÄÚºËÄڴ棿
4)      Óû§½ø³Ì¼äͨÐÅÖ÷ÒªÄļ¸ÖÖ·½Ê½£¿
5)      ͨ¹ý»ï°éÏ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ