Linux????????????????????????+??·??
???????????? ???????[ 2012/12/25 10:21:35 ] ????????
????dev_init()?????豸?????????????£?
/*
* Initialize the DEV module. At boot time this walks the device list and
* unhooks any devices that fail to initialise (normally hardware not
* present) and leaves us with a valid list of present and active devices.
*
* The PCMCIA code may need to change this a little?? and add a pair
* of register_inet_device() unregister_inet_device() calls. This will be
* needed for ethernet as modules support.
*/
void dev_init(void)
{
struct device *dev?? *dev2;
/*
* Add the devices.
* If the call to dev->init fails?? the dev is removed
* from the chain disconnecting the device until the
* next reboot.
*/
dev2 = NULL;
for (dev = dev_base; dev != NULL; dev=dev->next) //???????豸??豸??ev_base?????????豸????
{
if (dev->init && dev->init(dev)) //????豸?г???????????????????????????????豸??init()???????????0??
{
/*
* It failed to come up. Unhook it.???????????м??????????????????豸????費(fèi)??????豸?????????
*/
if (dev2 == NULL)
dev_base = dev->next;
else
dev2->next = dev->next;
}
else
{
dev2 = dev;
}
}
}
????????????????dev_base???????????ζ??????????????????eth????????巽?????
/* "eth0" defaults to autoprobe (== 0)?? other use a base of 0xffe0 (== -0x20)??
which means "don't probe". These entries exist to only to provide empty
slots which may be enabled at boot-time. */
static struct device eth3_dev = {
"eth3"?? 0??0??0??0??0xffe0 /* I/O base*/?? 0??0??0??0?? NEXT_DEV?? ethif_probe };
static struct device eth2_dev = {
"eth2"?? 0??0??0??0??0xffe0 /* I/O base*/?? 0??0??0??0?? eth3_dev?? ethif_probe };
static struct device eth1_dev = {
"eth1"?? 0??0??0??0??0xffe0 /* I/O base*/?? 0??0??0??0?? eth2_dev?? ethif_probe };
static struct device eth0_dev = {
"eth0"?? 0?? 0?? 0?? 0?? ETH0_ADDR?? ETH0_IRQ?? 0?? 0?? 0?? eth1_dev?? ethif_probe };
# undef NEXT_DEV
# define NEXT_DEV (eth0_dev)
???????????eth????????豸??init?????????ethif_probe()???ú???????t????????????????????????? NS8390 ethernet??????????????????????????????????drivers/net/ne.c
????ethif_probe()????????ú???ne_probe()??????????ú??????豸??????м??????ne_probe1()?????????幤????ne_probe1()??????ɡ?
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11