From: Thomas Weißschuh Date: Sat, 4 Apr 2026 08:08:20 +0000 (+0200) Subject: tools/nolibc: move the logic of makedev() and friends into functions X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=70091eada34c9ebc650dc88dd0e8c9246c5df8f8;p=thirdparty%2Flinux.git tools/nolibc: move the logic of makedev() and friends into functions Functions make it easier to keep the input and output types straight and avoid duplicate evaluations of their arguments. Also these functions will become a bit more complex to handle full 64-bit 'dev_t' which is easier to read in a function. Still stay compatible with code which expects these to be macros. Signed-off-by: Thomas Weißschuh Acked-by: Willy Tarreau Link: https://patch.msgid.link/20260404-nolibc-makedev-v2-3-456a429bf60c@weissschuh.net --- diff --git a/tools/include/nolibc/sys/sysmacros.h b/tools/include/nolibc/sys/sysmacros.h index 37c33f030f023..347a95341ea25 100644 --- a/tools/include/nolibc/sys/sysmacros.h +++ b/tools/include/nolibc/sys/sysmacros.h @@ -13,8 +13,25 @@ #include "../std.h" /* WARNING, it only deals with the 4096 first majors and 256 first minors */ -#define makedev(major, minor) ((dev_t)((((major) & 0xfff) << 8) | ((minor) & 0xff))) -#define major(dev) ((unsigned int)(((dev) >> 8) & 0xfff)) -#define minor(dev) ((unsigned int)((dev) & 0xff)) +static __inline__ dev_t __nolibc_makedev(unsigned int maj, unsigned int min) +{ + return ((maj & 0xfff) << 8) | (min & 0xff); +} + +#define makedev(maj, min) __nolibc_makedev(maj, min) + +static __inline__ unsigned int __nolibc_major(dev_t dev) +{ + return (dev >> 8) & 0xfff; +} + +#define major(dev) __nolibc_major(dev) + +static __inline__ unsigned int __nolibc_minor(dev_t dev) +{ + return dev & 0xff; +} + +#define minor(dev) __nolibc_minor(dev) #endif /* _NOLIBC_SYS_SYSMACROS_H */