From 5e46122a821344e0c3377e5d7d7ea0ebd6bfd267 Mon Sep 17 00:00:00 2001 From: Conrad Pankoff Date: Sun, 18 Aug 2019 12:25:22 +1000 Subject: [PATCH] Kernel: Add framebuffer ioctls; wrap raw ioctls with a C API --- Kernel/FB.h | 33 ++++++++++++++++++++++++++++++ Libraries/LibC/sys/ioctl_numbers.h | 11 ++++++++++ 2 files changed, 44 insertions(+) create mode 100644 Kernel/FB.h diff --git a/Kernel/FB.h b/Kernel/FB.h new file mode 100644 index 00000000000..66b234f8425 --- /dev/null +++ b/Kernel/FB.h @@ -0,0 +1,33 @@ +#pragma once + +#include +#include + +__BEGIN_DECLS + +int fb_get_size_in_bytes(int fd, size_t* out) +{ + return ioctl(fd, FB_IOCTL_GET_SIZE_IN_BYTES, out); +} + +int fb_get_resolution(int fd, FBResolution* info) +{ + return ioctl(fd, FB_IOCTL_GET_RESOLUTION, info); +} + +int fb_set_resolution(int fd, FBResolution* info) +{ + return ioctl(fd, FB_IOCTL_SET_RESOLUTION, info); +} + +int fb_get_buffer(int fd, int* index) +{ + return ioctl(fd, FB_IOCTL_GET_BUFFER, index); +} + +int fb_set_buffer(int fd, int index) +{ + return ioctl(fd, FB_IOCTL_SET_BUFFER, index); +} + +__END_DECLS diff --git a/Libraries/LibC/sys/ioctl_numbers.h b/Libraries/LibC/sys/ioctl_numbers.h index 26ec4548d5f..3156b950fa5 100644 --- a/Libraries/LibC/sys/ioctl_numbers.h +++ b/Libraries/LibC/sys/ioctl_numbers.h @@ -9,6 +9,12 @@ struct winsize { unsigned short ws_col; }; +struct FBResolution { + int pitch; + int width; + int height; +}; + __END_DECLS enum IOCtlNumber { @@ -22,4 +28,9 @@ enum IOCtlNumber { TIOCSCTTY, TIOCNOTTY, TIOCSWINSZ, + FB_IOCTL_GET_SIZE_IN_BYTES, + FB_IOCTL_GET_RESOLUTION, + FB_IOCTL_SET_RESOLUTION, + FB_IOCTL_GET_BUFFER, + FB_IOCTL_SET_BUFFER, };