From 2b76f48a1768d35c1e429cd776c2b36413faa165 Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Mon, 10 Aug 2020 23:59:06 +0200 Subject: [PATCH] Kernel: Avoid linking errors when calling Kernel API The compiler can't see that the definitions inside the .h file aren't meant to be public symbols. So in a hypothetical program which uses the Kernel API, each(\!) compilation unit that includes FB.h would define those fb_get_size_in_bytes symbols. If that happens twice or more times, that would cause linker errors. Since the functions are very short, inlining them seems like a good idea. Also, using FB.h should be possible even if the containing compilation unit doesn't already define size_t, so I added that header (stddef), too. --- Kernel/API/FB.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Kernel/API/FB.h b/Kernel/API/FB.h index 52ec9e2a5a0..1e52f9aaad5 100644 --- a/Kernel/API/FB.h +++ b/Kernel/API/FB.h @@ -26,32 +26,34 @@ #pragma once +#include +#include #include #include __BEGIN_DECLS -int fb_get_size_in_bytes(int fd, size_t* out) +ALWAYS_INLINE 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) +ALWAYS_INLINE int fb_get_resolution(int fd, FBResolution* info) { return ioctl(fd, FB_IOCTL_GET_RESOLUTION, info); } -int fb_set_resolution(int fd, FBResolution* info) +ALWAYS_INLINE int fb_set_resolution(int fd, FBResolution* info) { return ioctl(fd, FB_IOCTL_SET_RESOLUTION, info); } -int fb_get_buffer(int fd, int* index) +ALWAYS_INLINE int fb_get_buffer(int fd, int* index) { return ioctl(fd, FB_IOCTL_GET_BUFFER, index); } -int fb_set_buffer(int fd, int index) +ALWAYS_INLINE int fb_set_buffer(int fd, int index) { return ioctl(fd, FB_IOCTL_SET_BUFFER, index); }