66
|
1 // Copyright 2015 The Go Authors. All rights reserved.
|
|
2 // Use of this source code is governed by a BSD-style
|
|
3 // license that can be found in the LICENSE file.
|
|
4
|
|
5 //go:build gccgo && !aix
|
|
6 // +build gccgo,!aix
|
|
7
|
|
8 package unix
|
|
9
|
|
10 import "syscall"
|
|
11
|
|
12 // We can't use the gc-syntax .s files for gccgo. On the plus side
|
|
13 // much of the functionality can be written directly in Go.
|
|
14
|
|
15 func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)
|
|
16
|
|
17 func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
|
|
18
|
|
19 func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
|
|
20 syscall.Entersyscall()
|
|
21 r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
|
22 syscall.Exitsyscall()
|
|
23 return r, 0
|
|
24 }
|
|
25
|
|
26 func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
|
27 syscall.Entersyscall()
|
|
28 r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
|
29 syscall.Exitsyscall()
|
|
30 return r, 0, syscall.Errno(errno)
|
|
31 }
|
|
32
|
|
33 func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
|
34 syscall.Entersyscall()
|
|
35 r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
|
|
36 syscall.Exitsyscall()
|
|
37 return r, 0, syscall.Errno(errno)
|
|
38 }
|
|
39
|
|
40 func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
|
41 syscall.Entersyscall()
|
|
42 r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)
|
|
43 syscall.Exitsyscall()
|
|
44 return r, 0, syscall.Errno(errno)
|
|
45 }
|
|
46
|
|
47 func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
|
|
48 r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
|
49 return r, 0
|
|
50 }
|
|
51
|
|
52 func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
|
53 r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
|
54 return r, 0, syscall.Errno(errno)
|
|
55 }
|
|
56
|
|
57 func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
|
58 r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
|
|
59 return r, 0, syscall.Errno(errno)
|
|
60 }
|