xref: /linux/tools/include/nolibc/sys/sysmacros.h (revision ee60c510fb3468ec6fab98419218c4e7b37e2ca3)
1 /* SPDX-License-Identifier: LGPL-2.1 OR MIT */
2 /*
3  * Sysmacro definitions for NOLIBC
4  * Copyright (C) 2017-2021 Willy Tarreau <w@1wt.eu>
5  */
6 
7 /* make sure to include all global symbols */
8 #include "../nolibc.h"
9 
10 #ifndef _NOLIBC_SYS_SYSMACROS_H
11 #define _NOLIBC_SYS_SYSMACROS_H
12 
13 #include "../std.h"
14 
__nolibc_makedev(unsigned int maj,unsigned int min)15 static __inline__ dev_t __nolibc_makedev(unsigned int maj, unsigned int min)
16 {
17 	return (((dev_t)maj & ~0xfff) << 32) | ((maj & 0xfff) << 8) |
18 	       (((dev_t)min & ~0xff) << 12) | (min & 0xff);
19 }
20 
21 #define makedev(maj, min) __nolibc_makedev(maj, min)
22 
__nolibc_major(dev_t dev)23 static __inline__ unsigned int __nolibc_major(dev_t dev)
24 {
25 	return ((dev >> 32) & ~0xfff) | ((dev >> 8) & 0xfff);
26 }
27 
28 #define major(dev) __nolibc_major(dev)
29 
__nolibc_minor(dev_t dev)30 static __inline__ unsigned int __nolibc_minor(dev_t dev)
31 {
32 	return ((dev >> 12) & ~0xff) | (dev & 0xff);
33 }
34 
35 #define minor(dev) __nolibc_minor(dev)
36 
37 #endif /* _NOLIBC_SYS_SYSMACROS_H */
38