...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package utils
17
18 import "github.com/pkg/errors"
19
20
21 func EncodeClkIds(clkIds []string) (uint64, error) {
22 mask := uint64(0)
23
24 for _, id := range clkIds {
25
26 switch id {
27 case "CLOCK_REALTIME":
28 mask |= 1 << 0
29 case "CLOCK_MONOTONIC":
30 mask |= 1 << 1
31 case "CLOCK_PROCESS_CPUTIME_ID":
32 mask |= 1 << 2
33 case "CLOCK_THREAD_CPUTIME_ID":
34 mask |= 1 << 3
35 case "CLOCK_MONOTONIC_RAW":
36 mask |= 1 << 4
37 case "CLOCK_REALTIME_COARSE":
38 mask |= 1 << 5
39 case "CLOCK_MONOTONIC_COARSE":
40 mask |= 1 << 6
41 case "CLOCK_BOOTTIME":
42 mask |= 1 << 7
43 case "CLOCK_REALTIME_ALARM":
44 mask |= 1 << 8
45 case "CLOCK_BOOTTIME_ALARM":
46 mask |= 1 << 9
47 default:
48 return 0, errors.Errorf("unknown clock id %s", id)
49 }
50 }
51
52 return mask, nil
53 }
54