diff options
author | Ian Lance Taylor <iant@golang.org> | 2019-04-03 16:31:13 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2019-10-20 21:15:55 +0000 |
commit | 3b0aa546d289390027ee1bf1a5e41f37f6131fa7 (patch) | |
tree | 631fafe6c7e524f3c27b5c58581bad68b0334390 /src/runtime/sys_linux_ppc64x.s | |
parent | 504fce98ba3052135ec1f9564e06819f42cdbc86 (diff) | |
download | go-3b0aa546d289390027ee1bf1a5e41f37f6131fa7.tar.gz go-3b0aa546d289390027ee1bf1a5e41f37f6131fa7.zip |
runtime: define nonblockingPipe
This requires defining pipe, pipe2, and setNonblock for various platforms.
The new function is currently only used on AIX. It will be used by
later CLs in this series.
Updates #27707
Change-Id: Id2f987b66b4c66a3ef40c22484ff1d14f58e9b31
Reviewed-on: https://go-review.googlesource.com/c/go/+/171822
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/runtime/sys_linux_ppc64x.s')
-rw-r--r-- | src/runtime/sys_linux_ppc64x.s | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/runtime/sys_linux_ppc64x.s b/src/runtime/sys_linux_ppc64x.s index cda1956875..d4908a127c 100644 --- a/src/runtime/sys_linux_ppc64x.s +++ b/src/runtime/sys_linux_ppc64x.s @@ -21,6 +21,7 @@ #define SYS_close 6 #define SYS_getpid 20 #define SYS_kill 37 +#define SYS_pipe 42 #define SYS_brk 45 #define SYS_fcntl 55 #define SYS_mmap 90 @@ -45,6 +46,7 @@ #define SYS_clock_gettime 246 #define SYS_tgkill 250 #define SYS_epoll_create1 315 +#define SYS_pipe2 317 TEXT runtime·exit(SB),NOSPLIT|NOFRAME,$0-4 MOVW code+0(FP), R3 @@ -100,6 +102,21 @@ TEXT runtime·read(SB),NOSPLIT|NOFRAME,$0-28 MOVW R3, ret+24(FP) RET +// func pipe() (r, w int32, errno int32) +TEXT runtime·pipe(SB),NOSPLIT|NOFRAME,$0-12 + ADD $FIXED_FRAME, R1, R3 + SYSCALL $SYS_pipe + MOVW R3, errno+8(FP) + RET + +// func pipe2(flags int32) (r, w int32, errno int32) +TEXT runtime·pipe2(SB),NOSPLIT|NOFRAME,$0-20 + ADD $FIXED_FRAME+8, R1, R3 + MOVW flags+0(FP), R4 + SYSCALL $SYS_pipe2 + MOVW R3, errno+16(FP) + RET + TEXT runtime·usleep(SB),NOSPLIT,$16-4 MOVW usec+0(FP), R3 MOVD R3, R5 @@ -612,6 +629,18 @@ TEXT runtime·closeonexec(SB),NOSPLIT|NOFRAME,$0 SYSCALL $SYS_fcntl RET +// func runtime·setNonblock(int32 fd) +TEXT runtime·setNonblock(SB),NOSPLIT|NOFRAME,$0-4 + MOVW fd+0(FP), R3 // fd + MOVD $3, R4 // F_GETFL + MOVD $0, R5 + SYSCALL $SYS_fcntl + OR $0x800, R3, R5 // O_NONBLOCK + MOVW fd+0(FP), R3 // fd + MOVD $4, R4 // F_SETFL + SYSCALL $SYS_fcntl + RET + // func sbrk0() uintptr TEXT runtime·sbrk0(SB),NOSPLIT|NOFRAME,$0 // Implemented as brk(NULL). |