X7ROOT File Manager
Current Path:
/opt/golang/1.17.2/src/runtime
opt
/
golang
/
1.17.2
/
src
/
runtime
/
๐
..
๐
HACKING.md
(13.07 KB)
๐
Makefile
(178 B)
๐
abi_test.go
(2.88 KB)
๐
alg.go
(9.45 KB)
๐
asm.s
(715 B)
๐
asm_386.s
(40.27 KB)
๐
asm_amd64.s
(56.93 KB)
๐
asm_arm.s
(30.23 KB)
๐
asm_arm64.s
(33 KB)
๐
asm_mips64x.s
(22.43 KB)
๐
asm_mipsx.s
(24.39 KB)
๐
asm_ppc64x.h
(1023 B)
๐
asm_ppc64x.s
(29.16 KB)
๐
asm_riscv64.s
(22.43 KB)
๐
asm_s390x.s
(26.04 KB)
๐
asm_wasm.s
(9.8 KB)
๐
atomic_arm64.s
(259 B)
๐
atomic_mips64x.s
(326 B)
๐
atomic_mipsx.s
(284 B)
๐
atomic_pointer.go
(2.62 KB)
๐
atomic_ppc64x.s
(461 B)
๐
atomic_riscv64.s
(275 B)
๐
auxv_none.go
(360 B)
๐
callers_test.go
(7.72 KB)
๐
cgo
๐
cgo.go
(2.01 KB)
๐
cgo_mmap.go
(2.42 KB)
๐
cgo_ppc64x.go
(439 B)
๐
cgo_sigaction.go
(3.17 KB)
๐
cgocall.go
(18.88 KB)
๐
cgocallback.go
(317 B)
๐
cgocheck.go
(6.83 KB)
๐
chan.go
(23.54 KB)
๐
chan_test.go
(23.01 KB)
๐
chanbarrier_test.go
(1.4 KB)
๐
checkptr.go
(3.29 KB)
๐
checkptr_test.go
(1.62 KB)
๐
closure_test.go
(937 B)
๐
compiler.go
(413 B)
๐
complex.go
(1.59 KB)
๐
complex_test.go
(1.05 KB)
๐
conv_wasm_test.go
(2.96 KB)
๐
cpuflags.go
(800 B)
๐
cpuflags_amd64.go
(533 B)
๐
cpuflags_arm64.go
(334 B)
๐
cpuprof.go
(6.92 KB)
๐
cputicks.go
(497 B)
๐
crash_cgo_test.go
(16.17 KB)
๐
crash_nonunix_test.go
(429 B)
๐
crash_test.go
(20.96 KB)
๐
crash_unix_test.go
(8.52 KB)
๐
debug
๐
debug.go
(1.63 KB)
๐
debug_test.go
(6.82 KB)
๐
debugcall.go
(6.21 KB)
๐
debuglog.go
(17.49 KB)
๐
debuglog_off.go
(377 B)
๐
debuglog_on.go
(1.11 KB)
๐
debuglog_test.go
(4.56 KB)
๐
defer_test.go
(10.32 KB)
๐
defs1_linux.go
(862 B)
๐
defs1_netbsd_386.go
(2.84 KB)
๐
defs1_netbsd_amd64.go
(3.07 KB)
๐
defs1_netbsd_arm.go
(2.96 KB)
๐
defs1_netbsd_arm64.go
(3.18 KB)
๐
defs1_solaris_amd64.go
(4.02 KB)
๐
defs2_linux.go
(3.52 KB)
๐
defs3_linux.go
(1.11 KB)
๐
defs_aix.go
(4.18 KB)
๐
defs_aix_ppc64.go
(3.63 KB)
๐
defs_arm_linux.go
(2.69 KB)
๐
defs_darwin.go
(3.79 KB)
๐
defs_darwin_amd64.go
(6.07 KB)
๐
defs_darwin_arm64.go
(3.89 KB)
๐
defs_dragonfly.go
(2.63 KB)
๐
defs_dragonfly_amd64.go
(3.31 KB)
๐
defs_freebsd.go
(3.86 KB)
๐
defs_freebsd_386.go
(4.38 KB)
๐
defs_freebsd_amd64.go
(4.65 KB)
๐
defs_freebsd_arm.go
(3.71 KB)
๐
defs_freebsd_arm64.go
(4.03 KB)
๐
defs_illumos_amd64.go
(285 B)
๐
defs_linux.go
(3.05 KB)
๐
defs_linux_386.go
(3.77 KB)
๐
defs_linux_amd64.go
(4.28 KB)
๐
defs_linux_arm.go
(3.45 KB)
๐
defs_linux_arm64.go
(3.21 KB)
๐
defs_linux_mips64x.go
(3.24 KB)
๐
defs_linux_mipsx.go
(3.21 KB)
๐
defs_linux_ppc64.go
(3.28 KB)
๐
defs_linux_ppc64le.go
(3.28 KB)
๐
defs_linux_riscv64.go
(3.27 KB)
๐
defs_linux_s390x.go
(2.76 KB)
๐
defs_netbsd.go
(2.76 KB)
๐
defs_netbsd_386.go
(872 B)
๐
defs_netbsd_amd64.go
(1.03 KB)
๐
defs_netbsd_arm.go
(781 B)
๐
defs_openbsd.go
(3.1 KB)
๐
defs_openbsd_386.go
(2.89 KB)
๐
defs_openbsd_amd64.go
(3.09 KB)
๐
defs_openbsd_arm.go
(3 KB)
๐
defs_openbsd_arm64.go
(2.76 KB)
๐
defs_openbsd_mips64.go
(2.66 KB)
๐
defs_plan9_386.go
(1.63 KB)
๐
defs_plan9_amd64.go
(1.82 KB)
๐
defs_plan9_arm.go
(1.73 KB)
๐
defs_solaris.go
(3.35 KB)
๐
defs_solaris_amd64.go
(1021 B)
๐
defs_windows.go
(2.09 KB)
๐
defs_windows_386.go
(1.98 KB)
๐
defs_windows_amd64.go
(2.71 KB)
๐
defs_windows_arm.go
(2.11 KB)
๐
defs_windows_arm64.go
(2.63 KB)
๐
duff_386.s
(8.24 KB)
๐
duff_amd64.s
(5.62 KB)
๐
duff_arm.s
(7.11 KB)
๐
duff_arm64.s
(5.25 KB)
๐
duff_mips64x.s
(11.31 KB)
๐
duff_ppc64x.s
(2.43 KB)
๐
duff_riscv64.s
(11.38 KB)
๐
duff_s390x.s
(507 B)
๐
env_plan9.go
(2.99 KB)
๐
env_posix.go
(1.95 KB)
๐
env_test.go
(1.16 KB)
๐
error.go
(9.23 KB)
๐
example_test.go
(1.55 KB)
๐
export_aix_test.go
(204 B)
๐
export_arm_test.go
(226 B)
๐
export_darwin_test.go
(351 B)
๐
export_debug_regabiargs_off_test.go
(416 B)
๐
export_debug_regabiargs_on_test.go
(1.39 KB)
๐
export_debug_test.go
(5.86 KB)
๐
export_debuglog_test.go
(1.27 KB)
๐
export_futex_test.go
(570 B)
๐
export_linux_test.go
(429 B)
๐
export_mmap_test.go
(571 B)
๐
export_pipe2_test.go
(436 B)
๐
export_pipe_test.go
(240 B)
๐
export_solaris_test.go
(282 B)
๐
export_test.go
(30.12 KB)
๐
export_unix_test.go
(2.35 KB)
๐
export_windows_test.go
(652 B)
๐
extern.go
(12.58 KB)
๐
fastlog2.go
(1.22 KB)
๐
fastlog2_test.go
(784 B)
๐
fastlog2table.go
(904 B)
๐
float.go
(1.35 KB)
๐
funcdata.h
(2.47 KB)
๐
futex_test.go
(2.15 KB)
๐
gc_test.go
(19.21 KB)
๐
gcinfo_test.go
(5.69 KB)
๐
go_tls.h
(366 B)
๐
hash32.go
(1.61 KB)
๐
hash64.go
(2.01 KB)
๐
hash_test.go
(16.5 KB)
๐
heapdump.go
(17.74 KB)
๐
histogram.go
(6.42 KB)
๐
histogram_test.go
(1.85 KB)
๐
iface.go
(16.13 KB)
๐
iface_test.go
(7.51 KB)
๐
internal
๐
lfstack.go
(1.77 KB)
๐
lfstack_32bit.go
(562 B)
๐
lfstack_64bit.go
(2.24 KB)
๐
lfstack_test.go
(2.78 KB)
๐
libfuzzer.go
(2.6 KB)
๐
libfuzzer_amd64.s
(961 B)
๐
libfuzzer_arm64.s
(772 B)
๐
lock_futex.go
(5.22 KB)
๐
lock_js.go
(5.81 KB)
๐
lock_sema.go
(6.8 KB)
๐
lockrank.go
(11.62 KB)
๐
lockrank_off.go
(1.17 KB)
๐
lockrank_on.go
(9.84 KB)
๐
lockrank_test.go
(1.15 KB)
๐
malloc.go
(52.33 KB)
๐
malloc_test.go
(10.83 KB)
๐
map.go
(42.47 KB)
๐
map_benchmark_test.go
(10.51 KB)
๐
map_fast32.go
(12.63 KB)
๐
map_fast64.go
(12.82 KB)
๐
map_faststr.go
(14.15 KB)
๐
map_test.go
(27.52 KB)
๐
mbarrier.go
(12.2 KB)
๐
mbitmap.go
(65.27 KB)
๐
mcache.go
(9.68 KB)
๐
mcentral.go
(7.8 KB)
๐
mcheckmark.go
(2.81 KB)
๐
mem_aix.go
(1.94 KB)
๐
mem_bsd.go
(2.12 KB)
๐
mem_darwin.go
(1.88 KB)
๐
mem_js.go
(2.35 KB)
๐
mem_linux.go
(5.59 KB)
๐
mem_plan9.go
(4.53 KB)
๐
mem_windows.go
(3.87 KB)
๐
memclr_386.s
(2.42 KB)
๐
memclr_amd64.s
(3.89 KB)
๐
memclr_arm.s
(2.6 KB)
๐
memclr_arm64.s
(3.65 KB)
๐
memclr_mips64x.s
(1.75 KB)
๐
memclr_mipsx.s
(1.35 KB)
๐
memclr_plan9_386.s
(983 B)
๐
memclr_plan9_amd64.s
(511 B)
๐
memclr_ppc64x.s
(4.31 KB)
๐
memclr_riscv64.s
(926 B)
๐
memclr_s390x.s
(1.96 KB)
๐
memclr_wasm.s
(622 B)
๐
memmove_386.s
(4.46 KB)
๐
memmove_amd64.s
(12.66 KB)
๐
memmove_arm.s
(5.9 KB)
๐
memmove_arm64.s
(6 KB)
๐
memmove_linux_amd64_test.go
(1.6 KB)
๐
memmove_mips64x.s
(1.85 KB)
๐
memmove_mipsx.s
(4.42 KB)
๐
memmove_plan9_386.s
(3.06 KB)
๐
memmove_plan9_amd64.s
(3.04 KB)
๐
memmove_ppc64x.s
(4.11 KB)
๐
memmove_riscv64.s
(1.81 KB)
๐
memmove_s390x.s
(2.92 KB)
๐
memmove_test.go
(12.04 KB)
๐
memmove_wasm.s
(1.74 KB)
๐
metrics
๐
metrics.go
(17.69 KB)
๐
metrics_test.go
(12.48 KB)
๐
mfinal.go
(15.76 KB)
๐
mfinal_test.go
(5.85 KB)
๐
mfixalloc.go
(2.73 KB)
๐
mgc.go
(55.18 KB)
๐
mgcmark.go
(45.54 KB)
๐
mgcpacer.go
(29.56 KB)
๐
mgcscavenge.go
(35.05 KB)
๐
mgcscavenge_test.go
(12.74 KB)
๐
mgcstack.go
(10.58 KB)
๐
mgcsweep.go
(23.56 KB)
๐
mgcwork.go
(12.82 KB)
๐
mheap.go
(66.31 KB)
๐
mkduff.go
(7.19 KB)
๐
mkfastlog2table.go
(1.32 KB)
๐
mkpreempt.go
(14.17 KB)
๐
mksizeclasses.go
(9.31 KB)
๐
mmap.go
(990 B)
๐
mpagealloc.go
(36.77 KB)
๐
mpagealloc_32bit.go
(3.81 KB)
๐
mpagealloc_64bit.go
(6.65 KB)
๐
mpagealloc_test.go
(32.38 KB)
๐
mpagecache.go
(5.28 KB)
๐
mpagecache_test.go
(9.93 KB)
๐
mpallocbits.go
(12.01 KB)
๐
mpallocbits_test.go
(13.69 KB)
๐
mprof.go
(25.82 KB)
๐
mranges.go
(11.84 KB)
๐
mranges_test.go
(5.68 KB)
๐
msan
๐
msan.go
(1.51 KB)
๐
msan0.go
(741 B)
๐
msan_amd64.s
(2.32 KB)
๐
msan_arm64.s
(2.01 KB)
๐
msize.go
(777 B)
๐
mspanset.go
(12.2 KB)
๐
mstats.go
(30.65 KB)
๐
mwbbuf.go
(9.3 KB)
๐
nbpipe_fcntl_libc_test.go
(499 B)
๐
nbpipe_fcntl_unix_test.go
(507 B)
๐
nbpipe_pipe.go
(426 B)
๐
nbpipe_pipe2.go
(592 B)
๐
nbpipe_test.go
(2.26 KB)
๐
net_plan9.go
(645 B)
๐
netpoll.go
(16.24 KB)
๐
netpoll_aix.go
(4.87 KB)
๐
netpoll_epoll.go
(4.21 KB)
๐
netpoll_fake.go
(670 B)
๐
netpoll_kqueue.go
(4.64 KB)
๐
netpoll_os_test.go
(360 B)
๐
netpoll_solaris.go
(10.75 KB)
๐
netpoll_stub.go
(1.42 KB)
๐
netpoll_windows.go
(3.75 KB)
๐
norace_linux_test.go
(905 B)
๐
norace_test.go
(996 B)
๐
numcpu_freebsd_test.go
(381 B)
๐
os2_aix.go
(20.45 KB)
๐
os2_freebsd.go
(302 B)
๐
os2_openbsd.go
(296 B)
๐
os2_plan9.go
(1.48 KB)
๐
os2_solaris.go
(320 B)
๐
os3_plan9.go
(3.88 KB)
๐
os3_solaris.go
(17.02 KB)
๐
os_aix.go
(8.06 KB)
๐
os_android.go
(463 B)
๐
os_darwin.go
(11.54 KB)
๐
os_darwin_arm64.go
(416 B)
๐
os_dragonfly.go
(6.46 KB)
๐
os_freebsd.go
(11.2 KB)
๐
os_freebsd2.go
(507 B)
๐
os_freebsd_amd64.go
(529 B)
๐
os_freebsd_arm.go
(1.32 KB)
๐
os_freebsd_arm64.go
(398 B)
๐
os_freebsd_noauxv.go
(264 B)
๐
os_illumos.go
(3.93 KB)
๐
os_js.go
(3.26 KB)
๐
os_linux.go
(13.47 KB)
๐
os_linux_arm.go
(1.35 KB)
๐
os_linux_arm64.go
(572 B)
๐
os_linux_be64.go
(862 B)
๐
os_linux_generic.go
(950 B)
๐
os_linux_mips64x.go
(1.11 KB)
๐
os_linux_mipsx.go
(1.09 KB)
๐
os_linux_noauxv.go
(408 B)
๐
os_linux_novdso.go
(387 B)
๐
os_linux_ppc64x.go
(566 B)
๐
os_linux_riscv64.go
(198 B)
๐
os_linux_s390x.go
(316 B)
๐
os_linux_x86.go
(270 B)
๐
os_netbsd.go
(9.09 KB)
๐
os_netbsd_386.go
(588 B)
๐
os_netbsd_amd64.go
(585 B)
๐
os_netbsd_arm.go
(1.13 KB)
๐
os_netbsd_arm64.go
(827 B)
๐
os_nonopenbsd.go
(456 B)
๐
os_only_solaris.go
(376 B)
๐
os_openbsd.go
(6.01 KB)
๐
os_openbsd_arm.go
(749 B)
๐
os_openbsd_arm64.go
(416 B)
๐
os_openbsd_libc.go
(1.7 KB)
๐
os_openbsd_mips64.go
(416 B)
๐
os_openbsd_syscall.go
(1.27 KB)
๐
os_openbsd_syscall1.go
(466 B)
๐
os_openbsd_syscall2.go
(2.5 KB)
๐
os_plan9.go
(10.2 KB)
๐
os_plan9_arm.go
(462 B)
๐
os_solaris.go
(6.49 KB)
๐
os_windows.go
(43.68 KB)
๐
os_windows_arm.go
(511 B)
๐
os_windows_arm64.go
(339 B)
๐
panic.go
(44.28 KB)
๐
panic32.go
(4.83 KB)
๐
panic_test.go
(1.71 KB)
๐
plugin.go
(4.27 KB)
๐
pprof
๐
preempt.go
(15.4 KB)
๐
preempt_386.s
(1.07 KB)
๐
preempt_amd64.s
(1.81 KB)
๐
preempt_arm.s
(1.66 KB)
๐
preempt_arm64.s
(2.99 KB)
๐
preempt_mips64x.s
(2.93 KB)
๐
preempt_mipsx.s
(2.89 KB)
๐
preempt_nonwindows.go
(309 B)
๐
preempt_ppc64x.s
(2.92 KB)
๐
preempt_riscv64.s
(2.48 KB)
๐
preempt_s390x.s
(1.19 KB)
๐
preempt_wasm.s
(365 B)
๐
print.go
(5.95 KB)
๐
proc.go
(181.46 KB)
๐
proc_runtime_test.go
(820 B)
๐
proc_test.go
(25.02 KB)
๐
profbuf.go
(18.26 KB)
๐
profbuf_test.go
(8.65 KB)
๐
proflabel.go
(1.52 KB)
๐
race
๐
race.go
(18.56 KB)
๐
race0.go
(2.81 KB)
๐
race_amd64.s
(14.46 KB)
๐
race_arm64.s
(13.71 KB)
๐
race_ppc64le.s
(17.72 KB)
๐
rand_test.go
(783 B)
๐
rdebug.go
(553 B)
๐
relax_stub.go
(617 B)
๐
rt0_aix_ppc64.s
(4.33 KB)
๐
rt0_android_386.s
(822 B)
๐
rt0_android_amd64.s
(754 B)
๐
rt0_android_arm.s
(843 B)
๐
rt0_android_arm64.s
(941 B)
๐
rt0_darwin_amd64.s
(399 B)
๐
rt0_darwin_arm64.s
(2.27 KB)
๐
rt0_dragonfly_amd64.s
(448 B)
๐
rt0_freebsd_386.s
(454 B)
๐
rt0_freebsd_amd64.s
(442 B)
๐
rt0_freebsd_arm.s
(298 B)
๐
rt0_freebsd_arm64.s
(2.46 KB)
๐
rt0_illumos_amd64.s
(311 B)
๐
rt0_ios_amd64.s
(425 B)
๐
rt0_ios_arm64.s
(425 B)
๐
rt0_js_wasm.s
(2.3 KB)
๐
rt0_linux_386.s
(450 B)
๐
rt0_linux_amd64.s
(307 B)
๐
rt0_linux_arm.s
(1007 B)
๐
rt0_linux_arm64.s
(2.39 KB)
๐
rt0_linux_mips64x.s
(1.03 KB)
๐
rt0_linux_mipsx.s
(835 B)
๐
rt0_linux_ppc64.s
(865 B)
๐
rt0_linux_ppc64le.s
(3.88 KB)
๐
rt0_linux_riscv64.s
(370 B)
๐
rt0_linux_s390x.s
(676 B)
๐
rt0_netbsd_386.s
(452 B)
๐
rt0_netbsd_amd64.s
(309 B)
๐
rt0_netbsd_arm.s
(296 B)
๐
rt0_netbsd_arm64.s
(2.38 KB)
๐
rt0_openbsd_386.s
(454 B)
๐
rt0_openbsd_amd64.s
(311 B)
๐
rt0_openbsd_arm.s
(298 B)
๐
rt0_openbsd_arm64.s
(2.54 KB)
๐
rt0_openbsd_mips64.s
(976 B)
๐
rt0_plan9_386.s
(523 B)
๐
rt0_plan9_amd64.s
(481 B)
๐
rt0_plan9_arm.s
(397 B)
๐
rt0_solaris_amd64.s
(311 B)
๐
rt0_windows_386.s
(1.28 KB)
๐
rt0_windows_amd64.s
(986 B)
๐
rt0_windows_arm.s
(386 B)
๐
rt0_windows_arm64.s
(725 B)
๐
runtime-gdb.py
(15.02 KB)
๐
runtime-gdb_test.go
(20.19 KB)
๐
runtime-lldb_test.go
(4.95 KB)
๐
runtime.go
(1.42 KB)
๐
runtime1.go
(12.63 KB)
๐
runtime2.go
(42.27 KB)
๐
runtime_linux_test.go
(1.46 KB)
๐
runtime_mmap_test.go
(1.91 KB)
๐
runtime_test.go
(7.81 KB)
๐
runtime_unix_test.go
(1.29 KB)
๐
rwmutex.go
(3.53 KB)
๐
rwmutex_test.go
(4.03 KB)
๐
select.go
(14.45 KB)
๐
sema.go
(16.08 KB)
๐
sema_test.go
(2.5 KB)
๐
semasleep_test.go
(1.65 KB)
๐
sigaction.go
(543 B)
๐
signal_386.go
(1.72 KB)
๐
signal_aix_ppc64.go
(3.56 KB)
๐
signal_amd64.go
(2.71 KB)
๐
signal_arm.go
(2.56 KB)
๐
signal_arm64.go
(3.16 KB)
๐
signal_darwin.go
(2.13 KB)
๐
signal_darwin_amd64.go
(3.85 KB)
๐
signal_darwin_arm64.go
(3.6 KB)
๐
signal_dragonfly.go
(2.17 KB)
๐
signal_dragonfly_amd64.go
(2.01 KB)
๐
signal_freebsd.go
(2.2 KB)
๐
signal_freebsd_386.go
(1.55 KB)
๐
signal_freebsd_amd64.go
(2.03 KB)
๐
signal_freebsd_arm.go
(2.18 KB)
๐
signal_freebsd_arm64.go
(3.23 KB)
๐
signal_linux_386.go
(1.59 KB)
๐
signal_linux_amd64.go
(2.05 KB)
๐
signal_linux_arm.go
(2.13 KB)
๐
signal_linux_arm64.go
(2.95 KB)
๐
signal_linux_mips64x.go
(3.39 KB)
๐
signal_linux_mipsx.go
(3.7 KB)
๐
signal_linux_ppc64x.go
(3.46 KB)
๐
signal_linux_riscv64.go
(2.92 KB)
๐
signal_linux_s390x.go
(4.43 KB)
๐
signal_mips64x.go
(3.2 KB)
๐
signal_mipsx.go
(3.07 KB)
๐
signal_netbsd.go
(2.18 KB)
๐
signal_netbsd_386.go
(1.76 KB)
๐
signal_netbsd_amd64.go
(2.33 KB)
๐
signal_netbsd_arm.go
(2.3 KB)
๐
signal_netbsd_arm64.go
(3.4 KB)
๐
signal_openbsd.go
(2.18 KB)
๐
signal_openbsd_386.go
(1.58 KB)
๐
signal_openbsd_amd64.go
(2.04 KB)
๐
signal_openbsd_arm.go
(2.12 KB)
๐
signal_openbsd_arm64.go
(3.38 KB)
๐
signal_openbsd_mips64.go
(3.28 KB)
๐
signal_plan9.go
(1.93 KB)
๐
signal_ppc64x.go
(3.64 KB)
๐
signal_riscv64.go
(2.88 KB)
๐
signal_solaris.go
(4.5 KB)
๐
signal_solaris_amd64.go
(2.47 KB)
๐
signal_unix.go
(37.82 KB)
๐
signal_windows.go
(9.2 KB)
๐
signal_windows_test.go
(5.73 KB)
๐
sigqueue.go
(8.76 KB)
๐
sigqueue_note.go
(673 B)
๐
sigqueue_plan9.go
(3.39 KB)
๐
sigtab_aix.go
(11.3 KB)
๐
sigtab_linux_generic.go
(3.56 KB)
๐
sigtab_linux_mipsx.go
(6.01 KB)
๐
sizeclasses.go
(9.14 KB)
๐
sizeof_test.go
(905 B)
๐
slice.go
(8.94 KB)
๐
slice_test.go
(10.32 KB)
๐
softfloat64.go
(10.78 KB)
๐
softfloat64_test.go
(4.05 KB)
๐
stack.go
(41.92 KB)
๐
stack_test.go
(21.05 KB)
๐
string.go
(10.85 KB)
๐
string_test.go
(9.62 KB)
๐
stubs.go
(18.17 KB)
๐
stubs2.go
(1.14 KB)
๐
stubs3.go
(331 B)
๐
stubs_386.go
(550 B)
๐
stubs_amd64.go
(1.2 KB)
๐
stubs_arm.go
(531 B)
๐
stubs_arm64.go
(351 B)
๐
stubs_linux.go
(663 B)
๐
stubs_mips64x.go
(390 B)
๐
stubs_mipsx.go
(305 B)
๐
stubs_nonlinux.go
(315 B)
๐
stubs_ppc64.go
(383 B)
๐
stubs_ppc64le.go
(271 B)
๐
stubs_s390x.go
(256 B)
๐
symtab.go
(32.29 KB)
๐
symtab_test.go
(6.78 KB)
๐
sys_aix_ppc64.s
(7.13 KB)
๐
sys_arm.go
(521 B)
๐
sys_arm64.go
(469 B)
๐
sys_darwin.go
(15.91 KB)
๐
sys_darwin_amd64.s
(18.52 KB)
๐
sys_darwin_arm64.go
(1.68 KB)
๐
sys_darwin_arm64.s
(17.23 KB)
๐
sys_dragonfly_amd64.s
(8.42 KB)
๐
sys_freebsd_386.s
(8.98 KB)
๐
sys_freebsd_amd64.s
(10.55 KB)
๐
sys_freebsd_arm.s
(10.69 KB)
๐
sys_freebsd_arm64.s
(10.33 KB)
๐
sys_libc.go
(1.87 KB)
๐
sys_linux_386.s
(18.17 KB)
๐
sys_linux_amd64.s
(16.25 KB)
๐
sys_linux_arm.s
(15.84 KB)
๐
sys_linux_arm64.s
(15.26 KB)
๐
sys_linux_mips64x.s
(13.4 KB)
๐
sys_linux_mipsx.s
(11.16 KB)
๐
sys_linux_ppc64x.s
(21.48 KB)
๐
sys_linux_riscv64.s
(10.35 KB)
๐
sys_linux_s390x.s
(10.52 KB)
๐
sys_mips64x.go
(526 B)
๐
sys_mipsx.go
(518 B)
๐
sys_netbsd_386.s
(10.13 KB)
๐
sys_netbsd_amd64.s
(9.91 KB)
๐
sys_netbsd_arm.s
(10.94 KB)
๐
sys_netbsd_arm64.s
(10.42 KB)
๐
sys_nonppc64x.go
(271 B)
๐
sys_openbsd.go
(2.3 KB)
๐
sys_openbsd1.go
(1.16 KB)
๐
sys_openbsd2.go
(7.31 KB)
๐
sys_openbsd3.go
(3.29 KB)
๐
sys_openbsd_386.s
(19.97 KB)
๐
sys_openbsd_amd64.s
(16.44 KB)
๐
sys_openbsd_arm.s
(18.09 KB)
๐
sys_openbsd_arm64.s
(15.92 KB)
๐
sys_openbsd_mips64.s
(9.22 KB)
๐
sys_plan9_386.s
(4.4 KB)
๐
sys_plan9_amd64.s
(4.47 KB)
๐
sys_plan9_arm.s
(7.03 KB)
๐
sys_ppc64x.go
(556 B)
๐
sys_riscv64.go
(469 B)
๐
sys_s390x.go
(469 B)
๐
sys_solaris_amd64.s
(6.69 KB)
๐
sys_wasm.go
(732 B)
๐
sys_wasm.s
(2.65 KB)
๐
sys_windows_386.s
(7.74 KB)
๐
sys_windows_amd64.s
(9.16 KB)
๐
sys_windows_arm.s
(12.02 KB)
๐
sys_windows_arm64.s
(12.51 KB)
๐
sys_x86.go
(574 B)
๐
syscall2_solaris.go
(1.65 KB)
๐
syscall_aix.go
(5.99 KB)
๐
syscall_solaris.go
(8.26 KB)
๐
syscall_windows.go
(16.48 KB)
๐
syscall_windows_test.go
(32.53 KB)
๐
testdata
๐
textflag.h
(1.52 KB)
๐
time.go
(30.56 KB)
๐
time_fake.go
(2.38 KB)
๐
time_linux_amd64.s
(2.18 KB)
๐
time_nofake.go
(587 B)
๐
time_test.go
(2.03 KB)
๐
time_windows.h
(694 B)
๐
time_windows_386.s
(1.81 KB)
๐
time_windows_amd64.s
(1.07 KB)
๐
time_windows_arm.s
(2.07 KB)
๐
time_windows_arm64.s
(1.33 KB)
๐
timeasm.go
(468 B)
๐
timestub.go
(595 B)
๐
timestub2.go
(447 B)
๐
tls_arm.s
(3.33 KB)
๐
tls_arm64.h
(1.22 KB)
๐
tls_arm64.s
(1.2 KB)
๐
tls_mips64x.s
(759 B)
๐
tls_mipsx.s
(731 B)
๐
tls_ppc64x.s
(1.52 KB)
๐
tls_riscv64.s
(726 B)
๐
tls_s390x.s
(1.55 KB)
๐
tls_stub.go
(294 B)
๐
tls_windows_amd64.go
(294 B)
๐
trace
๐
trace.go
(38.36 KB)
๐
traceback.go
(46.51 KB)
๐
traceback_test.go
(8.04 KB)
๐
type.go
(18.59 KB)
๐
typekind.go
(742 B)
๐
utf8.go
(3.39 KB)
๐
vdso_elf32.go
(2.79 KB)
๐
vdso_elf64.go
(2.87 KB)
๐
vdso_freebsd.go
(2.46 KB)
๐
vdso_freebsd_arm.go
(454 B)
๐
vdso_freebsd_arm64.go
(443 B)
๐
vdso_freebsd_x86.go
(1.89 KB)
๐
vdso_in_none.go
(490 B)
๐
vdso_linux.go
(7.77 KB)
๐
vdso_linux_386.go
(669 B)
๐
vdso_linux_amd64.go
(685 B)
๐
vdso_linux_arm.go
(669 B)
๐
vdso_linux_arm64.go
(670 B)
๐
vdso_linux_mips64x.go
(892 B)
๐
vdso_linux_ppc64x.go
(712 B)
๐
vlop_386.s
(2.02 KB)
๐
vlop_arm.s
(7.06 KB)
๐
vlop_arm_test.go
(3.75 KB)
๐
vlrt.go
(5.91 KB)
๐
wincallback.go
(3.52 KB)
๐
write_err.go
(310 B)
๐
write_err_android.go
(4.65 KB)
๐
zcallback_windows.go
(155 B)
๐
zcallback_windows.s
(63.05 KB)
๐
zcallback_windows_arm.s
(89.34 KB)
๐
zcallback_windows_arm64.s
(89.34 KB)
Editing: os3_solaris.go
// Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package runtime import ( "runtime/internal/sys" "unsafe" ) //go:cgo_export_dynamic runtime.end _end //go:cgo_export_dynamic runtime.etext _etext //go:cgo_export_dynamic runtime.edata _edata //go:cgo_import_dynamic libc____errno ___errno "libc.so" //go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" //go:cgo_import_dynamic libc_exit exit "libc.so" //go:cgo_import_dynamic libc_getcontext getcontext "libc.so" //go:cgo_import_dynamic libc_kill kill "libc.so" //go:cgo_import_dynamic libc_madvise madvise "libc.so" //go:cgo_import_dynamic libc_malloc malloc "libc.so" //go:cgo_import_dynamic libc_mmap mmap "libc.so" //go:cgo_import_dynamic libc_munmap munmap "libc.so" //go:cgo_import_dynamic libc_open open "libc.so" //go:cgo_import_dynamic libc_pthread_attr_destroy pthread_attr_destroy "libc.so" //go:cgo_import_dynamic libc_pthread_attr_getstack pthread_attr_getstack "libc.so" //go:cgo_import_dynamic libc_pthread_attr_init pthread_attr_init "libc.so" //go:cgo_import_dynamic libc_pthread_attr_setdetachstate pthread_attr_setdetachstate "libc.so" //go:cgo_import_dynamic libc_pthread_attr_setstack pthread_attr_setstack "libc.so" //go:cgo_import_dynamic libc_pthread_create pthread_create "libc.so" //go:cgo_import_dynamic libc_pthread_self pthread_self "libc.so" //go:cgo_import_dynamic libc_pthread_kill pthread_kill "libc.so" //go:cgo_import_dynamic libc_raise raise "libc.so" //go:cgo_import_dynamic libc_read read "libc.so" //go:cgo_import_dynamic libc_select select "libc.so" //go:cgo_import_dynamic libc_sched_yield sched_yield "libc.so" //go:cgo_import_dynamic libc_sem_init sem_init "libc.so" //go:cgo_import_dynamic libc_sem_post sem_post "libc.so" //go:cgo_import_dynamic libc_sem_reltimedwait_np sem_reltimedwait_np "libc.so" //go:cgo_import_dynamic libc_sem_wait sem_wait "libc.so" //go:cgo_import_dynamic libc_setitimer setitimer "libc.so" //go:cgo_import_dynamic libc_sigaction sigaction "libc.so" //go:cgo_import_dynamic libc_sigaltstack sigaltstack "libc.so" //go:cgo_import_dynamic libc_sigprocmask sigprocmask "libc.so" //go:cgo_import_dynamic libc_sysconf sysconf "libc.so" //go:cgo_import_dynamic libc_usleep usleep "libc.so" //go:cgo_import_dynamic libc_write write "libc.so" //go:cgo_import_dynamic libc_pipe pipe "libc.so" //go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" //go:linkname libc____errno libc____errno //go:linkname libc_clock_gettime libc_clock_gettime //go:linkname libc_exit libc_exit //go:linkname libc_getcontext libc_getcontext //go:linkname libc_kill libc_kill //go:linkname libc_madvise libc_madvise //go:linkname libc_malloc libc_malloc //go:linkname libc_mmap libc_mmap //go:linkname libc_munmap libc_munmap //go:linkname libc_open libc_open //go:linkname libc_pthread_attr_destroy libc_pthread_attr_destroy //go:linkname libc_pthread_attr_getstack libc_pthread_attr_getstack //go:linkname libc_pthread_attr_init libc_pthread_attr_init //go:linkname libc_pthread_attr_setdetachstate libc_pthread_attr_setdetachstate //go:linkname libc_pthread_attr_setstack libc_pthread_attr_setstack //go:linkname libc_pthread_create libc_pthread_create //go:linkname libc_pthread_self libc_pthread_self //go:linkname libc_pthread_kill libc_pthread_kill //go:linkname libc_raise libc_raise //go:linkname libc_read libc_read //go:linkname libc_select libc_select //go:linkname libc_sched_yield libc_sched_yield //go:linkname libc_sem_init libc_sem_init //go:linkname libc_sem_post libc_sem_post //go:linkname libc_sem_reltimedwait_np libc_sem_reltimedwait_np //go:linkname libc_sem_wait libc_sem_wait //go:linkname libc_setitimer libc_setitimer //go:linkname libc_sigaction libc_sigaction //go:linkname libc_sigaltstack libc_sigaltstack //go:linkname libc_sigprocmask libc_sigprocmask //go:linkname libc_sysconf libc_sysconf //go:linkname libc_usleep libc_usleep //go:linkname libc_write libc_write //go:linkname libc_pipe libc_pipe //go:linkname libc_pipe2 libc_pipe2 var ( libc____errno, libc_clock_gettime, libc_exit, libc_getcontext, libc_kill, libc_madvise, libc_malloc, libc_mmap, libc_munmap, libc_open, libc_pthread_attr_destroy, libc_pthread_attr_getstack, libc_pthread_attr_init, libc_pthread_attr_setdetachstate, libc_pthread_attr_setstack, libc_pthread_create, libc_pthread_self, libc_pthread_kill, libc_raise, libc_read, libc_sched_yield, libc_select, libc_sem_init, libc_sem_post, libc_sem_reltimedwait_np, libc_sem_wait, libc_setitimer, libc_sigaction, libc_sigaltstack, libc_sigprocmask, libc_sysconf, libc_usleep, libc_write, libc_pipe, libc_pipe2 libcFunc ) var sigset_all = sigset{[4]uint32{^uint32(0), ^uint32(0), ^uint32(0), ^uint32(0)}} func getPageSize() uintptr { n := int32(sysconf(__SC_PAGESIZE)) if n <= 0 { return 0 } return uintptr(n) } func osinit() { ncpu = getncpu() if physPageSize == 0 { physPageSize = getPageSize() } } func tstart_sysvicall(newm *m) uint32 // May run with m.p==nil, so write barriers are not allowed. //go:nowritebarrier func newosproc(mp *m) { var ( attr pthreadattr oset sigset tid pthread ret int32 size uint64 ) if pthread_attr_init(&attr) != 0 { throw("pthread_attr_init") } // Allocate a new 2MB stack. if pthread_attr_setstack(&attr, 0, 0x200000) != 0 { throw("pthread_attr_setstack") } // Read back the allocated stack. if pthread_attr_getstack(&attr, unsafe.Pointer(&mp.g0.stack.hi), &size) != 0 { throw("pthread_attr_getstack") } mp.g0.stack.lo = mp.g0.stack.hi - uintptr(size) if pthread_attr_setdetachstate(&attr, _PTHREAD_CREATE_DETACHED) != 0 { throw("pthread_attr_setdetachstate") } // Disable signals during create, so that the new thread starts // with signals disabled. It will enable them in minit. sigprocmask(_SIG_SETMASK, &sigset_all, &oset) ret = pthread_create(&tid, &attr, funcPC(tstart_sysvicall), unsafe.Pointer(mp)) sigprocmask(_SIG_SETMASK, &oset, nil) if ret != 0 { print("runtime: failed to create new OS thread (have ", mcount(), " already; errno=", ret, ")\n") if ret == -_EAGAIN { println("runtime: may need to increase max user processes (ulimit -u)") } throw("newosproc") } } func exitThread(wait *uint32) { // We should never reach exitThread on Solaris because we let // libc clean up threads. throw("exitThread") } var urandom_dev = []byte("/dev/urandom\x00") //go:nosplit func getRandomData(r []byte) { fd := open(&urandom_dev[0], 0 /* O_RDONLY */, 0) n := read(fd, unsafe.Pointer(&r[0]), int32(len(r))) closefd(fd) extendRandom(r, int(n)) } func goenvs() { goenvs_unix() } // Called to initialize a new m (including the bootstrap m). // Called on the parent thread (main thread in case of bootstrap), can allocate memory. func mpreinit(mp *m) { mp.gsignal = malg(32 * 1024) mp.gsignal.m = mp } func miniterrno() // Called to initialize a new m (including the bootstrap m). // Called on the new thread, cannot allocate memory. func minit() { asmcgocall(unsafe.Pointer(funcPC(miniterrno)), unsafe.Pointer(&libc____errno)) minitSignals() getg().m.procid = uint64(pthread_self()) } // Called from dropm to undo the effect of an minit. func unminit() { unminitSignals() } // Called from exitm, but not from drop, to undo the effect of thread-owned // resources in minit, semacreate, or elsewhere. Do not take locks after calling this. func mdestroy(mp *m) { } func sigtramp() //go:nosplit //go:nowritebarrierrec func setsig(i uint32, fn uintptr) { var sa sigactiont sa.sa_flags = _SA_SIGINFO | _SA_ONSTACK | _SA_RESTART sa.sa_mask = sigset_all if fn == funcPC(sighandler) { fn = funcPC(sigtramp) } *((*uintptr)(unsafe.Pointer(&sa._funcptr))) = fn sigaction(i, &sa, nil) } //go:nosplit //go:nowritebarrierrec func setsigstack(i uint32) { var sa sigactiont sigaction(i, nil, &sa) if sa.sa_flags&_SA_ONSTACK != 0 { return } sa.sa_flags |= _SA_ONSTACK sigaction(i, &sa, nil) } //go:nosplit //go:nowritebarrierrec func getsig(i uint32) uintptr { var sa sigactiont sigaction(i, nil, &sa) return *((*uintptr)(unsafe.Pointer(&sa._funcptr))) } // setSignaltstackSP sets the ss_sp field of a stackt. //go:nosplit func setSignalstackSP(s *stackt, sp uintptr) { *(*uintptr)(unsafe.Pointer(&s.ss_sp)) = sp } //go:nosplit //go:nowritebarrierrec func sigaddset(mask *sigset, i int) { mask.__sigbits[(i-1)/32] |= 1 << ((uint32(i) - 1) & 31) } func sigdelset(mask *sigset, i int) { mask.__sigbits[(i-1)/32] &^= 1 << ((uint32(i) - 1) & 31) } //go:nosplit func (c *sigctxt) fixsigcode(sig uint32) { } //go:nosplit func semacreate(mp *m) { if mp.waitsema != 0 { return } var sem *semt _g_ := getg() // Call libc's malloc rather than malloc. This will // allocate space on the C heap. We can't call malloc // here because it could cause a deadlock. _g_.m.libcall.fn = uintptr(unsafe.Pointer(&libc_malloc)) _g_.m.libcall.n = 1 _g_.m.scratch = mscratch{} _g_.m.scratch.v[0] = unsafe.Sizeof(*sem) _g_.m.libcall.args = uintptr(unsafe.Pointer(&_g_.m.scratch)) asmcgocall(unsafe.Pointer(&asmsysvicall6x), unsafe.Pointer(&_g_.m.libcall)) sem = (*semt)(unsafe.Pointer(_g_.m.libcall.r1)) if sem_init(sem, 0, 0) != 0 { throw("sem_init") } mp.waitsema = uintptr(unsafe.Pointer(sem)) } //go:nosplit func semasleep(ns int64) int32 { _m_ := getg().m if ns >= 0 { _m_.ts.tv_sec = ns / 1000000000 _m_.ts.tv_nsec = ns % 1000000000 _m_.libcall.fn = uintptr(unsafe.Pointer(&libc_sem_reltimedwait_np)) _m_.libcall.n = 2 _m_.scratch = mscratch{} _m_.scratch.v[0] = _m_.waitsema _m_.scratch.v[1] = uintptr(unsafe.Pointer(&_m_.ts)) _m_.libcall.args = uintptr(unsafe.Pointer(&_m_.scratch)) asmcgocall(unsafe.Pointer(&asmsysvicall6x), unsafe.Pointer(&_m_.libcall)) if *_m_.perrno != 0 { if *_m_.perrno == _ETIMEDOUT || *_m_.perrno == _EAGAIN || *_m_.perrno == _EINTR { return -1 } throw("sem_reltimedwait_np") } return 0 } for { _m_.libcall.fn = uintptr(unsafe.Pointer(&libc_sem_wait)) _m_.libcall.n = 1 _m_.scratch = mscratch{} _m_.scratch.v[0] = _m_.waitsema _m_.libcall.args = uintptr(unsafe.Pointer(&_m_.scratch)) asmcgocall(unsafe.Pointer(&asmsysvicall6x), unsafe.Pointer(&_m_.libcall)) if _m_.libcall.r1 == 0 { break } if *_m_.perrno == _EINTR { continue } throw("sem_wait") } return 0 } //go:nosplit func semawakeup(mp *m) { if sem_post((*semt)(unsafe.Pointer(mp.waitsema))) != 0 { throw("sem_post") } } //go:nosplit func closefd(fd int32) int32 { return int32(sysvicall1(&libc_close, uintptr(fd))) } //go:nosplit func exit(r int32) { sysvicall1(&libc_exit, uintptr(r)) } //go:nosplit func getcontext(context *ucontext) /* int32 */ { sysvicall1(&libc_getcontext, uintptr(unsafe.Pointer(context))) } //go:nosplit func madvise(addr unsafe.Pointer, n uintptr, flags int32) { sysvicall3(&libc_madvise, uintptr(addr), uintptr(n), uintptr(flags)) } //go:nosplit func mmap(addr unsafe.Pointer, n uintptr, prot, flags, fd int32, off uint32) (unsafe.Pointer, int) { p, err := doMmap(uintptr(addr), n, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(off)) if p == ^uintptr(0) { return nil, int(err) } return unsafe.Pointer(p), 0 } //go:nosplit func doMmap(addr, n, prot, flags, fd, off uintptr) (uintptr, uintptr) { var libcall libcall libcall.fn = uintptr(unsafe.Pointer(&libc_mmap)) libcall.n = 6 libcall.args = uintptr(noescape(unsafe.Pointer(&addr))) asmcgocall(unsafe.Pointer(&asmsysvicall6x), unsafe.Pointer(&libcall)) return libcall.r1, libcall.err } //go:nosplit func munmap(addr unsafe.Pointer, n uintptr) { sysvicall2(&libc_munmap, uintptr(addr), uintptr(n)) } const ( _CLOCK_REALTIME = 3 _CLOCK_MONOTONIC = 4 ) //go:nosplit func nanotime1() int64 { var ts mts sysvicall2(&libc_clock_gettime, _CLOCK_MONOTONIC, uintptr(unsafe.Pointer(&ts))) return ts.tv_sec*1e9 + ts.tv_nsec } //go:nosplit func open(path *byte, mode, perm int32) int32 { return int32(sysvicall3(&libc_open, uintptr(unsafe.Pointer(path)), uintptr(mode), uintptr(perm))) } func pthread_attr_destroy(attr *pthreadattr) int32 { return int32(sysvicall1(&libc_pthread_attr_destroy, uintptr(unsafe.Pointer(attr)))) } func pthread_attr_getstack(attr *pthreadattr, addr unsafe.Pointer, size *uint64) int32 { return int32(sysvicall3(&libc_pthread_attr_getstack, uintptr(unsafe.Pointer(attr)), uintptr(addr), uintptr(unsafe.Pointer(size)))) } func pthread_attr_init(attr *pthreadattr) int32 { return int32(sysvicall1(&libc_pthread_attr_init, uintptr(unsafe.Pointer(attr)))) } func pthread_attr_setdetachstate(attr *pthreadattr, state int32) int32 { return int32(sysvicall2(&libc_pthread_attr_setdetachstate, uintptr(unsafe.Pointer(attr)), uintptr(state))) } func pthread_attr_setstack(attr *pthreadattr, addr uintptr, size uint64) int32 { return int32(sysvicall3(&libc_pthread_attr_setstack, uintptr(unsafe.Pointer(attr)), uintptr(addr), uintptr(size))) } func pthread_create(thread *pthread, attr *pthreadattr, fn uintptr, arg unsafe.Pointer) int32 { return int32(sysvicall4(&libc_pthread_create, uintptr(unsafe.Pointer(thread)), uintptr(unsafe.Pointer(attr)), uintptr(fn), uintptr(arg))) } func pthread_self() pthread { return pthread(sysvicall0(&libc_pthread_self)) } func signalM(mp *m, sig int) { sysvicall2(&libc_pthread_kill, uintptr(pthread(mp.procid)), uintptr(sig)) } //go:nosplit //go:nowritebarrierrec func raise(sig uint32) /* int32 */ { sysvicall1(&libc_raise, uintptr(sig)) } func raiseproc(sig uint32) /* int32 */ { pid := sysvicall0(&libc_getpid) sysvicall2(&libc_kill, pid, uintptr(sig)) } //go:nosplit func read(fd int32, buf unsafe.Pointer, nbyte int32) int32 { r1, err := sysvicall3Err(&libc_read, uintptr(fd), uintptr(buf), uintptr(nbyte)) if c := int32(r1); c >= 0 { return c } return -int32(err) } //go:nosplit func sem_init(sem *semt, pshared int32, value uint32) int32 { return int32(sysvicall3(&libc_sem_init, uintptr(unsafe.Pointer(sem)), uintptr(pshared), uintptr(value))) } //go:nosplit func sem_post(sem *semt) int32 { return int32(sysvicall1(&libc_sem_post, uintptr(unsafe.Pointer(sem)))) } //go:nosplit func sem_reltimedwait_np(sem *semt, timeout *timespec) int32 { return int32(sysvicall2(&libc_sem_reltimedwait_np, uintptr(unsafe.Pointer(sem)), uintptr(unsafe.Pointer(timeout)))) } //go:nosplit func sem_wait(sem *semt) int32 { return int32(sysvicall1(&libc_sem_wait, uintptr(unsafe.Pointer(sem)))) } func setitimer(which int32, value *itimerval, ovalue *itimerval) /* int32 */ { sysvicall3(&libc_setitimer, uintptr(which), uintptr(unsafe.Pointer(value)), uintptr(unsafe.Pointer(ovalue))) } //go:nosplit //go:nowritebarrierrec func sigaction(sig uint32, act *sigactiont, oact *sigactiont) /* int32 */ { sysvicall3(&libc_sigaction, uintptr(sig), uintptr(unsafe.Pointer(act)), uintptr(unsafe.Pointer(oact))) } //go:nosplit //go:nowritebarrierrec func sigaltstack(ss *stackt, oss *stackt) /* int32 */ { sysvicall2(&libc_sigaltstack, uintptr(unsafe.Pointer(ss)), uintptr(unsafe.Pointer(oss))) } //go:nosplit //go:nowritebarrierrec func sigprocmask(how int32, set *sigset, oset *sigset) /* int32 */ { sysvicall3(&libc_sigprocmask, uintptr(how), uintptr(unsafe.Pointer(set)), uintptr(unsafe.Pointer(oset))) } func sysconf(name int32) int64 { return int64(sysvicall1(&libc_sysconf, uintptr(name))) } func usleep1(usec uint32) //go:nosplit func usleep_no_g(ยตs uint32) { usleep1(ยตs) } //go:nosplit func usleep(ยตs uint32) { usleep1(ยตs) } func walltime() (sec int64, nsec int32) { var ts mts sysvicall2(&libc_clock_gettime, _CLOCK_REALTIME, uintptr(unsafe.Pointer(&ts))) return ts.tv_sec, int32(ts.tv_nsec) } //go:nosplit func write1(fd uintptr, buf unsafe.Pointer, nbyte int32) int32 { r1, err := sysvicall3Err(&libc_write, fd, uintptr(buf), uintptr(nbyte)) if c := int32(r1); c >= 0 { return c } return -int32(err) } //go:nosplit func pipe() (r, w int32, errno int32) { var p [2]int32 _, e := sysvicall1Err(&libc_pipe, uintptr(noescape(unsafe.Pointer(&p)))) return p[0], p[1], int32(e) } //go:nosplit func pipe2(flags int32) (r, w int32, errno int32) { var p [2]int32 _, e := sysvicall2Err(&libc_pipe2, uintptr(noescape(unsafe.Pointer(&p))), uintptr(flags)) return p[0], p[1], int32(e) } //go:nosplit func closeonexec(fd int32) { fcntl(fd, _F_SETFD, _FD_CLOEXEC) } //go:nosplit func setNonblock(fd int32) { flags := fcntl(fd, _F_GETFL, 0) fcntl(fd, _F_SETFL, flags|_O_NONBLOCK) } func osyield1() //go:nosplit func osyield_no_g() { osyield1() } //go:nosplit func osyield() { sysvicall0(&libc_sched_yield) } //go:linkname executablePath os.executablePath var executablePath string func sysargs(argc int32, argv **byte) { n := argc + 1 // skip over argv, envp to get to auxv for argv_index(argv, n) != nil { n++ } // skip NULL separator n++ // now argv+n is auxv auxv := (*[1 << 28]uintptr)(add(unsafe.Pointer(argv), uintptr(n)*sys.PtrSize)) sysauxv(auxv[:]) } const ( _AT_NULL = 0 // Terminates the vector _AT_PAGESZ = 6 // Page size in bytes _AT_SUN_EXECNAME = 2014 // exec() path name ) func sysauxv(auxv []uintptr) { for i := 0; auxv[i] != _AT_NULL; i += 2 { tag, val := auxv[i], auxv[i+1] switch tag { case _AT_PAGESZ: physPageSize = val case _AT_SUN_EXECNAME: executablePath = gostringnocopy((*byte)(unsafe.Pointer(val))) } } }
Upload File
Create Folder