Посоветуйте плз какие книги почитать или исходники покопать, чтобы узнать, как грамотно построить драйвер сетевого устройства (очереди внутри драйвера, библиотека в пользовательском пространстве и т.д.)
непосредственно работа с железом уже написана, нужно грамотно портировать под линукс так, чтобы с драйвером (а точнее с библиотекой) могли работать много программ одновременно.
например, как я понимаю, разговор ядро-userspace ведется через символьное устройство...