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£¨£©µÄµØÖ·ºóÖÕÖ¹¡£
Ö
Ïà¹ØÎĵµ£º
ǰÑÔ£¬Linux/Unix ÉçÇøµÄ°æ¿é²»ÈÈÄÖ£¬ÐÂÊÖÌ«¶à£¬¸ßÊÖ̫棬ż°Ñ×Ô¼ºÕ⼸ÄêµÄLinuxѧϰµÄ¹ý³Ì½²½²£¬Ï£ÍûÄܸø´ó¼ÒÓеã°ïÖú£¬
Òýµ¼³õѧÕßѧϰµÄ·½Ïò£¬ÉÙ×ßÍä·£¬Ê°빦±¶£¬Í¬Ê±Ò²ÊÇÅ×שÒýÓñ£¬Çë¹ýÀ´ÈËÈÈÁÒ·¢ÑÔ¡£
1. Ê×ÏÈÊìϤ Linux
½¨ÒéÔÚ Windows Éϰ²×° VMware Workstation 6.5.0(ÒÔϼò³ÆVM£©, ÏÂÔØÖÖ×ÓÔÚ ......
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define err(msg) perror(msg)
static void mkdirs(const char *dir)
{
char tmp[1024];
char *p;
&nbs ......
Ò»¡¢LinuxÉè¼ÆÌØµã£º¶àÓû§£¨¶à¸öÓû§¿ÉÒÔͬʱµÇ¼£¬Í¬Ò»Óû§¿ÉÒԵǼ¶à´Î£©£»¶àÈÎÎñ£¨Í¬Ò»³ÌÐò¿ÉÒÔÓжà¸öÏ̻߳ò½ø³Ì²¢·¢Ö´ÐУ©£»·Öʱ¡£
¶þ¡¢C¿ª·¢»·¾³£º¿ª·¢¹¤¾ß£¨°üÀ¨±àÒëÆ÷¡¢Á¬½ÓÆ÷¡¢gcc£©¡¢¹¤³Ì¹ÜÀíÈí¼þ£¨make£©¡¢±à¼Æ÷¡¢·ÖÎöµ÷ÊÔ¹¤¾ßgdb¡¢º¯Êý¿â¡¢°æ±¾¿ØÖÆÏµÍ³CVS¡££¨Perl²»ÐèÒª±àÒ룩¡£
Èý¡¢ÔÚÏßÎĵµ£º
1.manpage ......
±¾ÎÄÖ÷Òª½éÉÜÈçºÎÓÃLinux×öÒ»¸ö¹¦ÄÜÍ걸µÄ·ÓÉÆ÷£¬ÕâÀォÖ÷Òª½éÉܾ²Ì¬Â·ÓÉÆ÷ºÍ¶¯Ì¬Â·ÓÉÆ÷µÄÅäÖ㬵«²»°üÀ¨IPαװ»òÕß˵¹«ÓÃÒ»¸öIPµØÖ··ÃÎÊÍâÃæÍøÂçµÈÎÊÌâ¡£ÆäÒѾ²»ÊôÓÚ±¾Ö÷ÌâÌÖÂ۵ķ¶Î§£¬Çë²Î¿¼ÆäËûÈç·À»ðǽµÄÅäÖõȵÄÄÚÈÝ¡£
LRP(Linux Router Project)ÒѾ³ÉÁ¢ÁËÓкü¸ÄêµÄʱ¼äÁË¡£Õâ¸ö¼Æ»®µÄÄ¿µÄÊÇÀûÓÃLinux²Ù×÷ϵͳ½«À ......
Linux ÖлñµÃ±¾»úÍø¿¨MACµØÖ·ºÜ¼òµ¥£¬ioctl()¾ÍOK¡£¿ÉÈçºÎ»ñµÃ¾ÖÓòÍøÆäËûÖ÷»úµÄMACµØÖ·ÄØ…Á´Â·²ã¹ã²¥ARPÇëÇó£¬È»ºó½ÓÊÕARPÏìÓ¦¡£ÊµÏÖ½é¸ö¹¦ÄÜÆäʵÒÑÓÐÏÖ³ÉÈý·½¿â¿ÉÓã¬Èçlibnet¡£²»¹ýÏë¼ÓÉî¶ÔÐÒéµÄÀí½âºÍLinuxÍøÂç±à³ÌAPIµÄÀí½â£¬jiayi »¹ÊǾö¶¨ÓÃLinuxµÄPF_PACKET×Ô¼ºÊµÏÖ£¬¸Ä°¡¸Ä£¬ÖÕÓڳɹ¦¡«ÒÔÏÂÊÇ´óÌå˼·
1. ......