You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

29 lines
913 B

  1. // Copyright 2017 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. // Functions to access/create device major and minor numbers matching the
  5. // encoding used in NetBSD's sys/types.h header.
  6. package unix
  7. // Major returns the major component of a NetBSD device number.
  8. func Major(dev uint64) uint32 {
  9. return uint32((dev & 0x000fff00) >> 8)
  10. }
  11. // Minor returns the minor component of a NetBSD device number.
  12. func Minor(dev uint64) uint32 {
  13. minor := uint32((dev & 0x000000ff) >> 0)
  14. minor |= uint32((dev & 0xfff00000) >> 12)
  15. return minor
  16. }
  17. // Mkdev returns a NetBSD device number generated from the given major and minor
  18. // components.
  19. func Mkdev(major, minor uint32) uint64 {
  20. dev := (uint64(major) << 8) & 0x000fff00
  21. dev |= (uint64(minor) << 12) & 0xfff00000
  22. dev |= (uint64(minor) << 0) & 0x000000ff
  23. return dev
  24. }