From 4f6e0201962f4a969d1c950bdd168fc9b43ab746 Mon Sep 17 00:00:00 2001 From: apio Date: Fri, 21 Apr 2023 18:25:53 +0200 Subject: [PATCH] kernel+libc: Add framebuffer ioctls --- kernel/src/fs/devices/FramebufferDevice.cpp | 11 +++++++++-- libc/include/bits/ioctl-defs.h | 11 +++++++++++ libc/include/sys/ioctl.h | 2 ++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 libc/include/bits/ioctl-defs.h diff --git a/kernel/src/fs/devices/FramebufferDevice.cpp b/kernel/src/fs/devices/FramebufferDevice.cpp index ac51e298..852c8395 100644 --- a/kernel/src/fs/devices/FramebufferDevice.cpp +++ b/kernel/src/fs/devices/FramebufferDevice.cpp @@ -1,5 +1,6 @@ #include "fs/devices/FramebufferDevice.h" #include "video/Framebuffer.h" +#include #include Result> FramebufferDevice::create() @@ -31,7 +32,13 @@ bool FramebufferDevice::blocking() const return false; } -Result FramebufferDevice::ioctl(int, void*) +Result FramebufferDevice::ioctl(int request, void*) { - return err(EINVAL); + switch (request) + { + case FB_GET_WIDTH: return (u64)Framebuffer::width(); + case FB_GET_HEIGHT: return (u64)Framebuffer::height(); + case FB_GET_SCANLINE: return (u64)Framebuffer::scanline(); + default: return err(EINVAL); + } } diff --git a/libc/include/bits/ioctl-defs.h b/libc/include/bits/ioctl-defs.h new file mode 100644 index 00000000..29c20bde --- /dev/null +++ b/libc/include/bits/ioctl-defs.h @@ -0,0 +1,11 @@ +/* bits/ioctl-defs.h: IO device control requests. */ + +#ifndef _BITS_IOCTL_DEFS_H +#define _BITS_IOCTL_DEFS_H + +/* Framebuffer requests. */ +#define FB_GET_WIDTH 0 +#define FB_GET_HEIGHT 1 +#define FB_GET_SCANLINE 2 + +#endif diff --git a/libc/include/sys/ioctl.h b/libc/include/sys/ioctl.h index 6763b435..d8796eab 100644 --- a/libc/include/sys/ioctl.h +++ b/libc/include/sys/ioctl.h @@ -3,6 +3,8 @@ #ifndef _SYS_IOCTL_H #define _SYS_IOCTL_H +#include + #ifdef __cplusplus extern "C" {