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
918 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 OpenBSD's sys/types.h header.
  6. package unix
  7. // Major returns the major component of an OpenBSD device number.
  8. func Major(dev uint64) uint32 {
  9. return uint32((dev & 0x0000ff00) >> 8)
  10. }
  11. // Minor returns the minor component of an OpenBSD device number.
  12. func Minor(dev uint64) uint32 {
  13. minor := uint32((dev & 0x000000ff) >> 0)
  14. minor |= uint32((dev & 0xffff0000) >> 8)
  15. return minor
  16. }
  17. // Mkdev returns an OpenBSD device number generated from the given major and minor
  18. // components.
  19. func Mkdev(major, minor uint32) uint64 {
  20. dev := (uint64(major) << 8) & 0x0000ff00
  21. dev |= (uint64(minor) << 8) & 0xffff0000
  22. dev |= (uint64(minor) << 0) & 0x000000ff
  23. return dev
  24. }