mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: rename cgocall_errno and asmcgocall_errno into cgocall and asmcgocall
Change-Id: I5917bea8bb35b0e725dcc56a68f3a70137cfc180 Reviewed-on: https://go-review.googlesource.com/9387 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
1a040c9230
commit
9d968cb47b
20 changed files with 87 additions and 103 deletions
|
|
@ -156,9 +156,8 @@ func testCallbackCallers(t *testing.T) {
|
||||||
"runtime.cgocallbackg1",
|
"runtime.cgocallbackg1",
|
||||||
"runtime.cgocallbackg",
|
"runtime.cgocallbackg",
|
||||||
"runtime.cgocallback_gofunc",
|
"runtime.cgocallback_gofunc",
|
||||||
"asmcgocall",
|
"runtime.asmcgocall",
|
||||||
"runtime.asmcgocall_errno",
|
"runtime.cgocall",
|
||||||
"runtime.cgocall_errno",
|
|
||||||
"test._Cfunc_callback",
|
"test._Cfunc_callback",
|
||||||
"test.nestedCall",
|
"test.nestedCall",
|
||||||
"test.testCallbackCallers",
|
"test.testCallbackCallers",
|
||||||
|
|
|
||||||
|
|
@ -110,13 +110,13 @@ func test7978(t *testing.T) {
|
||||||
go issue7978go()
|
go issue7978go()
|
||||||
// test in c code, before callback
|
// test in c code, before callback
|
||||||
issue7978wait(0, 1)
|
issue7978wait(0, 1)
|
||||||
issue7978check(t, "runtime.cgocall_errno(", "", 1)
|
issue7978check(t, "runtime.cgocall(", "", 1)
|
||||||
// test in go code, during callback
|
// test in go code, during callback
|
||||||
issue7978wait(2, 3)
|
issue7978wait(2, 3)
|
||||||
issue7978check(t, "test.issue7978cb(", "test.issue7978go", 3)
|
issue7978check(t, "test.issue7978cb(", "test.issue7978go", 3)
|
||||||
// test in c code, after callback
|
// test in c code, after callback
|
||||||
issue7978wait(4, 5)
|
issue7978wait(4, 5)
|
||||||
issue7978check(t, "runtime.cgocall_errno(", "runtime.cgocallback", 1)
|
issue7978check(t, "runtime.cgocall(", "runtime.cgocallback", 1)
|
||||||
// test in go code, after return from cgo
|
// test in go code, after return from cgo
|
||||||
issue7978wait(6, 7)
|
issue7978wait(6, 7)
|
||||||
issue7978check(t, "test.issue7978go(", "", 3)
|
issue7978check(t, "test.issue7978go(", "", 3)
|
||||||
|
|
|
||||||
|
|
@ -432,7 +432,7 @@ For example, here is the definition of _Cfunc_puts:
|
||||||
var _cgo_be59f0f25121_Cfunc_puts = unsafe.Pointer(&__cgofn__cgo_be59f0f25121_Cfunc_puts)
|
var _cgo_be59f0f25121_Cfunc_puts = unsafe.Pointer(&__cgofn__cgo_be59f0f25121_Cfunc_puts)
|
||||||
|
|
||||||
func _Cfunc_puts(p0 *_Ctype_char) (r1 _Ctype_int) {
|
func _Cfunc_puts(p0 *_Ctype_char) (r1 _Ctype_int) {
|
||||||
_cgo_runtime_cgocall_errno(_cgo_be59f0f25121_Cfunc_puts, uintptr(unsafe.Pointer(&p0)))
|
_cgo_runtime_cgocall(_cgo_be59f0f25121_Cfunc_puts, uintptr(unsafe.Pointer(&p0)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -682,7 +682,7 @@ The following code will be generated by cgo:
|
||||||
var _cgo_gcc_Cfunc_sin = unsafe.Pointer(&__cgo_gcc_Cfunc_sin)
|
var _cgo_gcc_Cfunc_sin = unsafe.Pointer(&__cgo_gcc_Cfunc_sin)
|
||||||
|
|
||||||
func _Cfunc_sin(p0 _Ctype_double) (r1 _Ctype_double) {
|
func _Cfunc_sin(p0 _Ctype_double) (r1 _Ctype_double) {
|
||||||
_cgo_runtime_cgocall_errno(_cgo_gcc_Cfunc_sin, uintptr(unsafe.Pointer(&p0)))
|
_cgo_runtime_cgocall(_cgo_gcc_Cfunc_sin, uintptr(unsafe.Pointer(&p0)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -466,7 +466,7 @@ func (p *Package) writeDefsFunc(fgo2 io.Writer, n *Name) {
|
||||||
if n.AddError {
|
if n.AddError {
|
||||||
prefix = "errno := "
|
prefix = "errno := "
|
||||||
}
|
}
|
||||||
fmt.Fprintf(fgo2, "\t%s_cgo_runtime_cgocall_errno(%s, %s)\n", prefix, cname, arg)
|
fmt.Fprintf(fgo2, "\t%s_cgo_runtime_cgocall(%s, %s)\n", prefix, cname, arg)
|
||||||
if n.AddError {
|
if n.AddError {
|
||||||
fmt.Fprintf(fgo2, "\tif errno != 0 { r2 = syscall.Errno(errno) }\n")
|
fmt.Fprintf(fgo2, "\tif errno != 0 { r2 = syscall.Errno(errno) }\n")
|
||||||
}
|
}
|
||||||
|
|
@ -1232,8 +1232,8 @@ void *_CMalloc(size_t);
|
||||||
`
|
`
|
||||||
|
|
||||||
const goProlog = `
|
const goProlog = `
|
||||||
//go:linkname _cgo_runtime_cgocall_errno runtime.cgocall_errno
|
//go:linkname _cgo_runtime_cgocall runtime.cgocall
|
||||||
func _cgo_runtime_cgocall_errno(unsafe.Pointer, uintptr) int32
|
func _cgo_runtime_cgocall(unsafe.Pointer, uintptr) int32
|
||||||
|
|
||||||
//go:linkname _cgo_runtime_cmalloc runtime.cmalloc
|
//go:linkname _cgo_runtime_cmalloc runtime.cmalloc
|
||||||
func _cgo_runtime_cmalloc(uintptr) unsafe.Pointer
|
func _cgo_runtime_cmalloc(uintptr) unsafe.Pointer
|
||||||
|
|
|
||||||
|
|
@ -661,19 +661,14 @@ TEXT gosave<>(SB),NOSPLIT,$0
|
||||||
POPL AX
|
POPL AX
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// asmcgocall(void(*fn)(void*), void *arg)
|
// func asmcgocall(fn, arg unsafe.Pointer) int32
|
||||||
// Call fn(arg) on the scheduler stack,
|
// Call fn(arg) on the scheduler stack,
|
||||||
// aligned appropriately for the gcc ABI.
|
// aligned appropriately for the gcc ABI.
|
||||||
// See cgocall.c for more details.
|
// See cgocall.go for more details.
|
||||||
TEXT ·asmcgocall_errno(SB),NOSPLIT,$0-12
|
TEXT ·asmcgocall(SB),NOSPLIT,$0-12
|
||||||
MOVL fn+0(FP), AX
|
MOVL fn+0(FP), AX
|
||||||
MOVL arg+4(FP), BX
|
MOVL arg+4(FP), BX
|
||||||
CALL asmcgocall<>(SB)
|
|
||||||
MOVL AX, ret+8(FP)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT asmcgocall<>(SB),NOSPLIT,$0-0
|
|
||||||
// fn in AX, arg in BX
|
|
||||||
MOVL SP, DX
|
MOVL SP, DX
|
||||||
|
|
||||||
// Figure out if we need to switch to m->g0 stack.
|
// Figure out if we need to switch to m->g0 stack.
|
||||||
|
|
@ -707,6 +702,8 @@ TEXT asmcgocall<>(SB),NOSPLIT,$0-0
|
||||||
SUBL 4(SP), SI
|
SUBL 4(SP), SI
|
||||||
MOVL DI, g(CX)
|
MOVL DI, g(CX)
|
||||||
MOVL SI, SP
|
MOVL SI, SP
|
||||||
|
|
||||||
|
MOVL AX, ret+8(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
|
// cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
|
||||||
|
|
@ -724,7 +721,7 @@ TEXT runtime·cgocallback(SB),NOSPLIT,$12-12
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// cgocallback_gofunc(FuncVal*, void *frame, uintptr framesize)
|
// cgocallback_gofunc(FuncVal*, void *frame, uintptr framesize)
|
||||||
// See cgocall.c for more details.
|
// See cgocall.go for more details.
|
||||||
TEXT ·cgocallback_gofunc(SB),NOSPLIT,$12-12
|
TEXT ·cgocallback_gofunc(SB),NOSPLIT,$12-12
|
||||||
NO_LOCAL_POINTERS
|
NO_LOCAL_POINTERS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -641,19 +641,14 @@ TEXT gosave<>(SB),NOSPLIT,$0
|
||||||
MOVQ BP, (g_sched+gobuf_bp)(R8)
|
MOVQ BP, (g_sched+gobuf_bp)(R8)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// asmcgocall(void(*fn)(void*), void *arg)
|
// func asmcgocall(fn, arg unsafe.Pointer) int32
|
||||||
// Call fn(arg) on the scheduler stack,
|
// Call fn(arg) on the scheduler stack,
|
||||||
// aligned appropriately for the gcc ABI.
|
// aligned appropriately for the gcc ABI.
|
||||||
// See cgocall.c for more details.
|
// See cgocall.go for more details.
|
||||||
TEXT ·asmcgocall_errno(SB),NOSPLIT,$0-20
|
TEXT ·asmcgocall(SB),NOSPLIT,$0-20
|
||||||
MOVQ fn+0(FP), AX
|
MOVQ fn+0(FP), AX
|
||||||
MOVQ arg+8(FP), BX
|
MOVQ arg+8(FP), BX
|
||||||
CALL asmcgocall<>(SB)
|
|
||||||
MOVL AX, ret+16(FP)
|
|
||||||
RET
|
|
||||||
|
|
||||||
// asmcgocall common code. fn in AX, arg in BX. returns errno in AX.
|
|
||||||
TEXT asmcgocall<>(SB),NOSPLIT,$0-0
|
|
||||||
MOVQ SP, DX
|
MOVQ SP, DX
|
||||||
|
|
||||||
// Figure out if we need to switch to m->g0 stack.
|
// Figure out if we need to switch to m->g0 stack.
|
||||||
|
|
@ -696,6 +691,8 @@ nosave:
|
||||||
SUBQ 40(SP), SI
|
SUBQ 40(SP), SI
|
||||||
MOVQ DI, g(CX)
|
MOVQ DI, g(CX)
|
||||||
MOVQ SI, SP
|
MOVQ SI, SP
|
||||||
|
|
||||||
|
MOVL AX, ret+16(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
|
// cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
|
||||||
|
|
@ -713,7 +710,7 @@ TEXT runtime·cgocallback(SB),NOSPLIT,$24-24
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// cgocallback_gofunc(FuncVal*, void *frame, uintptr framesize)
|
// cgocallback_gofunc(FuncVal*, void *frame, uintptr framesize)
|
||||||
// See cgocall.c for more details.
|
// See cgocall.go for more details.
|
||||||
TEXT ·cgocallback_gofunc(SB),NOSPLIT,$8-24
|
TEXT ·cgocallback_gofunc(SB),NOSPLIT,$8-24
|
||||||
NO_LOCAL_POINTERS
|
NO_LOCAL_POINTERS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -582,9 +582,9 @@ TEXT runtime·jmpdefer(SB), NOSPLIT, $0-8
|
||||||
MOVL 0(DX), BX
|
MOVL 0(DX), BX
|
||||||
JMP BX // but first run the deferred function
|
JMP BX // but first run the deferred function
|
||||||
|
|
||||||
// asmcgocall(void(*fn)(void*), void *arg)
|
// func asmcgocall(fn, arg unsafe.Pointer) int32
|
||||||
// Not implemented.
|
// Not implemented.
|
||||||
TEXT runtime·asmcgocall_errno(SB),NOSPLIT,$0-12
|
TEXT runtime·asmcgocall(SB),NOSPLIT,$0-12
|
||||||
MOVL 0, AX
|
MOVL 0, AX
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -474,19 +474,14 @@ TEXT gosave<>(SB),NOSPLIT,$0
|
||||||
MOVW R11, (g_sched+gobuf_ctxt)(g)
|
MOVW R11, (g_sched+gobuf_ctxt)(g)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// asmcgocall(void(*fn)(void*), void *arg)
|
// func asmcgocall(fn, arg unsafe.Pointer) int32
|
||||||
// Call fn(arg) on the scheduler stack,
|
// Call fn(arg) on the scheduler stack,
|
||||||
// aligned appropriately for the gcc ABI.
|
// aligned appropriately for the gcc ABI.
|
||||||
// See cgocall.c for more details.
|
// See cgocall.go for more details.
|
||||||
TEXT ·asmcgocall_errno(SB),NOSPLIT,$0-12
|
TEXT ·asmcgocall(SB),NOSPLIT,$0-12
|
||||||
MOVW fn+0(FP), R1
|
MOVW fn+0(FP), R1
|
||||||
MOVW arg+4(FP), R0
|
MOVW arg+4(FP), R0
|
||||||
BL asmcgocall<>(SB)
|
|
||||||
MOVW R0, ret+8(FP)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT asmcgocall<>(SB),NOSPLIT,$0-0
|
|
||||||
// fn in R1, arg in R0.
|
|
||||||
MOVW R13, R2
|
MOVW R13, R2
|
||||||
MOVW g, R4
|
MOVW g, R4
|
||||||
|
|
||||||
|
|
@ -523,6 +518,8 @@ g0:
|
||||||
SUB R2, R1
|
SUB R2, R1
|
||||||
MOVW R5, R0
|
MOVW R5, R0
|
||||||
MOVW R1, R13
|
MOVW R1, R13
|
||||||
|
|
||||||
|
MOVW R0, ret+8(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
|
// cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
|
||||||
|
|
@ -540,7 +537,7 @@ TEXT runtime·cgocallback(SB),NOSPLIT,$12-12
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// cgocallback_gofunc(void (*fn)(void*), void *frame, uintptr framesize)
|
// cgocallback_gofunc(void (*fn)(void*), void *frame, uintptr framesize)
|
||||||
// See cgocall.c for more details.
|
// See cgocall.go for more details.
|
||||||
TEXT ·cgocallback_gofunc(SB),NOSPLIT,$8-12
|
TEXT ·cgocallback_gofunc(SB),NOSPLIT,$8-12
|
||||||
NO_LOCAL_POINTERS
|
NO_LOCAL_POINTERS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -545,19 +545,14 @@ TEXT gosave<>(SB),NOSPLIT,$-8
|
||||||
MOVD $0, (g_sched+gobuf_ctxt)(g)
|
MOVD $0, (g_sched+gobuf_ctxt)(g)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// asmcgocall(void(*fn)(void*), void *arg)
|
// func asmcgocall(fn, arg unsafe.Pointer) int32
|
||||||
// Call fn(arg) on the scheduler stack,
|
// Call fn(arg) on the scheduler stack,
|
||||||
// aligned appropriately for the gcc ABI.
|
// aligned appropriately for the gcc ABI.
|
||||||
// See cgocall.go for more details.
|
// See cgocall.go for more details.
|
||||||
TEXT ·asmcgocall_errno(SB),NOSPLIT,$0-20
|
TEXT ·asmcgocall(SB),NOSPLIT,$0-20
|
||||||
MOVD fn+0(FP), R1
|
MOVD fn+0(FP), R1
|
||||||
MOVD arg+8(FP), R0
|
MOVD arg+8(FP), R0
|
||||||
BL asmcgocall<>(SB)
|
|
||||||
MOVW R0, ret+16(FP)
|
|
||||||
RET
|
|
||||||
|
|
||||||
// asmcgocall common code. fn in R1, arg in R0. returns errno in R0.
|
|
||||||
TEXT asmcgocall<>(SB),NOSPLIT,$0-0
|
|
||||||
MOVD RSP, R2 // save original stack pointer
|
MOVD RSP, R2 // save original stack pointer
|
||||||
MOVD g, R4
|
MOVD g, R4
|
||||||
|
|
||||||
|
|
@ -598,6 +593,8 @@ g0:
|
||||||
SUB R6, R5
|
SUB R6, R5
|
||||||
MOVD R9, R0
|
MOVD R9, R0
|
||||||
MOVD R5, RSP
|
MOVD R5, RSP
|
||||||
|
|
||||||
|
MOVW R0, ret+16(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
|
// cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
|
||||||
|
|
|
||||||
|
|
@ -694,19 +694,14 @@ TEXT gosave<>(SB),NOSPLIT,$-8
|
||||||
MOVD R0, (g_sched+gobuf_ctxt)(g)
|
MOVD R0, (g_sched+gobuf_ctxt)(g)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// asmcgocall(void(*fn)(void*), void *arg)
|
// func asmcgocall(fn, arg unsafe.Pointer) int32
|
||||||
// Call fn(arg) on the scheduler stack,
|
// Call fn(arg) on the scheduler stack,
|
||||||
// aligned appropriately for the gcc ABI.
|
// aligned appropriately for the gcc ABI.
|
||||||
// See cgocall.c for more details.
|
// See cgocall.go for more details.
|
||||||
TEXT ·asmcgocall_errno(SB),NOSPLIT,$0-20
|
TEXT ·asmcgocall(SB),NOSPLIT,$0-20
|
||||||
MOVD fn+0(FP), R3
|
MOVD fn+0(FP), R3
|
||||||
MOVD arg+8(FP), R4
|
MOVD arg+8(FP), R4
|
||||||
BL asmcgocall<>(SB)
|
|
||||||
MOVW R3, ret+16(FP)
|
|
||||||
RET
|
|
||||||
|
|
||||||
// asmcgocall common code. fn in R3, arg in R4. returns errno in R3.
|
|
||||||
TEXT asmcgocall<>(SB),NOSPLIT,$0-0
|
|
||||||
MOVD R1, R2 // save original stack pointer
|
MOVD R1, R2 // save original stack pointer
|
||||||
MOVD g, R5
|
MOVD g, R5
|
||||||
|
|
||||||
|
|
@ -749,6 +744,8 @@ g0:
|
||||||
MOVD 32(R1), R6
|
MOVD 32(R1), R6
|
||||||
SUB R6, R5
|
SUB R6, R5
|
||||||
MOVD R5, R1
|
MOVD R5, R1
|
||||||
|
|
||||||
|
MOVW R3, ret+16(FP)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
|
// cgocallback(void (*fn)(void*), void *frame, uintptr framesize)
|
||||||
|
|
@ -767,7 +764,7 @@ TEXT runtime·cgocallback(SB),NOSPLIT,$24-24
|
||||||
RET
|
RET
|
||||||
|
|
||||||
// cgocallback_gofunc(FuncVal*, void *frame, uintptr framesize)
|
// cgocallback_gofunc(FuncVal*, void *frame, uintptr framesize)
|
||||||
// See cgocall.c for more details.
|
// See cgocall.go for more details.
|
||||||
TEXT ·cgocallback_gofunc(SB),NOSPLIT,$16-24
|
TEXT ·cgocallback_gofunc(SB),NOSPLIT,$16-24
|
||||||
NO_LOCAL_POINTERS
|
NO_LOCAL_POINTERS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ import "unsafe"
|
||||||
|
|
||||||
// Call from Go to C.
|
// Call from Go to C.
|
||||||
//go:nosplit
|
//go:nosplit
|
||||||
func cgocall_errno(fn, arg unsafe.Pointer) int32 {
|
func cgocall(fn, arg unsafe.Pointer) int32 {
|
||||||
if !iscgo && GOOS != "solaris" && GOOS != "windows" {
|
if !iscgo && GOOS != "solaris" && GOOS != "windows" {
|
||||||
throw("cgocall unavailable")
|
throw("cgocall unavailable")
|
||||||
}
|
}
|
||||||
|
|
@ -118,7 +118,7 @@ func cgocall_errno(fn, arg unsafe.Pointer) int32 {
|
||||||
* the $GOMAXPROCS accounting.
|
* the $GOMAXPROCS accounting.
|
||||||
*/
|
*/
|
||||||
entersyscall(0)
|
entersyscall(0)
|
||||||
errno := asmcgocall_errno(fn, arg)
|
errno := asmcgocall(fn, arg)
|
||||||
exitsyscall(0)
|
exitsyscall(0)
|
||||||
|
|
||||||
return errno
|
return errno
|
||||||
|
|
@ -143,7 +143,7 @@ func cmalloc(n uintptr) unsafe.Pointer {
|
||||||
ret unsafe.Pointer
|
ret unsafe.Pointer
|
||||||
}
|
}
|
||||||
args.n = uint64(n)
|
args.n = uint64(n)
|
||||||
cgocall_errno(_cgo_malloc, unsafe.Pointer(&args))
|
cgocall(_cgo_malloc, unsafe.Pointer(&args))
|
||||||
if args.ret == nil {
|
if args.ret == nil {
|
||||||
throw("C malloc failed")
|
throw("C malloc failed")
|
||||||
}
|
}
|
||||||
|
|
@ -151,7 +151,7 @@ func cmalloc(n uintptr) unsafe.Pointer {
|
||||||
}
|
}
|
||||||
|
|
||||||
func cfree(p unsafe.Pointer) {
|
func cfree(p unsafe.Pointer) {
|
||||||
cgocall_errno(_cgo_free, p)
|
cgocall(_cgo_free, p)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call from C back to Go.
|
// Call from C back to Go.
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ func syscall_setenv_c(k string, v string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
arg := [2]unsafe.Pointer{cstring(k), cstring(v)}
|
arg := [2]unsafe.Pointer{cstring(k), cstring(v)}
|
||||||
asmcgocall_errno(unsafe.Pointer(_cgo_setenv), unsafe.Pointer(&arg))
|
asmcgocall(unsafe.Pointer(_cgo_setenv), unsafe.Pointer(&arg))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the C environment if cgo is loaded.
|
// Update the C environment if cgo is loaded.
|
||||||
|
|
@ -43,7 +43,7 @@ func syscall_unsetenv_c(k string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
arg := [1]unsafe.Pointer{cstring(k)}
|
arg := [1]unsafe.Pointer{cstring(k)}
|
||||||
asmcgocall_errno(unsafe.Pointer(_cgo_unsetenv), unsafe.Pointer(&arg))
|
asmcgocall(unsafe.Pointer(_cgo_unsetenv), unsafe.Pointer(&arg))
|
||||||
}
|
}
|
||||||
|
|
||||||
func cstring(s string) unsafe.Pointer {
|
func cstring(s string) unsafe.Pointer {
|
||||||
|
|
|
||||||
|
|
@ -372,7 +372,7 @@ func stdcall(fn stdFunction) uintptr {
|
||||||
// all three values to be non-zero, it will use them
|
// all three values to be non-zero, it will use them
|
||||||
mp.libcallsp = getcallersp(unsafe.Pointer(&fn))
|
mp.libcallsp = getcallersp(unsafe.Pointer(&fn))
|
||||||
}
|
}
|
||||||
asmcgocall_errno(asmstdcallAddr, unsafe.Pointer(&mp.libcall))
|
asmcgocall(asmstdcallAddr, unsafe.Pointer(&mp.libcall))
|
||||||
mp.libcallsp = 0
|
mp.libcallsp = 0
|
||||||
return mp.libcall.r1
|
return mp.libcall.r1
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -201,7 +201,7 @@ func msigsave(mp *m) {
|
||||||
// Called on the new thread, can not allocate memory.
|
// Called on the new thread, can not allocate memory.
|
||||||
func minit() {
|
func minit() {
|
||||||
_g_ := getg()
|
_g_ := getg()
|
||||||
asmcgocall_errno(unsafe.Pointer(funcPC(miniterrno)), unsafe.Pointer(&libc____errno))
|
asmcgocall(unsafe.Pointer(funcPC(miniterrno)), unsafe.Pointer(&libc____errno))
|
||||||
// Initialize signal handling
|
// Initialize signal handling
|
||||||
signalstack(&_g_.m.gsignal.stack)
|
signalstack(&_g_.m.gsignal.stack)
|
||||||
|
|
||||||
|
|
@ -317,7 +317,7 @@ func semacreate() uintptr {
|
||||||
memclr(unsafe.Pointer(&_g_.m.scratch), uintptr(len(_g_.m.scratch.v)))
|
memclr(unsafe.Pointer(&_g_.m.scratch), uintptr(len(_g_.m.scratch.v)))
|
||||||
_g_.m.scratch.v[0] = unsafe.Sizeof(*sem)
|
_g_.m.scratch.v[0] = unsafe.Sizeof(*sem)
|
||||||
_g_.m.libcall.args = uintptr(unsafe.Pointer(&_g_.m.scratch))
|
_g_.m.libcall.args = uintptr(unsafe.Pointer(&_g_.m.scratch))
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_g_.m.libcall))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_g_.m.libcall))
|
||||||
sem = (*semt)(unsafe.Pointer(_g_.m.libcall.r1))
|
sem = (*semt)(unsafe.Pointer(_g_.m.libcall.r1))
|
||||||
if sem_init(sem, 0, 0) != 0 {
|
if sem_init(sem, 0, 0) != 0 {
|
||||||
throw("sem_init")
|
throw("sem_init")
|
||||||
|
|
@ -338,7 +338,7 @@ func semasleep(ns int64) int32 {
|
||||||
_m_.scratch.v[0] = _m_.waitsema
|
_m_.scratch.v[0] = _m_.waitsema
|
||||||
_m_.scratch.v[1] = uintptr(unsafe.Pointer(&_m_.ts))
|
_m_.scratch.v[1] = uintptr(unsafe.Pointer(&_m_.ts))
|
||||||
_m_.libcall.args = uintptr(unsafe.Pointer(&_m_.scratch))
|
_m_.libcall.args = uintptr(unsafe.Pointer(&_m_.scratch))
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_m_.libcall))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_m_.libcall))
|
||||||
if *_m_.perrno != 0 {
|
if *_m_.perrno != 0 {
|
||||||
if *_m_.perrno == _ETIMEDOUT || *_m_.perrno == _EAGAIN || *_m_.perrno == _EINTR {
|
if *_m_.perrno == _ETIMEDOUT || *_m_.perrno == _EAGAIN || *_m_.perrno == _EINTR {
|
||||||
return -1
|
return -1
|
||||||
|
|
@ -353,7 +353,7 @@ func semasleep(ns int64) int32 {
|
||||||
memclr(unsafe.Pointer(&_m_.scratch), uintptr(len(_m_.scratch.v)))
|
memclr(unsafe.Pointer(&_m_.scratch), uintptr(len(_m_.scratch.v)))
|
||||||
_m_.scratch.v[0] = _m_.waitsema
|
_m_.scratch.v[0] = _m_.waitsema
|
||||||
_m_.libcall.args = uintptr(unsafe.Pointer(&_m_.scratch))
|
_m_.libcall.args = uintptr(unsafe.Pointer(&_m_.scratch))
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_m_.libcall))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&_m_.libcall))
|
||||||
if _m_.libcall.r1 == 0 {
|
if _m_.libcall.r1 == 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ func sysvicall0(fn *libcFunc) uintptr {
|
||||||
libcall.fn = uintptr(unsafe.Pointer(fn))
|
libcall.fn = uintptr(unsafe.Pointer(fn))
|
||||||
libcall.n = 0
|
libcall.n = 0
|
||||||
libcall.args = uintptr(unsafe.Pointer(fn)) // it's unused but must be non-nil, otherwise crashes
|
libcall.args = uintptr(unsafe.Pointer(fn)) // it's unused but must be non-nil, otherwise crashes
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
||||||
return libcall.r1
|
return libcall.r1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ func sysvicall1(fn *libcFunc, a1 uintptr) uintptr {
|
||||||
libcall.n = 1
|
libcall.n = 1
|
||||||
// TODO(rsc): Why is noescape necessary here and below?
|
// TODO(rsc): Why is noescape necessary here and below?
|
||||||
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
||||||
return libcall.r1
|
return libcall.r1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@ func sysvicall2(fn *libcFunc, a1, a2 uintptr) uintptr {
|
||||||
libcall.fn = uintptr(unsafe.Pointer(fn))
|
libcall.fn = uintptr(unsafe.Pointer(fn))
|
||||||
libcall.n = 2
|
libcall.n = 2
|
||||||
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
||||||
return libcall.r1
|
return libcall.r1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -50,7 +50,7 @@ func sysvicall3(fn *libcFunc, a1, a2, a3 uintptr) uintptr {
|
||||||
libcall.fn = uintptr(unsafe.Pointer(fn))
|
libcall.fn = uintptr(unsafe.Pointer(fn))
|
||||||
libcall.n = 3
|
libcall.n = 3
|
||||||
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
||||||
return libcall.r1
|
return libcall.r1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -60,7 +60,7 @@ func sysvicall4(fn *libcFunc, a1, a2, a3, a4 uintptr) uintptr {
|
||||||
libcall.fn = uintptr(unsafe.Pointer(fn))
|
libcall.fn = uintptr(unsafe.Pointer(fn))
|
||||||
libcall.n = 4
|
libcall.n = 4
|
||||||
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
||||||
return libcall.r1
|
return libcall.r1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -70,7 +70,7 @@ func sysvicall5(fn *libcFunc, a1, a2, a3, a4, a5 uintptr) uintptr {
|
||||||
libcall.fn = uintptr(unsafe.Pointer(fn))
|
libcall.fn = uintptr(unsafe.Pointer(fn))
|
||||||
libcall.n = 5
|
libcall.n = 5
|
||||||
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
||||||
return libcall.r1
|
return libcall.r1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -80,6 +80,6 @@ func sysvicall6(fn *libcFunc, a1, a2, a3, a4, a5, a6 uintptr) uintptr {
|
||||||
libcall.fn = uintptr(unsafe.Pointer(fn))
|
libcall.fn = uintptr(unsafe.Pointer(fn))
|
||||||
libcall.n = 6
|
libcall.n = 6
|
||||||
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
libcall.args = uintptr(noescape(unsafe.Pointer(&a1)))
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(libcall))
|
||||||
return libcall.r1
|
return libcall.r1
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ func main() {
|
||||||
if _cgo_notify_runtime_init_done == nil {
|
if _cgo_notify_runtime_init_done == nil {
|
||||||
throw("_cgo_notify_runtime_init_done missing")
|
throw("_cgo_notify_runtime_init_done missing")
|
||||||
}
|
}
|
||||||
cgocall_errno(_cgo_notify_runtime_init_done, nil)
|
cgocall(_cgo_notify_runtime_init_done, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
main_init()
|
main_init()
|
||||||
|
|
|
||||||
|
|
@ -1093,7 +1093,7 @@ func newm(fn func(), _p_ *p) {
|
||||||
ts.g.set(mp.g0)
|
ts.g.set(mp.g0)
|
||||||
ts.tls = (*uint64)(unsafe.Pointer(&mp.tls[0]))
|
ts.tls = (*uint64)(unsafe.Pointer(&mp.tls[0]))
|
||||||
ts.fn = unsafe.Pointer(funcPC(mstart))
|
ts.fn = unsafe.Pointer(funcPC(mstart))
|
||||||
asmcgocall_errno(_cgo_thread_start, unsafe.Pointer(&ts))
|
asmcgocall(_cgo_thread_start, unsafe.Pointer(&ts))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
newosproc(mp, unsafe.Pointer(mp.g0.stack.hi))
|
newosproc(mp, unsafe.Pointer(mp.g0.stack.hi))
|
||||||
|
|
|
||||||
|
|
@ -205,7 +205,7 @@ func getcallerpc(argp unsafe.Pointer) uintptr
|
||||||
func getcallersp(argp unsafe.Pointer) uintptr
|
func getcallersp(argp unsafe.Pointer) uintptr
|
||||||
|
|
||||||
//go:noescape
|
//go:noescape
|
||||||
func asmcgocall_errno(fn, arg unsafe.Pointer) int32
|
func asmcgocall(fn, arg unsafe.Pointer) int32
|
||||||
|
|
||||||
// argp used in Defer structs when there is no argp.
|
// argp used in Defer structs when there is no argp.
|
||||||
const _NoArgs = ^uintptr(0)
|
const _NoArgs = ^uintptr(0)
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ func syscall_sysvicall6(fn, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err
|
||||||
args: uintptr(unsafe.Pointer(&a1)),
|
args: uintptr(unsafe.Pointer(&a1)),
|
||||||
}
|
}
|
||||||
entersyscallblock(0)
|
entersyscallblock(0)
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
exitsyscall(0)
|
exitsyscall(0)
|
||||||
return call.r1, call.r2, call.err
|
return call.r1, call.r2, call.err
|
||||||
}
|
}
|
||||||
|
|
@ -46,7 +46,7 @@ func syscall_rawsysvicall6(fn, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, e
|
||||||
n: nargs,
|
n: nargs,
|
||||||
args: uintptr(unsafe.Pointer(&a1)),
|
args: uintptr(unsafe.Pointer(&a1)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.r1, call.r2, call.err
|
return call.r1, call.r2, call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -61,7 +61,7 @@ func syscall_chdir(path uintptr) (err uintptr) {
|
||||||
n: 1,
|
n: 1,
|
||||||
args: uintptr(unsafe.Pointer(&path)),
|
args: uintptr(unsafe.Pointer(&path)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.err
|
return call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -72,7 +72,7 @@ func syscall_chroot(path uintptr) (err uintptr) {
|
||||||
n: 1,
|
n: 1,
|
||||||
args: uintptr(unsafe.Pointer(&path)),
|
args: uintptr(unsafe.Pointer(&path)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.err
|
return call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -89,7 +89,7 @@ func syscall_execve(path, argv, envp uintptr) (err uintptr) {
|
||||||
n: 3,
|
n: 3,
|
||||||
args: uintptr(unsafe.Pointer(&path)),
|
args: uintptr(unsafe.Pointer(&path)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.err
|
return call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -106,7 +106,7 @@ func syscall_fcntl(fd, cmd, arg uintptr) (val, err uintptr) {
|
||||||
n: 3,
|
n: 3,
|
||||||
args: uintptr(unsafe.Pointer(&fd)),
|
args: uintptr(unsafe.Pointer(&fd)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.r1, call.err
|
return call.r1, call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -117,7 +117,7 @@ func syscall_forkx(flags uintptr) (pid uintptr, err uintptr) {
|
||||||
n: 1,
|
n: 1,
|
||||||
args: uintptr(unsafe.Pointer(&flags)),
|
args: uintptr(unsafe.Pointer(&flags)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.r1, call.err
|
return call.r1, call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -130,7 +130,7 @@ func syscall_gethostname() (name string, err uintptr) {
|
||||||
args: uintptr(unsafe.Pointer(&args[0])),
|
args: uintptr(unsafe.Pointer(&args[0])),
|
||||||
}
|
}
|
||||||
entersyscallblock(0)
|
entersyscallblock(0)
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
exitsyscall(0)
|
exitsyscall(0)
|
||||||
if call.r1 != 0 {
|
if call.r1 != 0 {
|
||||||
return "", call.err
|
return "", call.err
|
||||||
|
|
@ -146,7 +146,7 @@ func syscall_getpid() (pid, err uintptr) {
|
||||||
n: 0,
|
n: 0,
|
||||||
args: uintptr(unsafe.Pointer(&libc_getpid)), // it's unused but must be non-nil, otherwise crashes
|
args: uintptr(unsafe.Pointer(&libc_getpid)), // it's unused but must be non-nil, otherwise crashes
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.r1, call.err
|
return call.r1, call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -157,7 +157,7 @@ func syscall_ioctl(fd, req, arg uintptr) (err uintptr) {
|
||||||
n: 3,
|
n: 3,
|
||||||
args: uintptr(unsafe.Pointer(&fd)),
|
args: uintptr(unsafe.Pointer(&fd)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.err
|
return call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -168,7 +168,7 @@ func syscall_pipe() (r, w, err uintptr) {
|
||||||
args: uintptr(unsafe.Pointer(&pipe1)), // it's unused but must be non-nil, otherwise crashes
|
args: uintptr(unsafe.Pointer(&pipe1)), // it's unused but must be non-nil, otherwise crashes
|
||||||
}
|
}
|
||||||
entersyscallblock(0)
|
entersyscallblock(0)
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
exitsyscall(0)
|
exitsyscall(0)
|
||||||
return call.r1, call.r2, call.err
|
return call.r1, call.r2, call.err
|
||||||
}
|
}
|
||||||
|
|
@ -185,7 +185,7 @@ func syscall_rawsyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) {
|
||||||
n: 4,
|
n: 4,
|
||||||
args: uintptr(unsafe.Pointer(&trap)),
|
args: uintptr(unsafe.Pointer(&trap)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.r1, call.r2, call.err
|
return call.r1, call.r2, call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -196,7 +196,7 @@ func syscall_setgid(gid uintptr) (err uintptr) {
|
||||||
n: 1,
|
n: 1,
|
||||||
args: uintptr(unsafe.Pointer(&gid)),
|
args: uintptr(unsafe.Pointer(&gid)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.err
|
return call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -207,7 +207,7 @@ func syscall_setgroups(ngid, gid uintptr) (err uintptr) {
|
||||||
n: 2,
|
n: 2,
|
||||||
args: uintptr(unsafe.Pointer(&ngid)),
|
args: uintptr(unsafe.Pointer(&ngid)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.err
|
return call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -218,7 +218,7 @@ func syscall_setsid() (pid, err uintptr) {
|
||||||
n: 0,
|
n: 0,
|
||||||
args: uintptr(unsafe.Pointer(&libc_setsid)), // it's unused but must be non-nil, otherwise crashes
|
args: uintptr(unsafe.Pointer(&libc_setsid)), // it's unused but must be non-nil, otherwise crashes
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.r1, call.err
|
return call.r1, call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -229,7 +229,7 @@ func syscall_setuid(uid uintptr) (err uintptr) {
|
||||||
n: 1,
|
n: 1,
|
||||||
args: uintptr(unsafe.Pointer(&uid)),
|
args: uintptr(unsafe.Pointer(&uid)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.err
|
return call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -240,7 +240,7 @@ func syscall_setpgid(pid, pgid uintptr) (err uintptr) {
|
||||||
n: 2,
|
n: 2,
|
||||||
args: uintptr(unsafe.Pointer(&pid)),
|
args: uintptr(unsafe.Pointer(&pid)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.err
|
return call.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -257,7 +257,7 @@ func syscall_syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) {
|
||||||
args: uintptr(unsafe.Pointer(&trap)),
|
args: uintptr(unsafe.Pointer(&trap)),
|
||||||
}
|
}
|
||||||
entersyscallblock(0)
|
entersyscallblock(0)
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
exitsyscall(0)
|
exitsyscall(0)
|
||||||
return call.r1, call.r2, call.err
|
return call.r1, call.r2, call.err
|
||||||
}
|
}
|
||||||
|
|
@ -269,7 +269,7 @@ func syscall_wait4(pid uintptr, wstatus *uint32, options uintptr, rusage unsafe.
|
||||||
args: uintptr(unsafe.Pointer(&pid)),
|
args: uintptr(unsafe.Pointer(&pid)),
|
||||||
}
|
}
|
||||||
entersyscallblock(0)
|
entersyscallblock(0)
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
exitsyscall(0)
|
exitsyscall(0)
|
||||||
return int(call.r1), call.err
|
return int(call.r1), call.err
|
||||||
}
|
}
|
||||||
|
|
@ -281,6 +281,6 @@ func syscall_write(fd, buf, nbyte uintptr) (n, err uintptr) {
|
||||||
n: 3,
|
n: 3,
|
||||||
args: uintptr(unsafe.Pointer(&fd)),
|
args: uintptr(unsafe.Pointer(&fd)),
|
||||||
}
|
}
|
||||||
asmcgocall_errno(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
asmcgocall(unsafe.Pointer(&asmsysvicall6), unsafe.Pointer(&call))
|
||||||
return call.r1, call.err
|
return call.r1, call.err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ func syscall_loadlibrary(filename *uint16) (handle, err uintptr) {
|
||||||
c.fn = getLoadLibrary()
|
c.fn = getLoadLibrary()
|
||||||
c.n = 1
|
c.n = 1
|
||||||
c.args = uintptr(unsafe.Pointer(&filename))
|
c.args = uintptr(unsafe.Pointer(&filename))
|
||||||
cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
|
cgocall(asmstdcallAddr, unsafe.Pointer(&c))
|
||||||
handle = c.r1
|
handle = c.r1
|
||||||
if handle == 0 {
|
if handle == 0 {
|
||||||
err = c.err
|
err = c.err
|
||||||
|
|
@ -110,7 +110,7 @@ func syscall_getprocaddress(handle uintptr, procname *byte) (outhandle, err uint
|
||||||
c.fn = getGetProcAddress()
|
c.fn = getGetProcAddress()
|
||||||
c.n = 2
|
c.n = 2
|
||||||
c.args = uintptr(unsafe.Pointer(&handle))
|
c.args = uintptr(unsafe.Pointer(&handle))
|
||||||
cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
|
cgocall(asmstdcallAddr, unsafe.Pointer(&c))
|
||||||
outhandle = c.r1
|
outhandle = c.r1
|
||||||
if outhandle == 0 {
|
if outhandle == 0 {
|
||||||
err = c.err
|
err = c.err
|
||||||
|
|
@ -125,7 +125,7 @@ func syscall_Syscall(fn, nargs, a1, a2, a3 uintptr) (r1, r2, err uintptr) {
|
||||||
c.fn = fn
|
c.fn = fn
|
||||||
c.n = nargs
|
c.n = nargs
|
||||||
c.args = uintptr(unsafe.Pointer(&a1))
|
c.args = uintptr(unsafe.Pointer(&a1))
|
||||||
cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
|
cgocall(asmstdcallAddr, unsafe.Pointer(&c))
|
||||||
return c.r1, c.r2, c.err
|
return c.r1, c.r2, c.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -136,7 +136,7 @@ func syscall_Syscall6(fn, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err ui
|
||||||
c.fn = fn
|
c.fn = fn
|
||||||
c.n = nargs
|
c.n = nargs
|
||||||
c.args = uintptr(unsafe.Pointer(&a1))
|
c.args = uintptr(unsafe.Pointer(&a1))
|
||||||
cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
|
cgocall(asmstdcallAddr, unsafe.Pointer(&c))
|
||||||
return c.r1, c.r2, c.err
|
return c.r1, c.r2, c.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -147,7 +147,7 @@ func syscall_Syscall9(fn, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1
|
||||||
c.fn = fn
|
c.fn = fn
|
||||||
c.n = nargs
|
c.n = nargs
|
||||||
c.args = uintptr(unsafe.Pointer(&a1))
|
c.args = uintptr(unsafe.Pointer(&a1))
|
||||||
cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
|
cgocall(asmstdcallAddr, unsafe.Pointer(&c))
|
||||||
return c.r1, c.r2, c.err
|
return c.r1, c.r2, c.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -158,7 +158,7 @@ func syscall_Syscall12(fn, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
|
||||||
c.fn = fn
|
c.fn = fn
|
||||||
c.n = nargs
|
c.n = nargs
|
||||||
c.args = uintptr(unsafe.Pointer(&a1))
|
c.args = uintptr(unsafe.Pointer(&a1))
|
||||||
cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
|
cgocall(asmstdcallAddr, unsafe.Pointer(&c))
|
||||||
return c.r1, c.r2, c.err
|
return c.r1, c.r2, c.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -169,6 +169,6 @@ func syscall_Syscall15(fn, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
|
||||||
c.fn = fn
|
c.fn = fn
|
||||||
c.n = nargs
|
c.n = nargs
|
||||||
c.args = uintptr(unsafe.Pointer(&a1))
|
c.args = uintptr(unsafe.Pointer(&a1))
|
||||||
cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
|
cgocall(asmstdcallAddr, unsafe.Pointer(&c))
|
||||||
return c.r1, c.r2, c.err
|
return c.r1, c.r2, c.err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue