linux 2.6Ô´´úÂëÇé¾°·ÖÎö±Ê¼ÇÖ®ÖжÏÓëÒì³£5
Öжϴ¦ÀíÒÀÀµÓÚÖжÏÀàÐÍ£¬ÓÐÈýÖÖÖ÷ÒªµÄÖжÏÀàÐÍ£º
i/oÖжϣºÄ³Ð©i/É豸ÐèÒª¹Ø×¢£»ÏàÓ¦µÄÖжϴ¦Àí³ÌÐò±ØÐë²éѯÉ豸ÒÔÈ·¶¨Êʵ±µÄ²Ù×÷¹ý³Ì¡£
ʱÖÓÖжϣºÄ³ÖÖʱÖÓ£¨»òÕßÊÇÒ»¸ö±¾µØapicʱÖÓ£¬»òÕßÊÇÒ»¸öÍⲿʱÖÓ£©²úÉúÒ»¸öÖжϣ»ÕâÖÖÖжϸæËßÄÚºËÒ»¸ö¹Ì¶¨µÄʱ¼ä¼ä¸ôÒѾ¹ýÈ¥¡£ÕâЩÖжϴ󲿷ÖÊÇ×÷Ϊi/oÖжÏÀ´´¦ÀíµÄ¡£
´¦ÀíÆ÷¼äÖжϣº¶à´¦ÀíÆ÷ϵͳÖÐÒ»¸öcpu¶ÔÁíÒ»¸öcpu·¢³öµÄÒ»¸öÖжϡ£
I/OÖжϴ¦Àí
i/oÖжϴ¦Àí³ÌÐò±ØÐë×ã¹»Áé»îÒÔ¸ø¶à¸öÉ豸ͬʱÌṩ·þÎñ¡£ÈçÔÚpci×ÜÏßµÄÌåϵ½á¹¹ÖУ¬¼¸¸öÉ豸¿ÉÒÔ¹²Ïíͬһ¸öirqÏß¡£Õâ¾ÍÒâζ׎ö½öÖжÏÏòÁ¿²»ÄÜ˵Ã÷ËùÓÐÎÊÌâ¡£
Öжϴ¦Àí³ÌÐòµÄÁé»îÐÔÒÔÁ½ÖÖ²»Í¬µÄ·½Ê½ÊµÏÖ¡£
irq¹²Ïí£ºÖжϴ¦Àí³ÌÐòÖ´Ðжà¸öÖжϷþÎñÀý³Ì£¨interrupt service routine,ISR£©.ÿ¸öISRÊÇÒ»¸öÓëµ¥¶ÀÉ豸£¨¹²ÏíirqÏߣ©Ïà¹ØµÄº¯Êý¡£ÒòΪ²»¿ÉÔ¤ÏÈÖªµÀÄĸöÌض¨µÄÉ豸²úÉúirq£¬Òò´Ë£¬Ã¿¸öisr¶¼±»Ö´ÐУ¬ÒÔÑéÖ¤ËüµÄÉ豸ÊÇ·ñÐèÒª¹Ø×¢£¬Èç¹ûÊÇ£¬µ±É豸²úÉúÖжÏʱ£¬¾ÍÖ´ÐÐÐèÒªÖ´ÐеÄËùÓвÙ×÷¡£
irq¶¯Ì¬·ÖÅ䣺һÌõirqÏßÔÚ¿ÉÄܵÄ×îºóʱ¿Ì²ÅÓëÒ»¸öÉ豸Çý¶¯³ÌÐòÏà¹ØÁª£»¼´Ê±¼¸¸öÓ²¼þÉ豸²¢²»¹²ÏíirqÏߣ¬Í¬Ò»¸öirqÏòÁ¿Ò²¿ÉÒÔÓÉÕ⼸¸öÉ豸ÔÚ²»Í¬Ê±¿ÌʹÓá£
linux°Ñ½ôËæÖжÏÒªÖ´ÐеIJÙ×÷·ÖΪÈýÀࣺ
½ô¼±µÄ£¨critical£©£ºÕâÑùµÄ²Ù×÷ÖîÈçpicÓ¦´ðÖжϣ¬¶Ôpic»òÉ豸¿ØÖÆÆ÷Öرà³Ì£¬»òÕßÐÞ¸ÄÓÉÉ豸ºÍ´¦ÀíÆ÷ͬʱ·ÃÎʵÄÊý¾Ý½á¹¹¡£ÕâЩ¶¼Äܱ»ºÜ¿ìµØÖ´ÐУ¬¶øÖ®ËùÒÔ˵ËüÃÇÊǽô¼±µÄÊÇÒòΪËûÃDZØÐë±»¾¡¿ìµØÖ´ÐС£½ô¼±²Ù×÷ÒªÔÚÒ»¸öÖжϴ¦Àí³ÌÐòÄÚÁ¢¼´Ö´ÐУ¬¶øÇÒÊÇÔÚ½ûÖ¹¿ÉÆÁ±ÎÖжϵÄÇé¿öÏ¡£
·Ç½ô¼±µÄ£¨noncritical£©:ÕâÑùµÄ²Ù×÷È磺ÐÞ¸ÄÄÇЩֻÓд¦ÀíÆ÷²Å»á·ÃÎʵÄÊý¾Ý½á¹¹£¨Èç°´ÏÂÒ»¸ö¼üºó¶ÁɨÃèÂ룩¡£ÕâЩ²Ù×÷Ò²ÒªºÜ¿ìµØÍê³É£¬ËüÃÇÓÉÖжϴ¦Àí³ÌÐòÁ¢¼´Ö´ÐУ¬µ«±ØÐëÊÇÔÚ¿ªÖжϵÄÇé¿öÏ¡£
·Ç½ô¼±¿ÉÑӳٵģ¨noncritical deferrable£©ÕâÑùµÄ²Ù×÷ÖîÈ磺°Ñ»º³åÇøµÄÄÚÈÝ¿½±´µ½Ä³¸ö½ø³ÌµÄµØÖ·¿Õ¼ä£¨Èç°Ñ¼üÅÌÐлº³åÇøµÄÄÚÈÝ·¢Ë͵½Öն˴¦Àí³ÌÐò½ø³Ì£©¡£ÕâЩ²Ù×÷¶¼¿ÉÄܱ»Ñӳٽϳ¤µÄʱ¼ä¼ä¸ô¶ø²»Ó°ÏìÄں˲Ù×÷£¬ÓÐÐËȤµÄ½ø³Ì½«»áµÈ´ýÊý¾Ý¡£·Ç½ô¼±¿ÉÑӳٵIJÙ×÷ÓɶÀÁ¢µÄº¯ÊýÀ´Ö´ÐС£
²»¹ÜÒýÆðÖжϵĵç·ÖÖÀàÈçºÎ£¬ËùÓеÄi/oÖжϴ¦Àí³ÌÐò¶¼Ö´ÐÐËĸöÏàͬµÄ»ù±¾²Ù×÷£º
1.ÔÚÄÚºË̬¶ÑÕ»Öб£´æirqµÄÊýÖµºÍ¼Ä´æÆ÷µÄÄÚÈÝ¡£
2.ΪÕýÔÚ¸øirqÏß·þÎñµÄpic·¢ËÍÒ»¸öÓ¦´ð£¬Õ⽫ÔÊÐípic½øÒ»²½·¢³öÖжϡ£
3.Ö´Ðй²ÏíÕâ¸öirqµÄËùÓÐÉ豸µÄÖжϷþÎñÀý³Ì£¨isr£©.
4.Ìøµ½ret_from_intr£¨£©µÄµØÖ·ºóÖÕÖ¹¡£
Ö
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
ÐźÅÖ¸¶¨´¦Àíº¯Êý
void (*signal (int signum,void (*handle)(int)))(int);ÉèÖÃij¸öÐźŵĴ¦Àí·½·¨
int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact);ÓÃÓÚ¼ì²é»ò¸Ä±ä½ø³ÌÔÚ½Óµ½ÐźÅʱµÄ¶¯×÷
Ðźż¯²Ù×÷º¯Êý
static inline void sigaddset(sigset_t *set,int _sig);
static inline voi ......
¸ß¼¶¿É±à³Ì¿ØÖÆÆ÷
Èç¹ûϵͳֻÓÐÒ»¸öcpu£¬Ö÷picÊä³öÏßÒÔÖ±½ØÁ˵±µÄ·½Ê½Á¬½Óµ½cpuµÄintrÒý½Å¡£Èç¹ûϵͳÖаüº¬Á½¸ö»ò¶à¸öcpu,¾ÍÐèÒª¸ü¼Ó¸´ÔÓµÄpic.
intel´Óp3¿ªÊ¼ÒýÈëi/o¸ß¼¶¿É±ä³É¿ØÖÆÆ÷£¨APIC£©×é¼þ¡£80x86΢´¦ÀíÆ÷µ±Ç°ËùÓеÄcpu¶¼º¬ÓÐÒ»¸ö±¾µØapic¡£Ã¿¸ö±¾µØapic¶¼ÓÐ32λ¼Ä´æÆ÷£¬Ò»¸öÄÚ²¿Ê±ÖÓ£¬Ò»¸ö±¾µØ¶¨ÊÇÉ豸ÒÔ¼°Îª±¾µ ......