Source file
src/runtime/os_linux_settime32.go
1
2
3
4
5
6
7 package runtime
8
9 import "internal/runtime/atomic"
10
11 var timer32bitOnly atomic.Bool
12
13
14 func timer_settime32(timerid int32, flags int32, new, old *itimerspec32) int32
15
16
17 func timer_settime64(timerid int32, flags int32, new, old *itimerspec) int32
18
19
20 func timer_settime(timerid int32, flags int32, new, old *itimerspec) int32 {
21 if !timer32bitOnly.Load() {
22 ret := timer_settime64(timerid, flags, new, old)
23
24 if ret != -_ENOSYS {
25 return ret
26 }
27 timer32bitOnly.Store(true)
28 }
29
30 var newts, oldts itimerspec32
31 var new32, old32 *itimerspec32
32
33 if new != nil {
34 newts.it_interval.setNsec(new.it_interval.tv_sec*1e9 + new.it_interval.tv_nsec)
35 newts.it_value.setNsec(new.it_value.tv_sec*1e9 + new.it_value.tv_nsec)
36 new32 = &newts
37 }
38
39 if old != nil {
40 oldts.it_interval.setNsec(old.it_interval.tv_sec*1e9 + old.it_interval.tv_nsec)
41 oldts.it_value.setNsec(old.it_value.tv_sec*1e9 + old.it_value.tv_nsec)
42 old32 = &oldts
43 }
44
45
46 return timer_settime32(timerid, flags, new32, old32)
47 }
48
View as plain text