From 2c184264eae3797de028403ed1e86c1f7ae5b813 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 15 May 2013 16:15:50 -0400 Subject: [PATCH] support full range of dev_t major/minor numbers in makedev, etc. macros --- include/sys/sysmacros.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/include/sys/sysmacros.h b/include/sys/sysmacros.h index 2285271f..d6c6aef6 100644 --- a/include/sys/sysmacros.h +++ b/include/sys/sysmacros.h @@ -1,8 +1,15 @@ #ifndef _SYS_SYSMACROS_H #define _SYS_SYSMACROS_H -#define major(x) ((unsigned)((x) >> 8) & 0xff) -#define minor(x) ((unsigned)(x) & 0xff) -#define makedev(x,y) (((x)<<8)|((y)&0xff)) +#define major(x) \ + ((unsigned)( (((x)>>32) & 0xfffff000) | (((x)>>8) & 0x00000fff) )) +#define minor(x) \ + ((unsigned)( (((x)>>12) & 0xffffff00) | ((x) & 0x000000ff) )) + +#define makedev(x,y) ( \ + (((x)&0xfffff000ULL) << 32) | \ + (((x)&0x00000fffULL) << 8) | \ + (((y)&0xffffff00ULL) << 12) | \ + (((y)&0x000000ffULL)) ) #endif -- 2.25.1