Распечатка 5.6 Функция зондирования |
Предыдущая Содержание Следующая |
Распечатка 5.6
int __init lxNWprobe(struct net_device *dev) { /* * Эта функция используется только в случае, если драйвер * используется как модуль. В этом случае эта функция * инициализирует владельца данного устройства */ SET_MODULE_OWNER(dev);
/* * Настройка стартового адреса для доступа к вводу-выводу; * Это будет использоваться семейством команд inb()/outb() */ dev->base_addr = NW_IOADDR;
dev->irq = NW_IRQ;
/* * Заполняем сетевой адрес; обычно он получен от * какой-либо настройки при загрузке */ FILL_ETHER_ADDRESS(dev->dev_addr);
/* Запрашиваем прерывание */ request_irq(dev->irq, &LXNWIsr, 0, "NW", dev);
/* Выполняем инициализацию микросхемы */ RESET_NW();
/* Заполняем структуру устройства важными функциями */ dev->open = lxNW_open; dev->hard_start_xmit = lxNW_send_packet; dev->stop = lxNW_close; dev->get_stats = lxNW_get_stats; dev->set_multicast_list = lxNW_set_multicast_list; dev->watchdog_timeo = HZ; dev->set_mac_address = lxNW_set_mac_address;
/* * Для заполнения полей сетевого устройства значениями по умолчанию * предоставляется ether_setup. Здесь одним из важных полей является * длина очереди передачи, поддерживаемой для устройства. Значением * по умолчанию является 100. Также в dev->flags установлены * IFF_BROADCAST и IFF_MULTICAST, что означает, что это устройство * имеет поддержку широковещательных (broadcasting) и групповых * (multicast) запросов. В случае, если ваше устройство не * поддерживает групповые запросы, необходимо явно очистить этот * флаг. */ ether_setup(dev);
return 0; }
|
Предыдущая Содержание Следующая |