]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
tools/nolibc: move the logic of makedev() and friends into functions
authorThomas Weißschuh <linux@weissschuh.net>
Sat, 4 Apr 2026 08:08:20 +0000 (10:08 +0200)
committerThomas Weißschuh <linux@weissschuh.net>
Sat, 4 Apr 2026 08:28:50 +0000 (10:28 +0200)
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 <linux@weissschuh.net>
Acked-by: Willy Tarreau <w@1wt.eu>
Link: https://patch.msgid.link/20260404-nolibc-makedev-v2-3-456a429bf60c@weissschuh.net
tools/include/nolibc/sys/sysmacros.h

index 37c33f030f023ec6972208f0850b04c22917ba51..347a95341ea253b1d98c3f2ffb08bee4869f442b 100644 (file)
 #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 */