LinuxÄÚºËÖÐ ±éÀúÁ´±í
×î½üÔÚ¿´Ò»¸ö¿ªÔ´µÄ´úÂ룬һ¶Î´úÂë¿´Á˺ܾö¼Ã»Óп´¶®£¬GoogleÁËһϣ¬¾¡È»ÊÇlinuxÖÐÁ´±íµÄ±éÀú¡£
±éÀúÁ´±í£º
±éÀúÁ´±ílist_for_eachÊÇÒ»¸öºê£¬Õ¹¿ªÁ˾ÍÊÇÒ»¸öforÑ»·
#define list_for_each(pos, head) \
for (pos = (head)->next; prefetch(pos->next), pos != (head); \
pos = pos->next)
ÆäÖÐprefech(pos->next)ÊÇ´¦ÀíÆ÷Ԥȡpos->next£¬Í¨¹ý´¦ÀíÆ÷µÄԤȡ¹¦ÄÜ£¬¶ÔforÑ»·½øÐÐÁËÓÅ»¯¡£
···ÃÎÊÊý¾Ý²Ù×÷£º
#define list_entry(ptr, type, member) \
container_of(ptr, type, member)
#define container_of(ptr, type, member) ({ \
const typeof(((type *)0)->member) * __mptr = (ptr); \
(type *)((char *)__mptr - offsetof(type, member)); } )
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
container_ofÊÇÒ»¸öÓе㸴Ôӵĺê,ʹÓÃÁËCÀ©Õ¹¹Ø¼ü×Ötypeof£¬»¹Óв»ºÃÀí½âµÄÇó½á¹¹Ìå³ÉÔ±
±äÁ¿Æ«ÒÆ.....
·((type *)0)Êǽ«0Ç¿ÖÆ×ª»¯Îªtype *£¬Ò²¾ÍÊÇÖ¸ÏòtypeÀàÐ͵ÄÖ¸Õë
·((type *)0)->memberÊÇ·ÃÎÊtype½á¹¹ÖеÄmember³ÉÔ±
·const typeof( ((type *)0)->member ) *__mptr ¶¨ÒåÒ»¸öÓë((type *)0)->memberͬÖÖÀàÐ͵Ä
Ö¸Õë±äÁ¿£¨const±äÁ¿£©
·const typeof( ((type *)0)->member ) *__mptr=(ptr)¶Ô³£Á¿Ö¸Õë±äÁ¿__mptr¸³Öµ
__mptr=ptr
·((size_t) &((TYPE *)0)->MEMBERµÃµ½memberÔÚtype½á¹¹ÌåÖÐµÄÆ«ÒÆÁ¿£¬
offsetof(type,member)µÄÕ¹¿ªÐ§¹û
·(char *)__mptr - offsetof(type,member) ½«__mptrÇ¿ÖÆ×ª»¯ÎªcharÀàÐÍÖ¸Õ룬Ҳ¾ÍÊÇ__mptr
µÄµØÖ·£¬È»ºó¼õÈ¥memberÔڽṹÌåÖÐµÄÆ«ÒÆÁ¿£¬µÄµ½µÄ×ÔÈ»¾ÍÊǽṹÌåÆðʼµØÖ·£¨Æ«ÒÆÁ¿ÇóµÄºÜÇÉÃ
ÓÖºÜÇÉÃîµÄ»ñµÃ½á¹¹ÌåÆðʼµØÖ·£©¡£
·(type *)( (char *)__mptr - offsetof(type,member) )×îºóÔÙÇ¿ÖÆ×ª»¯Îª(type *)ÀàÐÍ
Ïà¹ØÎĵµ£º
ÕâÒ»²¿·ÖµÄÌá³öÊÇΪÁË·Àֹʧ¿ØµÄ½ø³ÌÆÆ»µÏµÍ³µÄÐÔÄÜ
nuixºÍLinux¸ú×Ù½ø³ÌʹÓõĴ󲿷Ö×ÊÔ´£¬ÔÊÐíÓû§ºÍϵͳ¹ÜÀíԱʹÓöԽø³ÌµÄ×ÊÔ´ÏÞÖÆ
ÉèÖõÄÏÞÖÆÓÐÁ½ÖÖ£º Ó²ÏÞÖÆºÍÈíÏÞÖÆ
Ó²ÏÞÖÆÊÇ¿ÉÒÔÔÚÈκÎʱºòÈκνø³ÌÖÐÉèÖà µ«Ó²ÏÞÖÆÖ»ÄÜÓɳ¬¼¶Óû§ÌáÆð
ÈíÏÞÖÆÊÇÄÚºËʵ¼ÊÖ´ÐеÄÏÞÖÆ£¬Èκνø³Ì¶¼¿ÉÒÔ½«ÈíÏÞÖÆÉèÖÃΪÈÎÒ ......
·¢²¼µÄ 2.6.23 ÄÚºËÖаüº¬ÁËÒ»¸öÖØÒªµÄ±ä»¯£¬ÓÃCFSÌæ´úÁËÒÔǰµÄµ÷¶ÈÆ÷¡£CFS ±»ºÏ²¢µ½ mainline ֮ǰ£¬¹ØÓÚÄں˵÷¶ÈÆ÷»¹ÓÐÒ»¸öÖØÒªµÄ patch£ºRSDL¡£×îÖÕ 2.6.23 ¾ö¶¨½« CFS ºÏ²¢µ½ mainline ¶ø·ÅÆúÁË RSDL¡£ÎªÊ²Ã´ÒªÒýÈëеĵ÷¶ÈÆ÷£¬CFS ºÍ RSDL ÓÐʲôÁªÏµºÍÇø±ð£¿±¾ÎÄÊÔͼ¶ÔÄں˵÷¶ÈËã·¨µÄ·¢Õ¹ÀúÊ·×öÒ»¸ö¼òÒª½éÉÜ£¬Ï£ÍûÄ ......
linuxÉ豸Çý¶¯¿ª·¢Ïê½â——globalmem
ÊÕ²Ø
³£¼ûµÄÁ½ÖÖ´íÎó£º
1.ÔÚ²åÈëÄ£¿éµÄʱºò³öÏÖÈçÏÂÎÊÌ⣺
# insmod globalmem.ko insmod: error inserting 'globalmem.ko': -1
Device or res ......
Linux»·¾³ÏµÄÈí¼þ°²×°£¬²¢²»ÊÇÒ»¼þÈÝÒ×µÄÊÂÇé;Èç¹ûͨ¹ýÔ´´úÂë±àÒëºóÔÚ°²×°£¬µ±È»ÊÂÇé¾Í¸üΪ¸´ÔÓһЩ;ÏÖÔÚ°²×°¸÷ÖÖÈí¼þµÄ½Ì³Ì¶¼·Ç³£ÆÕ±é;µ«Íò±ä²»ÀëÆäÖУ¬¶Ô»ù´¡ÖªÊ¶µÄÔúÊµÕÆÎÕ£¬°²×°¸÷ÖÖÈí¼þµÄÎÊÌâ¾ÍÓÈжø½âÁË¡£Configure½Å±¾ÅäÖù¤¾ß¾ÍÊÇ»ù´¡Ö®Ò»£¬ËüÊÇautoconfµÄ¹¤¾ßµÄ»ù±¾Ó¦Óá£
ÓëһЩ¼¼ÇÉÏà±È£¬ConfigureÏԵûù´¡Ò» ......
1.Ôö¼ÓÓ²¼þ
Ôö¼ÓµÄideÓ²ÅÌǰ׺Ϊhd£¬scsiÓ²ÅÌǰ׺Ϊsd£»µÚÒ»¿éÓ²ÅÌΪhda»òsda£¬µÚ¶þ¿éÓ²ÅÌΪhdb»òsdb,ÒÔ´ËÀàÍÆ¡£
2.ÓÃpvcreate´´½¨physical volumn
pvcreate /dev/sdb1 /dev/sdb2
´Ë´¦ËùÓõķÖÇøÊǵڶþ²½ÖвÙ×÷µÄÀàÐÍΪ8eµÄ·ÖÇø£¬pvcreateµÄ²ÎÊý¿ÉÒÔΪ1¸ö»ò¶à¸ö£»´´½¨Íê³Éºó¿ÉÒÔÓÃpvdisplay -vÀ´²é¿´´´½¨µÄÇé¿ö£¬ÓÃpvre ......