-
Notifications
You must be signed in to change notification settings - Fork 15
Linux Driver Subsystem #19
Copy link
Copy link
Open
Description
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 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.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels