Source file
src/runtime/cgo/cgo_linux.go
1
2
3
4
5
6
7 package cgo
8
9 import "unsafe"
10
11
12 var _libc_mmap byte
13 var libc_mmap = unsafe.Pointer(&_libc_mmap)
14
15
16 var _libc_munmap byte
17 var libc_munmap = unsafe.Pointer(&_libc_munmap)
18
19
20 var _libc_errno_location byte
21 var libc_errno_location = unsafe.Pointer(&_libc_errno_location)
22
23
24 var _cgoMmapFn = cgoMmapFn
25
26
27
28
29 func cgoMmapFn(addr unsafe.Pointer, length uintptr, prot, flags, fd int32, offset uint32) uintptr {
30 tsanAcquire()
31 p := callC(uintptr(libc_mmap), uintptr(addr), length, uintptr(uint32(prot)), uintptr(uint32(flags)), uintptr(fd), uintptr(offset))
32 if int(p) == -1 {
33 errnoPtr := callC(uintptr(libc_errno_location), 0, 0, 0, 0, 0, 0)
34 errno := uintptr(*(*int32)(unsafe.Pointer(errnoPtr)))
35 tsanRelease()
36 return errno
37 }
38 tsanRelease()
39 return p
40 }
41
42
43 var _cgoMunmapFn = cgoMunmapFn
44
45
46
47 func cgoMunmapFn(addr unsafe.Pointer, length uintptr) int32 {
48 tsanAcquire()
49 r := int32(callC(uintptr(libc_munmap), uintptr(addr), length, 0, 0, 0, 0))
50 tsanRelease()
51 return r
52 }
53
54
55
56
57
58
59
60
61
View as plain text