Это минимально необходимая структура для pci драйвера. по id_table код PCI core вызывает функцию инициализации драйвера (.probe = pcnet_dummy_init_one ), которая в конечном итоге должна зарегестрировать новый сетевой интерфейс в системе. (register_netdev()) и предоставить структуру net_device_ops, которая является основным и главным интерфейсом между драйвером и сетевым стеком. Другие поля структуры используются не очень часто. Все примеры есть в drivers/net Thanks! On Wed, Sep 15, 2010 at 3:13 AM, Alex Naumov <posix.ru@googlemail.com> wrote:
On Tue, Sep 14, 2010 at 9:52 PM, Denis Kirjanov <kirjanov@gmail.com> wrote:
+static struct pci_driver pcnet_dummy_driver = { + .name = DRV_NAME, + .id_table = pcnet_dummy_pci_tbl, + .probe = pcnet_dummy_init_one, + .remove = __devexit_p(pcnet_dummy_remove_one),
Это ничего, что мы оставляем столько элементов неинициализированными?
struct pci_driver { struct list_head node; char *name; const struct pci_device_id *id_table; /* must be non-NULL for probe to be called */ int (*probe) (struct pci_dev *dev, const struct pci_device_id *id); /* New device inserted */ void (*remove) (struct pci_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */ int (*suspend) (struct pci_dev *dev, pm_message_t state); /* Device suspended */ int (*suspend_late) (struct pci_dev *dev, pm_message_t state); int (*resume_early) (struct pci_dev *dev); int (*resume) (struct pci_dev *dev); /* Device woken up */ void (*shutdown) (struct pci_dev *dev); struct pm_ext_ops *pm; struct pci_error_handlers *err_handler; struct device_driver driver; struct pci_dynids dynids; };
Было бы здорово, Ден, некоторые комментарии к коду ;)
_______________________________________________ Kernel-russian mailing list Kernel-russian@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernel-russian
-- Regards, Denis