Become a better kernel programmer by actually fixing those "tainted" messages. Tainted is actually kernel speak for an error, because every environment needs its own meaningless code words. Don't go to sleep while holding a spinlock. Don't allocate memory inside functions which are atomic.

Surround register_netdevice with rtnl_lock, rtnl_unlock. Use netif_stop_queue to make the packet driver sleep instead of wait queues. Use the hrtimer to run delayed functions. Use wait queues to sleep instead of semaphores.

A simple network driver can be quite complicated when the needs for timing out, sending multiple streams of data to a userspace program, & querying status are factored in. There probably is a standard way to make a userspace network driver that interfaces the kernel. All lions saw was a driver that implements a user space network separately from the kernel.

Comments

Popular posts from this blog