@@ -28,6 +28,19 @@ func entersyscallblock()
2828//go:linkname exitsyscall runtime.exitsyscall
2929func exitsyscall ()
3030
31+ //go:nosplit
32+ func callEntersyscallblock () {
33+ entersyscallblock ()
34+ }
35+
36+ //go:nosplit
37+ func callExitsyscall () {
38+ exitsyscall ()
39+ }
40+
41+ //go:noescape
42+ func BlockSyscall6 (num , a1 , a2 , a3 , a4 , a5 , a6 uintptr ) (r1 , r2 , errno uintptr )
43+
3144// EpollCreate implements epoll_create1.
3245func EpollCreate (flag int ) (fd int , err error ) {
3346 var r0 uintptr
@@ -68,18 +81,10 @@ func EpollWaitRaw(epfd int, events []epollevent, msec int) (n int, err error) {
6881
6982func EpollWaitBlock (epfd int , events []epollevent , msec int ) (n int , err error ) {
7083 r0 , _ , errno := BlockSyscall6 (SYS_EPOLL_WAIT , uintptr (epfd ), uintptr (unsafe .Pointer (& events [0 ])), uintptr (len (events )), uintptr (msec ), 0 , 0 )
71- if errno == syscall . Errno ( 0 ) {
84+ if errno == 0 {
7285 err = nil
7386 } else {
74- err = errno
87+ err = syscall . Errno ( errno )
7588 }
7689 return int (r0 ), err
7790}
78-
79- //go:nosplit
80- func BlockSyscall6 (trap , a1 , a2 , a3 , a4 , a5 , a6 uintptr ) (r1 , r2 uintptr , err syscall.Errno ) {
81- entersyscallblock ()
82- r1 , r2 , err = syscall .RawSyscall6 (trap , a1 , a2 , a3 , a4 , a5 , a6 )
83- exitsyscall ()
84- return r1 , r2 , err
85- }
0 commit comments