목차
제 목
1. Keyboard
2. Network
1. Keyboard
2. Network
본문내용
_flags(struct device *dev, unsigned flags) { int ret; int old_flags = dev->flags; … ret = 0; if ((old_flags^flags)&IFF_UP) /* Bit is different ? */ { ret = ((old_flags & IFF_UP) ? dev_close : dev_open)(dev) if (ret == 0) dev_mc_upload(dev); }
/net/core/dev.c
int dev_open(struct device *dev) { int ret = 0; … if (dev->open) ret = dev->open(dev);
Network Device 는 device 라는 구조체로 되어 있고 만약 eepro라고 가정하면,
/drivers/net/eepro.c
int eepro_probe1(struct device *dev, short ioaddr) { … dev->open = eepro_open; …
따라서 dev->open(dev) 는 eepro_open(dev)를 호출한 것이므로
static int eepro_open(struct device *dev) { … if (request_irq(dev->irq , &eepro_interrupt, 0, dev->name, dev)) { printk("%s: unable to get IRQ %d.\n", dev->name, dev->irq); return -EAGAIN; }
request_irq()가 Network Device의 핸들러를 irq_desc[]에 등록을 한다
/net/core/dev.c
int dev_open(struct device *dev) { int ret = 0; … if (dev->open) ret = dev->open(dev);
Network Device 는 device 라는 구조체로 되어 있고 만약 eepro라고 가정하면,
/drivers/net/eepro.c
int eepro_probe1(struct device *dev, short ioaddr) { … dev->open = eepro_open; …
따라서 dev->open(dev) 는 eepro_open(dev)를 호출한 것이므로
static int eepro_open(struct device *dev) { … if (request_irq(dev->irq , &eepro_interrupt, 0, dev->name, dev)) { printk("%s: unable to get IRQ %d.\n", dev->name, dev->irq); return -EAGAIN; }
request_irq()가 Network Device의 핸들러를 irq_desc[]에 등록을 한다
소개글