linuxÉ豸Çý¶¯³ÌÐò——ÍøÂçÉ豸Çý¶¯³ÌÐò
LinuxµÄÍøÂçϵͳÖ÷ÒªÊÇ»ùÓÚBSD Unix µÄsocket»úÖÆ£¬ ·ÃÎÊÍøÂçÉ豸µÄÇý¶¯³ÌÐò²»ÐèҪʹÓÃÉ豸½Úµã¡£ÔÚϵͳºÍÇý¶¯³ÌÐòÖ®¼ä¶¨ÒåÓÐרÃŵÄÊý¾Ý½á¹¹£¨sk_buff£©½øÐÐÊý¾ÝµÄ´«µÝ¡£ÏµÍ³ÄÚ²¿Ö§³Ö¶Ô·¢ËÍÊý¾ÝºÍ½ÓÊÕÊý¾ÝµÄ»º´æ£¬ÌṩÁ÷Á¿¿ØÖÆ»úÖÆ£¬Ìṩ¶Ô¶àÐÒéµÄÖ§³Ö¡£Òò´Ë£¬Ñ¡ÔñÄĸöÇý¶¯³ÌÐòÊÇ»ùÓÚÄÚºËÄÚ²¿µÄÆäËû¾ö¶¨£¬¶ø²»Êǵ÷ÓÃopen()£¬¶ÔÍøÂçÉ豸µÄʹÓÃͨ³£ÓÉϵͳµ÷ÓÃsocket½Ó¿ÚÒýÈë¡£
LinuxÍøÂçÉ豸Çý¶¯³ÌÐò´ÓÉϵ½Ï¿ÉÒÔ»®·ÖΪ4²ã£¬ÒÀ´ÎÎªÍøÂçÐÒé½Ó¿Ú²ã¡¢ÍøÂçÉ豸½Ó¿Ú²ã¡¢Ìṩʵ¼Ê¶¯ÄܵÄÉ豸Çý¶¯¹¦ÄܲãÒÔ¼°ÍøÂçÉ豸Óëý½é²ã¡£ÔÚÉè¼Æ¾ßÌåµÄÍøÂçÉ豸Çý¶¯³ÌÐòʱ£¬ÎÒÃÇÐèÒªÍê³ÉµÄÖ÷Òª¹¤×÷ÊDZàдÉ豸Çý¶¯¹¦ÄܲãµÄÏà¹Øº¯ÊýÒÔÌî³änet_deviceÊý¾Ý½á¹¹µÄÄÚÈݲ¢½«net_device×¢²áÈëÄںˡ£
Ò»¡¢ÍøÂçÐÒé½Ó¿Ú²ã
ÍøÂçÐÒé½Ó¿Ú²ã×îÖ÷ÒªµÄ¹¦ÄÜÊǸøÉϲãÐÒéÌṩÁË͸Ã÷µÄÊý¾Ý°ü·¢ËͺͽÓÊÕ½Ó¿Ú¡£µ±ÉϲãARP»òIPÐÒéÐèÒª·¢ËÍÊý¾Ý°üʱ£¬Ëü½«µ÷ÓÃÍøÂçÐÒé½Ó¿Ú²ãµÄdev_queue_xmit()º¯Êý·¢Ë͸ÃÊý¾Ý£¬ÉϲãÊý¾Ý°üµÄ½ÓÊÕҲͨ¹ýÏònetif_rx()º¯Êý´«µÝÒ»¸östruct sk_buffÊý¾Ý½á¹¹µÄÖ¸ÕëÀ´Íê³É¡£
sk_buff½á¹¹Ìå·Ç³£ÖØÒª£¬ËüµÄº¬ÒåΪ“Ì×½Ó×Ö»º³åÇø”£¬ÓÃÓÚÔÚLinuxÍøÂç×ÓϵͳÖеĸ÷²ãÖ®¼ä´«µÝÊý¾Ý£¬ÊÇLinuxÍøÂç×ÓϵͳÊý¾Ý´«µÝµÄ“ÖÐÊàÉñ¾”¡£
1.Ì×½Ó×Ö»º³åÇø³ÉÔ±
(1) ¸÷²ãÐÒéÍ·h¡¢nhºÍmac 3¸öÐÒéÍ·¶ÔÓ¦ÓÚÍøÂçÐÒéµÄ²»Í¬²ã´Î£¬·Ö±ðΪ´«Êä²ãTCP/UDPÐÒéÍ·h¡¢ÍøÂç²ãÐÒéÍ·nhºÍÁ´Â·²ãÐÒéÍ·mac¡£
(2) Êý¾Ý»º³åÇøÖ¸Õëhead¡¢data¡¢tailºÍend
(3) ³¤¶ÈÐÅÏ¢len¡¢data_len¡¢truesize
2. Ì×½Ó×Ö»º³åÇø²Ù×÷
·ÖÅä alloc_skb(),dev_alloc_skb()£»ÊÍ·Å kfree_skb(),dev_kfree_skb(),dev_kfree_skb_irq(),dev_kfree_skb_any()£»
Ö¸ÕëÒÆ¶¯ skb_put(),_ _skb_put(),skb_push(),_ _skb_push(),skb_pull(),skb_reserve()¡£
¶þ¡¢ÍøÂçÉ豸½Ó¿Ú²ã
Ö÷Òª¹¦ÄÜÊÇΪǧ±äÍò»¯µÄÍøÂçÉ豸¶¨ÒåÁËͳһ¡¢³éÏóµÄÊý¾Ý½á¹¹net_device½á¹¹Ì壬ÒÔ²»±äÓ¦Íò±ä£¬ÊµÏÖ¶àÖÖÓ²¼þÔÚÈí¼þ²ã´ÎÉϵÄͳһ¡£
É豸²Ù×÷£ºopen(),stop()¡£
Èý¡¢É豸Çý¶¯¹¦Äܲã
net_device½á¹¹ÌåµÄ³ÉÔ±ÐèÒª±»É豸Çý¶¯¹¦ÄܲãµÄ¾ßÌåÊýÖµºÍº¯Êý¸³Óè¡£
ÓÉÓÚÍøÂçÊý¾Ý°üµÄ½ÓÊÕ¿ÉÓÉÖжÏÒý·¢£¬É豸Çý¶¯¹¦ÄܲãÖÐÁíÒ»¸öÖ÷Ì岿·Ö½«ÊÇÖжϴ¦Àíº¯Êý£¬Ëü¸ºÔð¶ÁȡӲ¼þÉϽÓÊÕµÄÊý¾Ý°ü²¢
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
ÕʺŹÜÀí
/etc/passwd ϵͳÕʺÅÐÅÏ¢
/etc/shadow ÕʺÅÃÜÂëÐÅÏ¢ ¾MD5 32λ¼ÓÃÜ
ÔÚÃÜÂëÀ¸Ç°Ãæ¼Ó¡º * ¡»¡º ! ¡»½ûֹʹÓÃijÕʺÅ
/etc/group &nb ......
Ò»¡¢Äں˵ĻñµÃ
¿ÉÒÔ´ÓÍøÉÏÏÂÔØÄÚºËÎļþ£¬http://www.kernel.org¡£Èç¹ûÊÇΪÁËÁ·Ï°£¬¾¡Á¿ÏÂÔØ£².4.xµÄÄںˡ£ÒòΪ2.6.xµÄÄں˱Ƚϴ󣬵±È»±àÒëÒ²ÐèÒª¸ü¶¼µÄʱ¼ä¡£
¶þ¡¢Äں˵ıàÒë
LinuxÄں˵ıàÒë²Ëµ¥Ö÷ÒªÓÐÈý¸ö°æ±¾£º
£±£©make config£º½øÈëÃüÁîÐУ¬¿ÉÒÔÒ»ÐÐÒ»ÐеÄÅäÖá£
£²£©make menuconfig£º¿ª·¢ÈËÔ±±È½ÏÊìÏ ......
MTD(memory technology deviceÄÚ´æ¼¼ÊõÉ豸)ÊÇÓÃÓÚ·ÃÎÊmemoryÉ豸£¨ROM¡¢flash£©µÄLinuxµÄ×Óϵͳ¡£MTDµÄÖ÷ҪĿµÄÊÇΪÁËʹеÄmemoryÉ豸µÄÇý¶¯¸ü¼Ó¼òµ¥£¬Îª´ËËüÔÚÓ²¼þºÍÉϲãÖ®¼äÌṩÁËÒ»¸ö³éÏóµÄ½Ó¿Ú¡£MTDµÄËùÓÐÔ´´úÂëÔÚ/drivers/mtd×ÓĿ¼Ï¡£ÎÒ½«CFI½Ó¿ÚµÄMTDÉ豸·ÖΪËIJ㣨´ÓÉ豸½ÚµãÖ±µ½µ×²ãÓ²¼þÇý¶¯£©£¬ÕâËIJã´ÓÉϵ½Ï ......
ºÍÎÒÃÇÌÖÂÛµÄÖ÷ÌâÔ½À´Ô½½üÁË¡£¡°ÄÐÅÂÈë´íÐУ¬Å®Å¼޴íÀÉ¡±£¬ÎÒ¶ÔÕâ¾ä»°µÄÌå»áÔ½À´Ô½Éî¿ÌÁË¡£×î½üÓиöÃñÉúÒøÐеÄÀÏ×ܺÍÎÒ̽ÌÖÁËÕâ¸öÎÊÌ⣬ºÁÎÞÒÉÎÊ£¬ÔÚÒøÐÐÕâ¸öÐÐÒµ¿Ï¶¨±ÈÒ»°ãµÄÐÐÒµÕõÇ®¡£ÓÚÊÇ£¬×ÔÈ»Çе½ÎÒÃǵϰÌ⣺LinuxÕâ¸öÐÐÒµÔõôÑù£¿ÕõÇ®Âð£¿ÒÔºó¿ªÔ´ÁËÎÒ»¹Óз¹³ÔÂð£¿×î½ü£¬ÎÒÄõ½ÁËÒ»·ÝLinuxµÄÖ°Òµ±¨¸æ¡£µ÷²é ......