Files
bors f4cae6738d Auto merge of #2999 - SteveLauC:major/minor-on-BSDs, r=<try>
add major/minor on BSDs/illumos

This PR adds `major/minor` on BSDs and `major/minor/makedev` on illumos.

Ref:
* [FreeBSD 11](https://github.com/freebsd/freebsd-src/blob/3e9337c6b211e778829ed3af783cd41447a8721b/sys/sys/types.h#L372-L374)
   ```c
   #define	major(x)	((int)(((u_int)(x) >> 8)&0xff))	/* major number */
   #define	minor(x)	((int)((x)&0xffff00ff))		/* minor number */
   ```
* [FreeBSD 12/13/14](https://github.com/freebsd/freebsd-src/blob/3d98e253febf816e6e2aea7d3b1c013c421895de/sys/sys/types.h#L332-L341)
  ```c
  static __inline int
  __major(dev_t _d)
  {
      return (((_d >> 32) & 0xffffff00) | ((_d >> 8) & 0xff));
  }

  static __inline int
  __minor(dev_t _d)
  {
      return (((_d >> 24) & 0xff00) | (_d & 0xffff00ff));
  }
  ```
* [DragonFly](https://github.com/DragonFlyBSD/DragonFlyBSD/blob/d7a10f947f5344fc95e874ca3b83e9e8d0986b25/sys/sys/types.h#L170-L171)
  ```c
  #define	major(x)	((int)(((u_int)(x) >> 8)&0xff)) /* major number */
  #define	minor(x)	((int)((x)&0xffff00ff))         /* minor number */
  ```
* [NetBSD](https://github.com/NetBSD/src/blob/a25a6fec1b0a676fc5b36fa01b2990e775775d90/sys/sys/types.h#L264-L266)
   ```c
  #define	major(x)	((devmajor_t)(((uint32_t)(x) & 0x000fff00) >>  8))
  #define	minor(x)	((devminor_t)((((uint32_t)(x) & 0xfff00000) >> 12) | \
				                      (((uint32_t)(x) & 0x000000ff) >>  0)))
   ```
* [OpenBSD](https://github.com/openbsd/src/blob/05cbc9aa8d8372e83274c75e35add6b8073c26f5/sys/sys/types.h#L211-L212)
   ```c
   #define	major(x)	(((unsigned)(x) >> 8) & 0xff)
   #define	minor(x)	((unsigned)((x) & 0xff) | (((x) & 0xffff0000) >> 8))
   ```
* illumos:

  1. [mkdev.c](https://github.com/illumos/illumos-gate/blob/8b26092d555bd1deaacf79ea64da374602aefb65/usr/src/lib/libc/port/gen/mkdev.c#L40-L146)
  2. [mkdev.h](https://github.com/illumos/illumos-gate/blob/8b26092d555bd1deaacf79ea64da374602aefb65/usr/src/uts/common/sys/mkdev.h#L97-L99)
2023-05-06 07:25:56 +00:00
..
2022-09-07 06:50:04 -06:00