Linux PCIÇý¶¯Ä£ÐÍ
PCIÊÇÍâΧÉ豸»¥Á¬£¨Peripheral Component Interconnect£©µÄ¼ò³Æ£¬×÷ΪһÖÖͨÓõÄ×ÜÏß½Ó¿Ú±ê×¼£¬ËüÔÚĿǰµÄ¼ÆËã»úϵͳÖеõ½Á˷dz£¹ã·ºµÄÓ¦Óá£PCIÌṩÁËÒ»×éÍêÕûµÄ×ÜÏ߽ӿڹ淶£¬ÆäÄ¿µÄÊÇÃèÊöÈçºÎ½«¼ÆËã»úϵͳÖеÄÍâΧÉ豸ÒÔÒ»Öֽṹ»¯ºÍ¿É¿Ø»¯µÄ·½Ê½Á¬½ÓÔÚÒ»Æð¡£
PCI½«¼ÆËã»úϵͳÖеÄ×ÜÏß×ÓϵͳÓë´æ´¢×ÓϵͳÍêÈ«µØ·Ö¿ª£¬CPUͨ¹ýÒ»¿é³ÆÎªPCIÇÅ£¨PCI-Bridge£©µÄÉ豸À´Íê³Éͬ×ÜÏß×ÓϵͳµÄ½»»¥£¬¾¡¹ÜĿǰPCIÉ豸´ó¶à²ÉÓÃ32λÊý¾Ý×ÜÏߣ¬µ«PCI¹æ·¶ÖÐÒѾ¸ø³öÁË64λµÄÀ©Õ¹ÊµÏÖ¡£
£¨1£©¹Ø¼üÊý¾Ý½á¹¹
PCIÉ豸ÉÏÓÐÈýÖÖµØÖ·¿Õ¼ä£ºPCIµÄI/O¿Õ¼ä¡¢PCIµÄ´æ´¢¿Õ¼äºÍPCIµÄÅäÖÿռ䡣CPU¿ÉÒÔ·ÃÎÊPCIÉ豸ÉϵÄËùÓеØÖ·¿Õ¼ä£¬ÆäÖÐI/O¿Õ¼äºÍ´æ´¢¿Õ¼äÌṩ¸øÉ豸Çý¶¯³ÌÐòʹÓ㬶øÅäÖÿռäÔòÓÉLinuxÄÚºËÖеÄPCI³õʼ»¯´úÂëʹÓá£ÄÚºËÔÚÆô¶¯Ê±¸ºÔð¶ÔËùÓÐPCIÉ豸½øÐгõʼ»¯£¬ÅäÖúÃËùÓеÄPCIÉ豸£¬°üÀ¨ÖжϺÅÒÔ¼°I/O»ùÖ·£¬²¢ÔÚÎļþ/proc/pciÖÐÁгöËùÓÐÕÒµ½µÄPCIÉ豸£¬ÒÔ¼°ÕâЩÉ豸µÄ²ÎÊýºÍÊôÐÔ¡£
A£¬pci_driver£ºÕâ¸öÊý¾Ý½á¹¹ÔÚÎļþinclude/linux/pci.hÀÕâÊÇLinuxÄں˰汾2.4Ö®ºóΪÐÂÐ͵ÄPCIÉ豸Çý¶¯³ÌÐòËùÌí¼ÓµÄ£¬ÆäÖÐ×îÖ÷ÒªµÄÊÇÓÃÓÚʶ±ðÉ豸µÄid_table½á¹¹£¬ÒÔ¼°ÓÃÓÚ¼ì²âÉ豸µÄº¯Êýprobe( )ºÍÐ¶ÔØÉ豸µÄº¯Êýremove( )¡£
B£¬pci_dev£ºÕâ¸öÊý¾Ý½á¹¹Ò²ÔÚÎļþinclude/linux/pci.hÀËüÏêϸÃèÊöÁËÒ»¸öPCIÉ豸¼¸ºõËùÓеÄÓ²¼þÐÅÏ¢£¬°üÀ¨³§ÉÌID¡¢É豸ID¡¢¸÷ÖÖ×ÊÔ´µÈ¡£
£¨2£© »ù±¾¿ò¼Ü
ÔÚÓÃÄ£¿é·½Ê½ÊµÏÖPCIÉ豸Çý¶¯³ÌÐòʱ£¬Í¨³£ÖÁÉÙҪʵÏÖÒÔϼ¸¸ö²¿·Ö£º³õʼ»¯É豸ģ¿é¡¢É豸´ò¿ªÄ£¿é¡¢Êý¾Ý¶ÁдºÍ¿ØÖÆÄ£¿é¡¢Öжϴ¦ÀíÄ£¿é¡¢É豸ÊÍ·ÅÄ£¿é¡¢Éè±¸Ð¶ÔØÄ£¿é¡£ÏÂÃæ¸ø³öÒ»¸öµäÐ͵ÄPCIÉ豸Çý¶¯³ÌÐòµÄ»ù±¾¿ò¼Ü£¨Ö»ÁгöÖ÷ÒªÒýÓã©¡£
/* Ö¸Ã÷¸ÃÇý¶¯³ÌÐòÊÊÓÃÓÚÄÄһЩPCIÉ豸 */
static struct pci_device_id demo_pci_tbl [] __initdata = {
{PCI_VENDOR_ID_DEMO, PCI_DEVICE_ID_DEMO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEMO},
{0,}
};
/* ¶ÔÌØ¶¨PCI
Ïà¹ØÎĵµ£º
×ÜÀÀ
ÓÃiptables -ADC À´Ö¸¶¨Á´µÄ¹æ
Ôò
£¬-AÌí¼Ó -Dɾ³ý -C ÐÞ¸Ä
iptables - [RI] chain rule num rule-specification[option]
ÓÃiptables - RI ͨ¹ý¹æÔòµÄ˳ÐòÖ¸¶¨
iptables -D chain rule num[option]
ɾ³ýÖ¸¶¨¹æÔò
iptables -[LFZ] [chain][option]
ÓÃiptables -LFZ Á´Ãû [Ñ¡Ïî]
iptables -[NX] chain
ÓÃ -NX ......
1. Sed¼ò½é
sed ÊÇÒ»ÖÖÔÚÏß±à¼Æ÷£¬ËüÒ»´Î´¦ÀíÒ»ÐÐÄÚÈÝ¡£´¦Àíʱ£¬°Ñµ±Ç°´¦ÀíµÄÐд洢ÔÚÁÙʱ»º³åÇøÖУ¬³ÆÎª“ģʽ¿Õ¼ä”£¨pattern
space£©£¬½Ó×ÅÓÃsedÃüÁî´¦Àí»º³åÇøÖеÄÄÚÈÝ£¬´¦ÀíÍê³Éºó£¬°Ñ»º³åÇøµÄÄÚÈÝËÍÍùÆÁÄ»¡£½Ó×Å´¦ÀíÏÂÒ»ÐУ¬ÕâÑù
1. Sed¼ò½é
sed ÊÇÒ»ÖÖÔÚÏß±à¼Æ÷£¬ËüÒ»´Î´¦ÀíÒ»ÐÐÄÚÈÝ¡£´¦Àíʱ£¬°Ñµ± ......
¼ò¶øÑÔÖ®,²úÉú¶Î´íÎó¾ÍÊÇ·ÃÎÊÁË´íÎóµÄÄÚ´æ¶Î£¬Ò»°ãÊÇÄãûÓÐȨÏÞ£¬»òÕ߸ù±¾¾Í²»´æÔÚ¶ÔÓ¦µÄÎïÀíÄÚ´æ,ÓÈÆä³£¼ûµÄÊÇ·ÃÎÊ0µØÖ·.
Ò»°ãÀ´Ëµ,¶Î´íÎó¾ÍÊÇÖ¸·ÃÎʵÄÄڴ泬³öÁËϵͳËù¸øÕâ¸ö³ÌÐòµÄÄÚ´æ¿Õ¼ä£¬Í¨³£Õâ¸öÖµÊÇÓÉgdtrÀ´±£´æµÄ£¬ËûÊÇÒ»¸ö48λµÄ¼Ä´æÆ÷£¬ÆäÖеÄ32λÊDZ£´æÓÉËüÖ¸ÏòµÄgdt±í£¬ºó13λ±£´æÏàÓ¦ÓÚgdtµÄϱ꣬×îºó3λ°ü ......
ͨ¹ý²ûÊöÁ½¸ö¾ßÓдú±íÐÔµÄϵͳµ÷ÓÃsys_open()ºÍsys_read()À´¸üºÃµØÀí½âVFSÏò¾ßÌåÎļþϵͳÌṩµÄ½Ó¿Ú»úÖÆ¡£ÔÚÉîÈësys_open()ºÍsys_read()֮ǰ£¬ÎÒÃÇÏȸÅÀÀϵ÷ÓÃsys_read()µÄÉÏÏÂÎÄ¡£ÏÂͼÃèÊöÁË´ÓÓû§¿Õ¼äµÄread()µ÷Óõ½Êý¾Ý´Ó´ÅÅ̶Á³öµÄÕû¸öÁ÷³Ì¡£µ±ÔÚÓû§Ó¦ÓóÌÐòµ÷ÓÃÎļþI/O read()² ......