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