LINUXÏÂUSB1.1É豸ѧϰС¼Ç(4)_uhci(2)
LINUXÏÂUSB1.1É豸ѧϰС¼Ç(4)_uhci(2)
À´Ô´: ChinaUnix²©¿Í ¡¡ÈÕÆÚ£º 2009.03.14 16:44¡¡(¹²ÓÐÌõÆÀÂÛ) ÎÒÒªÆÀÂÛ
ºÃ~ ÏÖÔÚÍòʾ㱸,ֻǷuhciÓ²¼þµÄ×¢²áÁË
ÏÖÔÚ̸һÏÂuhciÓ²¼þµÄ×é³É,uhciµÄÓ²¼þ·ÖΪÁ½¸ö´óµÄ²¿·Ö,Ö÷»ú¿ØÖÆÆ÷ºÍ¸ù¼¯ÏßÆ÷,ÈçÏÂͼ
µ±Ìá½»uhciÓ²¼þµÄ×¢²áµ½pci×ÜÏߺó,¾¹ýÒ»ÂÖÆ¥Åä,ÖÕÓÚÕÒµ½ÁËuhci,½øÈëµ½uhci_pci_driver->probeÕâ¸öº¯ÊýÏÂ
usb_hcd_pci_probeÔÚ/drivers/usb/host/uhci-hcd.cÖÐ
int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
{
struct hc_driver *driver;
struct usb_hcd *hcd;
int retval;
//ÅжÏÄں˲ÎÊýÊÇ·ñÆôÓÃUSB
if (usb_disabled())
return -ENODEV;
//ÅжÏÆ¥Åä±íÊÇ·ñ´æÔÚ,¸Ã±íΪuhci_pci_driver->id_tableÖеÄÄÚÈÝ
if (!id)
return -EINVAL;
//È¡µÃÆ¥Åä±íÖеÄ˽Óнṹ,Ϊuhci_driver
driver = (struct hc_driver *)id->driver_data;
//˽Óнṹ²»´æÔÚÔò·µ»Ø´íÎó
if (!driver)
return -EINVAL;
//ʹÄÜpciÉ豸
if (pci_enable_device(dev) 0)
return -ENODEV;
//ÉèÖõçԴΪÕý³£×´Ì¬
dev->current_state = PCI_D0;
//¼ì²âÊÇ·ñÓÐÖжϺÅ
if (!dev->irq)
{
dev_err(&dev->dev,"Found HC with no IRQ. Check BIOS/PCI %s setup!\n",pci_name(dev));
retval = -ENODEV;
goto err1;
}
//´´½¨usb_hcd½á¹¹
hcd = usb_create_hcd(driver, &dev->dev, pci_name(dev));
//¼ì²â´´½¨ÊÇ·ñ³É¹¦
if (!hcd)
{
retval = -ENOMEM;
goto err1;
}
//¼ì²âÊÇ·ñÐèÒªÓ³ÉäI/OÄÚ´æ¿Õ¼ä,EHCIºÍOHCIÕâÁ½¸öÖ÷»ú¿ØÖÆÆ÷ÓÐ×Ô¼ºµÄÄÚ´æ¿Õ¼ä,·ÃÎʵÄʱºòÐèÒªÓ³Éäµ½¼ÆËã»úµÄÄÚ´æ¿Õ¼äÖвÅÄܶÔÉ豸½øÐвÙ×÷,¶øUHCIûÓÐ×Ô¼ºµÄÄÚ´æ¿Õ¼ä,¶ÔUHCIµÄ²Ù×÷ÊǶÔIO¶Ë¿ÚµÄ·ÃÎÊ,ËùÒÔUHCIÐèÒª·ÖÅäIO¶Ë¿Ú¿Õ¼ä
if (driver->flags & HCD_MEMORY)
{
/* EHCI, OHCI */
//ÕâÁ½¸öÉ豸ÐèÒªÓ³ÉäI/OÄÚ´æ¿Õ¼ä
hcd->rsrc_start = pci_resource_start(dev, 0);
hcd->rsrc_len = pci_resource_len(dev, 0);
if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len,driver->description))
{
dev_dbg
Ïà¹ØÎĵµ£º
´´½¨×ÀÃæͼ±ê
Ä¿Ç°½«ÍøÂçÓ¦ÓÃÀ©Õ¹µ½×ÀÃæÊÇÒ»¸öÇ÷ÊÆ£¬´æÔÚןܶà½â¾ö·½°¸£¬±¾ÎÄÒÔ Mozilla Prism ΪÀý£¬ÀàËƵķ½·¨Í¬ÑùÊÊÓÃÓÚ Google Chrome ¡£
1. µ½ Mozilla Prism µÄÍøÕ¾ÉÏÏÂÔØ Prism£¬µã»÷ Download Now Ö®ºó»áÌáʾÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇÒÔ Mozilla Firefox À©Õ¹µÄ·½Ê½£¬ÊʺÏÒѾ°²×°ÓÐ Firefox µÄÅóÓÑ£»Ò»Ö ......
ÔÚÏÖÐеÄlinux·¢²¼°æ±¾ÖУ¬Èí¼þ°ü¹ÜÀí¹¤¾ßʹÓÃ×î¶àµÄÊÇrpmºÍdpkg,µ«ÊÇÕâÁ½Õ߶¼²»Äܽâ¾öÈí¼þÖ®¼äµÄÒÀÀµ¹Øϵ£¬ËùÒÔÓÖÓÐÁËyumºÍapt£¬yumÆäʵÊǶÔrpmµÄ·â×°£¬¶øaptÊǶÔdkpgµÄ·â×°£¬Á½Õ߶¼ÔÚ·â×°µÄͬʱ£¬ºÜºÃµÄ½â¾öÁËÈí¼þÒÀÀµÎÊÌ⣬ʹÓÃÆðÀ´·Ç³£·½±ã¡£ÏÂÃæÊÇһЩÈí¼þ¹ÜÀí³£ÓõÄÃüÁ
¸üÐÂÈí¼þÁÐ±í£º
......
0.11ºËÖнø³ÌµÄµ÷¶ÈÖ÷ÒªÓÉËĸö²¿·ÖÊý×é³É£ºµ÷¶È³õʼ»¯¡¢µ÷¶È¡¢Ë¯Ãß¡¢»½ÐÑ¡£
Ò»¡¢µ÷¶È³õʼ»¯:sched_init()
ÎÒÃÇÖªµÀÔÚÄں˳õʼ»¯£¨main£©¹ý³ÌÖУ¬Òª½«ÈÎÎñ0ת»»µ½Óû§Ì¬ÏÂÖ´ÐУ¬Ò²¾ÍÊǽ¨Á¢LinuxÖеĵÚÒ»¸öÓû§³ÌÐò¡£¼ÈÈ»ÈÎÎñ0֮ǰÊÇÔÚÄÚºË̬ÏÂÖ´Ðе ......
Ò»¡¢¸ÅÊö
ϵͳµ÷ÓÃÊÇÒ»¸öÈíÖжϣ¬ÖжϺÅÊÇ0x80£¬ËüÊÇÉϲãÓ¦ÓóÌÐòÓëLinuxϵͳÄں˽øÐн»»¥Í¨ÐŵÄΨһ½Ó¿Ú¡£Í¨¹ýint 0x80£¬¾Í¿ÉʹÓÃÄÚºË×ÊÔ´¡£²»¹ý£¬Í¨³£Ó¦ÓóÌÐò¶¼ÊÇʹÓþßÓбê×¼½Ó¿Ú¶¨ÒåµÄCº¯Êý¿â¼ä½ÓµÄʹÓÃÄں˵Äϵͳµ÷Ó㬼´Ó¦ÓóÌÐòµ÷ÓÃCº¯Êý¿âÖеĺ¯Êý£¬Cº¯Êý¿âÖÐ ......
×ÜÀÀ
ÓÃ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 ......