Source file
src/runtime/netpoll_stub.go
Documentation: runtime
1
2
3
4
5
6
7
8 package runtime
9
10 import "runtime/internal/atomic"
11
12 var netpollInited uint32
13 var netpollWaiters uint32
14
15 var netpollStubLock mutex
16 var netpollNote note
17
18
19 var netpollBrokenLock mutex
20 var netpollBroken bool
21
22 func netpollGenericInit() {
23 atomic.Store(&netpollInited, 1)
24 }
25
26 func netpollBreak() {
27 lock(&netpollBrokenLock)
28 broken := netpollBroken
29 netpollBroken = true
30 if !broken {
31 notewakeup(&netpollNote)
32 }
33 unlock(&netpollBrokenLock)
34 }
35
36
37
38 func netpoll(delay int64) gList {
39
40
41 if delay != 0 {
42
43
44 lock(&netpollStubLock)
45
46 lock(&netpollBrokenLock)
47 noteclear(&netpollNote)
48 netpollBroken = false
49 unlock(&netpollBrokenLock)
50
51 notetsleep(&netpollNote, delay)
52 unlock(&netpollStubLock)
53
54
55 osyield()
56 }
57 return gList{}
58 }
59
60 func netpollinited() bool {
61 return atomic.Load(&netpollInited) != 0
62 }
63
View as plain text