You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Eventual goal is to be able to run Linux driver in userspace. Device IO memory is mapped to driver address space and driver communicates with NTOS Executive Server via IO request packets (IRPs).
Tasks:
Project structure
Add ELF loading to NT Executive.
Build the smallest possible Linux as a library project (https://github.com/lkl/linux) and produce an ELF file vmlinuz.xdrv
Basic character device (/dev/null, /dev/zero)
Basic PCI device (pvpanic-pci)
Module loading
PCI ethernet driver --- goal is being able to send/recv ethernet frames
For networking to work we need io_uring-like async IO for NT #23 to multiplex the single instance of the Linux networking core. Basically afd.sys will link to the Linux networking core and instead of a real struct net_device, we have a proxy net_device which sends the packet via the IO ring between the networking core and the individual NIC driver (say e1000), which is in another driver process. This is also how we will implement communication (ie. sending URBs) between the USB host controller driver and individual USB device drivers. In other words, this is basically virtio.
Eventual goal is to be able to run Linux driver in userspace. Device IO memory is mapped to driver address space and driver communicates with NTOS Executive Server via IO request packets (IRPs).
Tasks:
vmlinuz.xdrvstruct net_device, we have a proxynet_devicewhich sends the packet via the IO ring between the networking core and the individual NIC driver (say e1000), which is in another driver process. This is also how we will implement communication (ie. sending URBs) between the USB host controller driver and individual USB device drivers. In other words, this is basically virtio.