Linux 2.6Äں˵ÄÐÂËø»úÖÆ RCU
http://www.ibm.com/developerworks/cn/linux/l-rcu/
º¯ÊýÕªÒª£º
C´úÂë
/*¶ÁÕßÔÚ¶ÁÈ¡ÓÉRCU±£»¤µÄ¹²ÏíÊý¾ÝʱʹÓøú¯Êý±ê¼ÇËü½øÈë¶Á¶ËÁÙ½çÇø¡£*/
rcu_read_lock()
/*
¸Ãº¯ÊýÓërcu_read_lockÅä¶ÔʹÓã¬ÓÃÒÔ±ê¼Ç¶ÁÕßÍ˳ö¶Á¶ËÁÙ½çÇø¡£¼ÐÔÚÕâÁ½¸öº¯ÊýÖ®¼äµÄ´úÂëÇø³ÆÎª"¶Á¶ËÁÙ½çÇø"(read-side critical section)¡£¶Á¶ËÁÙ½çÇø¿ÉÒÔǶÌ×£¬Èçͼ3£¬ÁÙ½çÇø2±»Ç¶Ì×ÔÚÁÙ½çÇø1ÄÚ¡£
*/
rcu_read_unlock()
/*
¸Ãº¯ÊýÓÉRCUд¶Ëµ÷Óã¬Ëü½«×èÈûдÕߣ¬Ö±µ½¾¹ýgrace periodºó£¬¼´ËùÓеĶÁÕßÒѾÍê³É¶Á¶ËÁÙ½çÇø£¬Ð´Õ߲ſÉÒÔ¼ÌÐøÏÂÒ»²½²Ù×÷¡£Èç¹ûÓжà¸öRCUд¶Ëµ÷Óøú¯Êý£¬ËûÃǽ«ÔÚÒ»¸ögrace periodÖ®ºóÈ«²¿±»»½ÐÑ¡£
*/
synchronize_rcu()
/*
º¯
Êý call_rcu Ò²ÓÉ RCU д¶Ëµ÷Óã¬Ëü²»»áʹдÕß×èÈû£¬Òò¶ø¿ÉÒÔÔÚÖжÏÉÏÏÂÎÄ»ò softirq ʹÓ㬶ø
synchronize_rcu¡¢synchronize_kernel ºÍsynchronize_shced
Ö»ÄÜÔÚ½ø³ÌÉÏÏÂÎÄʹÓ᣸ú¯Êý½«°Ñº¯Êý func ¹Ò½Óµ½ RCU»Øµ÷º¯ÊýÁ´ÉÏ£¬È»ºóÁ¢¼´·µ»Ø¡£Ò»µ©ËùÓÐµÄ CPU
¶¼ÒѾÍê³É¶ËÁÙ½çÇø²Ù×÷£¬¸Ãº¯Êý½«±»µ÷ÓÃÀ´ÊÍ·Åɾ³ýµÄ½«¾ø²»ÔÚ±»Ó¦ÓõÄÊý¾Ý¡£²ÎÊý head ÓÃÓڼǼ»Øµ÷º¯Êý func£¬Ò»°ã¸Ã½á¹¹»á×÷Ϊ±» RCU
±£»¤µÄÊý¾Ý½á¹¹µÄÒ»¸ö×ֶΣ¬ÒÔ±ãʡȥµ¥¶ÀΪ¸Ã½á¹¹·ÖÅäÄÚ´æµÄ²Ù×÷¡£ÐèÒªÖ¸³öµÄÊÇ£¬º¯Êý synchronize_rcu
µÄʵÏÖʵ¼ÊÉÏʹÓú¯Êýcall_rcu¡£
*/
void fastcall call_rcu(struct rcu_head *head,
void (*func)(struct rcu_head *rcu))
/*
д¶Ëµ÷Ó㬰ÑÒ»¸öÖ¸Õëp¸³ÎªÖ¸Õëv¡£
*/
rcu_assign_pointer()
typeof(p) rcu_assign_pointer(p, typeof(p) v);
/*
»ñµÃÖ¸ÕëpµÄ½âÒýÓÃÖµ
*/
rcu_dereference()
typeof(p) rcu_assign_pointer(p, typeof(p) v);
http://group.ednchina.com/1036/21283.aspx
http://blog.chinaunix.net/u1/51562/showart_1341707.html
http://www.360doc.com/content/10/0106/17/701200_12820595.shtml
Ïà¹ØÎĵµ£º
ÀýÒ»£º·¢ËÍ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ÏÂ¼à¿Ø½ø³Ì¼°Æä×Ó½ø³ÌÕ¼ÓÃ×ÊÔ´£¿
Â¥Ö÷whzeng£¨à½à½£©2006-01-06 22:45:39 ÔÚ Linux/UnixÉçÇø / ³ÌÐò¿ª·¢Çø ÌáÎÊ
ÈçºÎlinuxÏÂ¼à¿Ø½ø³Ì¼°Æä×Ó½ø³ÌÕ¼ÓÃ×ÊÔ´£¬±ÈÈçÄÚ´æºÍcpuʹÓÃÁ¿¡£ÐèÒª¶¯Ì¬¼à¿ØËùÓÃÄÚ´æµÄ×ÜÁ¿°üÀ¨ÎïÀíÄÚ´æºÍÐéÄâÄڴ棻CPUʹÓÃ×ÜÁ¿µÄ°Ù·ÖÊý.¸ßÊִͽ̣¡ ÎÊÌâµãÊý£º100¡¢»Ø¸´´ÎÊý£º13Top
1 ¥fieryg ......
×Ô2.1Äں˿ª·¢°æÒÔÀ´£¬linux¾ÍÒýÈëÁËÕýʽµÄÁ´±íʵÏÖ,²ÉÓõÄÊÇË«ÏòÑ»·Á´±í¡£Òò´Ë£¬ÔÚ¿ª·¢¹ý³ÌÖÐÓ¦¸ÃʹÓÃÕâЩÒÑÓеĽӿڡ£
1. ¶¨Òå
Á´±í½á¹¹Ì嶨ÒåÔÚÎļþ<linux/list.h>ÖС£
struct list£ßhead {
struct list_head *next;
&n ......
¡¶LinuxÄÚºËÔ´´úÂëÍêȫעÊÍ¡·ÊÇͦ²»´íµÄ£¬µ«ÒªÀí½âÕûÌå¼Ü¹¹µÄ»°»¹ÊÇÏȱð¿´Õâ¸ö£¬»¹ÊǵȾßÌå·ÖÎöÄÚºËÄĸö²¿·ÖµÄʱºòÔÙÕë¶Ô×ÅÈ¥¿´ÏàÓ¦²¿·ÖµÄ×¢ÊͰɣ®
a.ÍÆ¼öÄÚºËѧϰÊé¼®
1.ѧϰÄÚºËÕûÌå½á¹¹ºÍ»ù±¾ÀíÂÛ֪ʶ: <Linux Kernel Development second edition>,ÖÐÎÄÃû:LinuxÄÚºËÉè¼ÆÓëʵÏÖ µÚ2°æ
2.Ñ§Ï°Ç ......
Ëæ×ÅÏÖ´ú¼ÆËã»ú¼¼ÊõµÄ·ÉËÙ·¢Õ¹ºÍ»¥ÁªÍø¼¼ÊõµÄ¹ã·ºÓ¦Ó㬴Ópcʱ´ú¹ý¶Éµ½ÁËÒÔ¸öÈËÊý×ÖÖúÀí¡¢ÊÖ³Ö¸öÈ˵çÄÔºÍÐÅÏ¢¼ÒµçΪ´ú±íµÄ3c(¼ÆËã»ú¡¢Í¨ÐÅ¡¢Ïû·Ñµç
×Ó)Ò»ÌåµÄºópcʱ´ú¡£ºópcʱ´úÀǶÈëʽϵͳ°çÑÝÁËÔ½À´Ô½ÖØÒªµÄ½ÇÉ«£¬±»¹ã·ºÓ¦ÓÃÓÚÐÅÏ¢µçÆ÷¡¢Òƶ¯¼ÆËã»úÉ豸¡¢ÍøÂçÉ豸ºÍ¹¤¿Ø·ÂÕæµÈÁìÓò¡£Ç¶Èëʽ ......