_GetQueuedCompletionStatusEx stdFunction
)
+// Call a Windows function with stdcall conventions,
+// and switch to os stack during the call.
+func asmstdcall(fn unsafe.Pointer)
+
+var asmstdcallAddr unsafe.Pointer
+
func loadOptionalSyscalls() {
var buf [50]byte // large enough for longest string
strtoptr := func(s string) uintptr {
}
func osinit() {
+ asmstdcallAddr = unsafe.Pointer(funcPC(asmstdcall))
+
setBadSignalMsg()
loadOptionalSyscalls()
// all three values to be non-zero, it will use them
mp.libcallsp = getcallersp(unsafe.Pointer(&fn))
}
- asmcgocall(unsafe.Pointer(funcPC(asmstdcall)), unsafe.Pointer(&mp.libcall))
+ asmcgocall(asmstdcallAddr, unsafe.Pointer(&mp.libcall))
mp.libcallsp = 0
return mp.libcall.r1
}
package runtime
-import "unsafe"
-
-// Call a Windows function with stdcall conventions,
-// and switch to os stack during the call.
-func asmstdcall(fn unsafe.Pointer)
-
func getlasterror() uint32
func setlasterror(err uint32)
c.fn = getLoadLibrary()
c.n = 1
c.args = uintptr(unsafe.Pointer(&filename))
- cgocall_errno(unsafe.Pointer(funcPC(asmstdcall)), unsafe.Pointer(&c))
+ cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
handle = c.r1
if handle == 0 {
err = c.err
c.fn = getGetProcAddress()
c.n = 2
c.args = uintptr(unsafe.Pointer(&handle))
- cgocall_errno(unsafe.Pointer(funcPC(asmstdcall)), unsafe.Pointer(&c))
+ cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
outhandle = c.r1
if outhandle == 0 {
err = c.err
c.fn = fn
c.n = nargs
c.args = uintptr(unsafe.Pointer(&a1))
- cgocall_errno(unsafe.Pointer(funcPC(asmstdcall)), unsafe.Pointer(&c))
+ cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
return c.r1, c.r2, c.err
}
c.fn = fn
c.n = nargs
c.args = uintptr(unsafe.Pointer(&a1))
- cgocall_errno(unsafe.Pointer(funcPC(asmstdcall)), unsafe.Pointer(&c))
+ cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
return c.r1, c.r2, c.err
}
c.fn = fn
c.n = nargs
c.args = uintptr(unsafe.Pointer(&a1))
- cgocall_errno(unsafe.Pointer(funcPC(asmstdcall)), unsafe.Pointer(&c))
+ cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
return c.r1, c.r2, c.err
}
c.fn = fn
c.n = nargs
c.args = uintptr(unsafe.Pointer(&a1))
- cgocall_errno(unsafe.Pointer(funcPC(asmstdcall)), unsafe.Pointer(&c))
+ cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
return c.r1, c.r2, c.err
}
c.fn = fn
c.n = nargs
c.args = uintptr(unsafe.Pointer(&a1))
- cgocall_errno(unsafe.Pointer(funcPC(asmstdcall)), unsafe.Pointer(&c))
+ cgocall_errno(asmstdcallAddr, unsafe.Pointer(&c))
return c.r1, c.r2, c.err
}