37 lines
862 B
C
37 lines
862 B
C
#include <socks/printk.h>
|
|
#include <socks/device.h>
|
|
#include <socks/kext.h>
|
|
#include <socks/libc/stdio.h>
|
|
|
|
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);
|