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_mipsx.s | |
| parent | 504fce98ba3052135ec1f9564e06819f42cdbc86 (diff) | |
| download | go-3b0aa546d289390027ee1bf1a5e41f37f6131fa7.tar.xz | |
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_mipsx.s')
| -rw-r--r-- | src/runtime/sys_linux_mipsx.s | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/runtime/sys_linux_mipsx.s b/src/runtime/sys_linux_mipsx.s index 30d962c325..b1cfafb4c9 100644 --- a/src/runtime/sys_linux_mipsx.s +++ b/src/runtime/sys_linux_mipsx.s @@ -20,6 +20,7 @@ #define SYS_close 4006 #define SYS_getpid 4020 #define SYS_kill 4037 +#define SYS_pipe 4042 #define SYS_brk 4045 #define SYS_fcntl 4055 #define SYS_mmap 4090 @@ -44,6 +45,7 @@ #define SYS_clock_gettime 4263 #define SYS_tgkill 4266 #define SYS_epoll_create1 4326 +#define SYS_pipe2 4328 TEXT runtime·exit(SB),NOSPLIT,$0-4 MOVW code+0(FP), R4 @@ -108,6 +110,23 @@ TEXT runtime·read(SB),NOSPLIT,$0-16 MOVW R2, ret+12(FP) RET +// func pipe() (r, w int32, errno int32) +TEXT runtime·pipe(SB),NOSPLIT,$0-12 + MOVW $r+0(FP), R4 + MOVW $SYS_pipe, R2 + SYSCALL + MOVW R2, errno+8(FP) + RET + +// func pipe2(flags int32) (r, w int32, errno int32) +TEXT runtime·pipe2(SB),NOSPLIT,$0-16 + MOVW $r+4(FP), R4 + MOVW flags+0(FP), R5 + MOVW $SYS_pipe2, R2 + SYSCALL + MOVW R2, errno+12(FP) + RET + TEXT runtime·usleep(SB),NOSPLIT,$28-4 MOVW usec+0(FP), R3 MOVW R3, R5 @@ -487,6 +506,21 @@ TEXT runtime·closeonexec(SB),NOSPLIT,$0-4 SYSCALL RET +// func runtime·setNonblock(int32 fd) +TEXT runtime·setNonblock(SB),NOSPLIT,$0-4 + MOVW fd+0(FP), R4 // fd + MOVW $3, R5 // F_GETFL + MOVW $0, R6 + MOVW $SYS_fcntl, R2 + SYSCALL + MOVW $0x80, R6 // O_NONBLOCK + OR R2, R6 + MOVW fd+0(FP), R4 // fd + MOVW $4, R5 // F_SETFL + MOVW $SYS_fcntl, R2 + SYSCALL + RET + // func sbrk0() uintptr TEXT runtime·sbrk0(SB),NOSPLIT,$0-4 // Implemented as brk(NULL). |
