Я пытаюсь портировать драйвер сетевой карты с Linux на ESXi.Все идет хорошо, но иногда я нахожу тупики.Как этот.
Одна из ошибок, которые генерирует компиляция, состоит в том, что struct net_device не имеет члена 'dev'.Эта строка вызывает ошибку:
static inline struct device *aq_nic_get_dev(struct aq_nic_s *self)
{
// member ndev is of type struct net_device
return self->ndev->dev.parent; // the compiles throws the error here
}
* В заголовке Linux определено struct net_device
netdevice.h
:
struct net_device
{
/*
* This is the first field of the "visible" part of this structure
* (i.e. as seen by users in the "Space.c" file). It is the name
* the interface.
*/
#if defined(__VMKLNX__)
char name[VMK_DEVICE_NAME_MAX_LENGTH];
#else /* !defined(__VMKLNX__) */
char name[IFNAMSIZ];
#endif /* defined(__VMKLNX__) */
/* device name hash chain */
struct hlist_node name_hlist;
/*
* I/O specific fields
* FIXME: Merge these and struct ifmap into one
*/
unsigned long mem_end; /* shared mem end */
unsigned long mem_start; /* shared mem start */
unsigned long base_addr; /* device I/O address */
unsigned int irq; /* device IRQ number */
/*
* Some hardware also needs these fields, but they are not
* part of the usual set specified in Space.c.
*/
unsigned char if_port; /* Selectable AUI, TP,..*/
unsigned char dma; /* DMA channel */
unsigned long state;
struct net_device *next;
/* The device initialization function. Called only once. */
int (*init)(struct net_device *dev);
// other stuff below ommited
};
Чего-то мне не хватает?Или синтаксис вызова dev
может быть изменен на что-то более устаревшее, поскольку цепочка инструментов использует более старые версии gcc и bnutils?
Бест,
Фрэнсис