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µÈÐÒé ......
£¨L2CAPÐÒé¼ò½é£¬L2CAPÔÚBlueZÖеÄʵÏÖÒÔ¼°L2CAP±à³Ì½Ó¿Ú£©
Ò»£ºL2CAPÐÒé¼ò½é£º
Logical Link Control and Adaptation Protocol(L2CAP)
Âß¼Á¬½Ó¿ØÖƺÍÊÊÅäÐÒé (L2CAP) ΪÉϲãÐÒéÌá¹©ÃæÏòÁ¬½ÓºÍÎÞÁ¬½ÓµÄÊý¾Ý·þÎñ£¬²¢Ìṩ¶àÐÒ鹦ÄܺͷָîÖØ×é²Ù×÷¡£L2CAP ³äÐíÉϲãÐÒéºÍÓ¦ÓÃÈí¼þ´«ÊäºÍ½ÓÊÕ×î´ó³¤¶ÈΪ 64K µÄ L2CAP Ê ......
ÀýÒ»£º·¢ËÍ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 ......
¹¤×÷ÖÐÓõ½gdbÀ´·ÖÎö³ÌÐò±ÀÀ£Éú²úµÄcoreÎļþÎÊÌ⣺
ÕâÀï´ÓÍøÉϲéÀ´µÄÒ»¸öÃüÁîÓ÷¨£º
1,˵Ã÷:
ulimitÓÃÓÚshellÆô¶¯½ø³ÌËùÕ¼ÓõÄ×ÊÔ´.
2,Àà±ð:
shellÄÚ½¨ÃüÁî
3,Óï·¨¸ñʽ:
  ......
LinuxϵĿâ--ÖØÒªµÄ´úÂ븴ÓûúÖÆ¡¾×ª¡¿
2008-03-26 17:57
±¾ÎÄÖ÷Òª½â¾öÒÔϼ¸¸öÎÊÌâ
1 ΪʲôҪʹÓÿ⣿
2 ¿âµÄ·ÖÀà
3 ´´½¨×Ô¼ºµÄ¿â
»òÐí´ó¼Ò¶Ô×Ô¼º³õѧ
linuxʱµÄÇéÐÎÈÔ¼ÇÒäÓÈаɡ£Èç¹ûûÓÐÒ»¸öÄܽϺõĽâ¾öÒÀÀµ¹ØÏµµÄ°ü¹ÜÀíÆ÷£¬ÔÚlinuxϰ²×°Èí¼þ½«ÊÇÒ»¼þ¼°ÆäÍ´¿àµÄ¹¤×÷¡£Äã×°a°üʱ£¬¿ÉÄÜ»áÌáʾ
ÄãÒªÏÈ×°b°ü£¬ ......