From 665b9b3476ad0a6dc4e578e42e6c63012e23aaa0 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 20 Apr 2018 15:30:52 -0700 Subject: runtime: change GNU/Linux usleep to use nanosleep Ever since we added sleep to the runtime back in 2008, we've implemented it on GNU/Linux with the select (or pselect or pselect6) system call. But the Linux kernel has a nanosleep system call, which should be a tiny bit more efficient since it doesn't have to check to see whether there are any file descriptors. So use it. Change-Id: Icc3430baca46b082a4d33f97c6c47e25fa91cb9a Reviewed-on: https://go-review.googlesource.com/108538 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/runtime/sys_linux_amd64.s | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/runtime/sys_linux_amd64.s') diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s index e03f7ce44c..62d80247be 100644 --- a/src/runtime/sys_linux_amd64.s +++ b/src/runtime/sys_linux_amd64.s @@ -24,6 +24,7 @@ #define SYS_sched_yield 24 #define SYS_mincore 27 #define SYS_madvise 28 +#define SYS_nanosleep 35 #define SYS_setittimer 38 #define SYS_getpid 39 #define SYS_socket 41 @@ -43,7 +44,6 @@ #define SYS_epoll_ctl 233 #define SYS_openat 257 #define SYS_faccessat 269 -#define SYS_pselect6 270 #define SYS_epoll_pwait 281 #define SYS_epoll_create1 291 @@ -123,14 +123,10 @@ TEXT runtimeĀ·usleep(SB),NOSPLIT,$16 MULL DX MOVQ AX, 8(SP) - // pselect6(0, 0, 0, 0, &ts, 0) - MOVL $0, DI + // nanosleep(&ts, 0) + MOVQ SP, DI MOVL $0, SI - MOVL $0, DX - MOVL $0, R10 - MOVQ SP, R8 - MOVL $0, R9 - MOVL $SYS_pselect6, AX + MOVL $SYS_nanosleep, AX SYSCALL RET -- cgit v1.3