Source file dev_t.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
include PosixTypes.Dev

external makedev : int -> int -> int64 = "caml_libdrm_makedev"
external major : int64 -> int = "caml_libdrm_major"
external minor : int64 -> int = "caml_libdrm_minor"

let of_raw x =
  assert (not Sys.big_endian);
  let aux c acc = logor (shift_left acc 8) (of_int (Char.code c)) in
  String.fold_right aux x zero

let v (major, minor) =
  of_int64 (makedev major minor)

let pp f t =
  let x = to_int64 t in
  Fmt.pf f "%d:%d" (major x) (minor x)