#include #include #include #include static struct driver *vga_driver = NULL; static struct framebuffer_device *vgafb = NULL; static kern_status_t online(struct kext *self) { vga_driver = driver_create(self, "vgafb"); if (!vga_driver) { return KERN_NO_MEMORY; } driver_register(vga_driver); struct framebuffer_device *fb = framebuffer_device_create(); struct device *fb_base = framebuffer_device_base(fb); snprintf(fb_base->dev_name, sizeof fb_base->dev_name, "vgafb"); kern_status_t status = device_register(fb_base, vga_driver, misc_device()); if (status != KERN_OK) { driver_unregister(vga_driver); driver_destroy(vga_driver); return status; } vgafb = fb; return KERN_OK; } DEFINE_KEXT("net.doorstuck.socks.vgafb", online, NULL, KEXT_NO_DEPENDENCIES);