>Шинно-классово-древовидную топологию устройств придумали давно, если не изменяет память еще в Беркли
>в 80-x, писатели Linux kernel таки решили толи выпендрится, то ли
>от великого ума, и сделали именование network interfaces гм... другим. "Тихо сам с собой я веду беседу". А там глядишь, кто и прочитает :)
Но самому захотелось освежить в памяти, и посмотрел код
- BSD 2.9..2.11 (~82-93гг,DEC PDP11),
- BSD4.2-4.4 (~82-94гг, DEC VAX) и
- Linux kernel 1.0...1.3 (~93-96гг,Intel i386).
Действительно, имена драйверов в его дескриптор struct somedev_softc{} были введены примерно в 83-84 году.
4.2BSD, фрагменты:
---
/* if_en.c 6.1 83/07/29 */
#include "en.h"
/*
* Xerox prototype (3 Mb) Ethernet interface driver.
*/
struct uba_driver endriver =
{ enprobe, 0, enattach, 0, enstd, "en", eninfo };
struct en_softc {
struct ifnet es_if; /* network-visible interface */
struct ifuba es_ifuba; /* UNIBUS resources */
short es_delay; /* current output delay */
short es_mask; /* mask for current output delay */
short es_lastx; /* host last transmitted to */
short es_oactive; /* is output active? */
short es_olen; /* length of last output */
} en_softc[NEN];
enattach(ui)
struct uba_device *ui;
{
register struct en_softc *es = &en_softc[ui->ui_unit];
es->es_if.if_unit = ui->ui_unit;
es->es_if.if_name = "en";
es->es_if.if_mtu = ENMTU;
es->es_if.if_init = eninit;
es->es_if.if_output = enoutput;
es->es_if.if_ioctl = enioctl;
es->es_if.if_reset = enreset;
es->es_ifuba.ifu_flags = UBA_NEEDBDP | UBA_NEED16 | UBA_CANTWAIT;
#if defined(VAX750)
/* don't chew up 750 bdp's */
if (cpu == VAX_750 && ui->ui_unit > 0)
es->es_ifuba.ifu_flags &= ~UBA_NEEDBDP;
#endif
if_attach(&es->es_if);
}
---
Благодаря именованию появилась возможность собирать устойства c одним драйвером в субклассы вне зависимости от шинной топологии, и в дальнейшем - и вне зависимости от типа шины (1982-83гг и по настоящее время).
В Linux kernel 1.3 (~1996г) данное именование напрочь отсутствует.
Почему Торвальдс (или T&К?) в 93-94гг решил примитивно именовать сетевые интерфейсы в соотвествии с type of network frame of level 2 - аллах акбар, не знаю. Может просто потому что плохо знал-понимал основы сетевой коммуникации? :)
Теперь "linux-кульное поколение" говорит что это фича, и придумывает AI-костыли для обхода косяков непродуман... пардон - базарной архитектуры.
А модифицировать механизм ассоциации некому, и много зацепок вылезает, да и бардак в драйверах, там воистине китайская классификация - "животные делятся на шестиногих, драконов, летающих, принадлежащих Императору, ...".
Поверх это громоздится HAL, с ничем кроме Linux kernel нормально не работающая...
"Кино и немцы".
---
PS К вопросу об имени UNIX/BSD, репринт этикетки с ленты:
Back of tape:
4.3 RENO 6250 VAX
30 JUL 90 Distribution Master
Front of tape:
4.3BSD-RENO Vax UNIX System 7/1/90
7 files on tape
1 bootstrap FS, bs=1024
2 mini root, bs=10240
3 root dump, bs=10240
4 /usr
5 /usr/src
6 /usr/src/sys
7 /usr/src/contrib
На других аналогично, в 80-е писали просто - BSD lalala UNIX.