X7ROOT File Manager
Current Path:
/opt/golang/1.19.4/src/runtime
opt
/
golang
/
1.19.4
/
src
/
runtime
/
📁
..
📄
HACKING.md
(15.29 KB)
📄
Makefile
(178 B)
📄
abi_test.go
(2.83 KB)
📄
alg.go
(9.45 KB)
📄
align_runtime_test.go
(2.73 KB)
📄
align_test.go
(5.26 KB)
📁
asan
📄
asan.go
(1.55 KB)
📄
asan0.go
(761 B)
📄
asan_amd64.s
(2.46 KB)
📄
asan_arm64.s
(2.15 KB)
📄
asan_riscv64.s
(1.92 KB)
📄
asm.s
(278 B)
📄
asm_386.s
(40.43 KB)
📄
asm_amd64.h
(411 B)
📄
asm_amd64.s
(57.44 KB)
📄
asm_arm.s
(30.2 KB)
📄
asm_arm64.s
(41.41 KB)
📄
asm_loong64.s
(21.79 KB)
📄
asm_mips64x.s
(22.43 KB)
📄
asm_mipsx.s
(24.41 KB)
📄
asm_ppc64x.h
(1023 B)
📄
asm_ppc64x.s
(35.21 KB)
📄
asm_riscv64.s
(26.43 KB)
📄
asm_s390x.s
(26.08 KB)
📄
asm_wasm.s
(9.38 KB)
📄
atomic_arm64.s
(259 B)
📄
atomic_loong64.s
(245 B)
📄
atomic_mips64x.s
(300 B)
📄
atomic_mipsx.s
(262 B)
📄
atomic_pointer.go
(2.62 KB)
📄
atomic_ppc64x.s
(437 B)
📄
atomic_riscv64.s
(275 B)
📄
auxv_none.go
(298 B)
📄
callers_test.go
(8.44 KB)
📁
cgo
📄
cgo.go
(2 KB)
📄
cgo_mmap.go
(2.4 KB)
📄
cgo_ppc64x.go
(418 B)
📄
cgo_sigaction.go
(3.28 KB)
📄
cgocall.go
(19.12 KB)
📄
cgocallback.go
(317 B)
📄
cgocheck.go
(6.86 KB)
📄
chan.go
(23.73 KB)
📄
chan_test.go
(23.37 KB)
📄
chanbarrier_test.go
(1.4 KB)
📄
checkptr.go
(3.29 KB)
📄
checkptr_test.go
(2.73 KB)
📄
closure_test.go
(937 B)
📄
compiler.go
(410 B)
📄
complex.go
(1.59 KB)
📄
complex_test.go
(1.05 KB)
📄
conv_wasm_test.go
(2.96 KB)
📄
cpuflags.go
(810 B)
📄
cpuflags_amd64.go
(533 B)
📄
cpuflags_arm64.go
(334 B)
📄
cpuprof.go
(7.78 KB)
📄
cputicks.go
(449 B)
📄
crash_cgo_test.go
(18.14 KB)
📄
crash_test.go
(21.77 KB)
📄
crash_unix_test.go
(8.39 KB)
📁
debug
📄
debug.go
(3.23 KB)
📄
debug_test.go
(7.98 KB)
📄
debugcall.go
(6.19 KB)
📄
debuglog.go
(17.87 KB)
📄
debuglog_off.go
(357 B)
📄
debuglog_on.go
(1.09 KB)
📄
debuglog_test.go
(4.56 KB)
📄
defer_test.go
(11.56 KB)
📄
defs1_linux.go
(845 B)
📄
defs1_netbsd_386.go
(2.83 KB)
📄
defs1_netbsd_amd64.go
(3.06 KB)
📄
defs1_netbsd_arm.go
(2.94 KB)
📄
defs1_netbsd_arm64.go
(3.17 KB)
📄
defs1_solaris_amd64.go
(4 KB)
📄
defs2_linux.go
(3.51 KB)
📄
defs3_linux.go
(1.09 KB)
📄
defs_aix.go
(4.16 KB)
📄
defs_aix_ppc64.go
(3.61 KB)
📄
defs_arm_linux.go
(2.67 KB)
📄
defs_darwin.go
(3.78 KB)
📄
defs_darwin_amd64.go
(6.07 KB)
📄
defs_darwin_arm64.go
(3.89 KB)
📄
defs_dragonfly.go
(2.59 KB)
📄
defs_dragonfly_amd64.go
(3.29 KB)
📄
defs_freebsd.go
(3.82 KB)
📄
defs_freebsd_386.go
(4.36 KB)
📄
defs_freebsd_amd64.go
(4.63 KB)
📄
defs_freebsd_arm.go
(3.69 KB)
📄
defs_freebsd_arm64.go
(4.01 KB)
📄
defs_illumos_amd64.go
(285 B)
📄
defs_linux.go
(3.25 KB)
📄
defs_linux_386.go
(4.42 KB)
📄
defs_linux_amd64.go
(4.93 KB)
📄
defs_linux_arm.go
(4.11 KB)
📄
defs_linux_arm64.go
(3.86 KB)
📄
defs_linux_loong64.go
(3.68 KB)
📄
defs_linux_mips64x.go
(3.85 KB)
📄
defs_linux_mipsx.go
(3.83 KB)
📄
defs_linux_ppc64.go
(3.93 KB)
📄
defs_linux_ppc64le.go
(3.93 KB)
📄
defs_linux_riscv64.go
(4.06 KB)
📄
defs_linux_s390x.go
(3.41 KB)
📄
defs_netbsd.go
(2.72 KB)
📄
defs_netbsd_386.go
(855 B)
📄
defs_netbsd_amd64.go
(1.01 KB)
📄
defs_netbsd_arm.go
(764 B)
📄
defs_openbsd.go
(3.09 KB)
📄
defs_openbsd_386.go
(2.87 KB)
📄
defs_openbsd_amd64.go
(3.07 KB)
📄
defs_openbsd_arm.go
(2.99 KB)
📄
defs_openbsd_arm64.go
(2.74 KB)
📄
defs_openbsd_mips64.go
(2.64 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.31 KB)
📄
defs_solaris_amd64.go
(1004 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.27 KB)
📄
duff_loong64.s
(12 KB)
📄
duff_mips64x.s
(11.28 KB)
📄
duff_ppc64x.s
(7.06 KB)
📄
duff_riscv64.s
(11.4 KB)
📄
duff_s390x.s
(507 B)
📄
env_plan9.go
(3 KB)
📄
env_posix.go
(1.79 KB)
📄
env_test.go
(1.16 KB)
📄
error.go
(9.21 KB)
📄
example_test.go
(1.55 KB)
📄
export_aix_test.go
(234 B)
📄
export_arm_test.go
(226 B)
📄
export_darwin_test.go
(382 B)
📄
export_debug_amd64_test.go
(3.6 KB)
📄
export_debug_arm64_test.go
(3.49 KB)
📄
export_debug_test.go
(5.05 KB)
📄
export_debuglog_test.go
(1.24 KB)
📄
export_linux_test.go
(550 B)
📄
export_mmap_test.go
(429 B)
📄
export_pipe2_test.go
(310 B)
📄
export_pipe_test.go
(219 B)
📄
export_solaris_test.go
(282 B)
📄
export_test.go
(38.87 KB)
📄
export_unix_test.go
(2.18 KB)
📄
export_windows_test.go
(677 B)
📄
extern.go
(13.62 KB)
📄
fastlog2.go
(1.22 KB)
📄
fastlog2_test.go
(784 B)
📄
fastlog2table.go
(904 B)
📄
float.go
(1.35 KB)
📄
float_test.go
(699 B)
📄
funcdata.h
(2.55 KB)
📄
gc_test.go
(20.04 KB)
📄
gcinfo_test.go
(5.59 KB)
📄
go_tls.h
(366 B)
📄
hash32.go
(1.58 KB)
📄
hash64.go
(1.95 KB)
📄
hash_test.go
(16.77 KB)
📄
heapdump.go
(17.65 KB)
📄
histogram.go
(6.19 KB)
📄
histogram_test.go
(3.42 KB)
📄
iface.go
(15.66 KB)
📄
iface_test.go
(7.45 KB)
📁
internal
📄
lfstack.go
(1.77 KB)
📄
lfstack_32bit.go
(532 B)
📄
lfstack_64bit.go
(2.18 KB)
📄
lfstack_test.go
(2.77 KB)
📄
libfuzzer.go
(6.5 KB)
📄
libfuzzer_amd64.s
(5.01 KB)
📄
libfuzzer_arm64.s
(3.15 KB)
📄
lock_futex.go
(5.19 KB)
📄
lock_js.go
(6.14 KB)
📄
lock_sema.go
(6.74 KB)
📄
lockrank.go
(13.26 KB)
📄
lockrank_off.go
(1.14 KB)
📄
lockrank_on.go
(9.83 KB)
📄
lockrank_test.go
(1.15 KB)
📄
malloc.go
(51.01 KB)
📄
malloc_test.go
(10.78 KB)
📄
map.go
(43.52 KB)
📄
map_benchmark_test.go
(10.48 KB)
📄
map_fast32.go
(12.72 KB)
📄
map_fast64.go
(12.91 KB)
📄
map_faststr.go
(14.3 KB)
📄
map_test.go
(27.44 KB)
📄
mbarrier.go
(12.43 KB)
📄
mbitmap.go
(66.08 KB)
📄
mcache.go
(10 KB)
📄
mcentral.go
(7.9 KB)
📄
mcheckmark.go
(2.81 KB)
📄
mem.go
(6.23 KB)
📄
mem_aix.go
(1.9 KB)
📄
mem_bsd.go
(2.03 KB)
📄
mem_darwin.go
(1.84 KB)
📄
mem_js.go
(2.25 KB)
📄
mem_linux.go
(6.15 KB)
📄
mem_plan9.go
(4.32 KB)
📄
mem_windows.go
(3.76 KB)
📄
memclr_386.s
(2.38 KB)
📄
memclr_amd64.s
(4.91 KB)
📄
memclr_arm.s
(2.6 KB)
📄
memclr_arm64.s
(3.62 KB)
📄
memclr_loong64.s
(778 B)
📄
memclr_mips64x.s
(1.72 KB)
📄
memclr_mipsx.s
(1.32 KB)
📄
memclr_plan9_386.s
(983 B)
📄
memclr_plan9_amd64.s
(511 B)
📄
memclr_ppc64x.s
(4.23 KB)
📄
memclr_riscv64.s
(978 B)
📄
memclr_s390x.s
(1.96 KB)
📄
memclr_wasm.s
(622 B)
📄
memmove_386.s
(4.42 KB)
📄
memmove_amd64.s
(12.48 KB)
📄
memmove_arm.s
(5.9 KB)
📄
memmove_arm64.s
(5.96 KB)
📄
memmove_linux_amd64_test.go
(1.6 KB)
📄
memmove_loong64.s
(1.8 KB)
📄
memmove_mips64x.s
(1.83 KB)
📄
memmove_mipsx.s
(4.4 KB)
📄
memmove_plan9_386.s
(3.06 KB)
📄
memmove_plan9_amd64.s
(3.04 KB)
📄
memmove_ppc64x.s
(4.58 KB)
📄
memmove_riscv64.s
(1.86 KB)
📄
memmove_s390x.s
(2.92 KB)
📄
memmove_test.go
(14.03 KB)
📄
memmove_wasm.s
(1.74 KB)
📁
metrics
📄
metrics.go
(18.71 KB)
📄
metrics_test.go
(14.74 KB)
📄
mfinal.go
(16.34 KB)
📄
mfinal_test.go
(6.19 KB)
📄
mfixalloc.go
(3.07 KB)
📄
mgc.go
(56.37 KB)
📄
mgclimit.go
(17.26 KB)
📄
mgclimit_test.go
(9.02 KB)
📄
mgcmark.go
(47.47 KB)
📄
mgcpacer.go
(60.12 KB)
📄
mgcpacer_test.go
(40.43 KB)
📄
mgcscavenge.go
(41.29 KB)
📄
mgcscavenge_test.go
(20.33 KB)
📄
mgcstack.go
(10.58 KB)
📄
mgcsweep.go
(27.89 KB)
📄
mgcwork.go
(12.86 KB)
📄
mheap.go
(69.14 KB)
📄
mkduff.go
(8.01 KB)
📄
mkfastlog2table.go
(3.08 KB)
📄
mkpreempt.go
(15.12 KB)
📄
mksizeclasses.go
(9.3 KB)
📄
mmap.go
(821 B)
📄
mpagealloc.go
(36.84 KB)
📄
mpagealloc_32bit.go
(3.81 KB)
📄
mpagealloc_64bit.go
(9.44 KB)
📄
mpagealloc_test.go
(32.59 KB)
📄
mpagecache.go
(5.46 KB)
📄
mpagecache_test.go
(10.79 KB)
📄
mpallocbits.go
(12.6 KB)
📄
mpallocbits_test.go
(13.69 KB)
📄
mprof.go
(38.51 KB)
📄
mranges.go
(13.64 KB)
📄
mranges_test.go
(5.68 KB)
📁
msan
📄
msan.go
(1.5 KB)
📄
msan0.go
(725 B)
📄
msan_amd64.s
(2.31 KB)
📄
msan_arm64.s
(1.99 KB)
📄
msize.go
(777 B)
📄
mspanset.go
(12.21 KB)
📄
mstats.go
(30.07 KB)
📄
mwbbuf.go
(9.28 KB)
📄
nbpipe_fcntl_libc_test.go
(470 B)
📄
nbpipe_fcntl_unix_test.go
(458 B)
📄
nbpipe_pipe.go
(405 B)
📄
nbpipe_pipe2.go
(344 B)
📄
nbpipe_pipe_test.go
(706 B)
📄
nbpipe_test.go
(1.68 KB)
📄
net_plan9.go
(645 B)
📄
netpoll.go
(18.27 KB)
📄
netpoll_aix.go
(4.83 KB)
📄
netpoll_epoll.go
(4.16 KB)
📄
netpoll_fake.go
(652 B)
📄
netpoll_kqueue.go
(4.56 KB)
📄
netpoll_os_test.go
(360 B)
📄
netpoll_solaris.go
(10.76 KB)
📄
netpoll_stub.go
(1.41 KB)
📄
netpoll_windows.go
(3.75 KB)
📄
norace_linux_test.go
(915 B)
📄
norace_test.go
(983 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.93 KB)
📄
os3_solaris.go
(17.22 KB)
📄
os_aix.go
(8.61 KB)
📄
os_android.go
(463 B)
📄
os_darwin.go
(12 KB)
📄
os_darwin_arm64.go
(416 B)
📄
os_dragonfly.go
(6.96 KB)
📄
os_freebsd.go
(11.61 KB)
📄
os_freebsd2.go
(603 B)
📄
os_freebsd_amd64.go
(658 B)
📄
os_freebsd_arm.go
(1.32 KB)
📄
os_freebsd_arm64.go
(398 B)
📄
os_freebsd_noauxv.go
(241 B)
📄
os_illumos.go
(3.93 KB)
📄
os_js.go
(3.28 KB)
📄
os_linux.go
(26.14 KB)
📄
os_linux_arm.go
(1.35 KB)
📄
os_linux_arm64.go
(556 B)
📄
os_linux_be64.go
(824 B)
📄
os_linux_generic.go
(888 B)
📄
os_linux_loong64.go
(485 B)
📄
os_linux_mips64x.go
(1.07 KB)
📄
os_linux_mipsx.go
(1.06 KB)
📄
os_linux_noauxv.go
(337 B)
📄
os_linux_novdso.go
(347 B)
📄
os_linux_ppc64x.go
(526 B)
📄
os_linux_riscv64.go
(198 B)
📄
os_linux_s390x.go
(316 B)
📄
os_linux_x86.go
(234 B)
📄
os_netbsd.go
(9.8 KB)
📄
os_netbsd_386.go
(617 B)
📄
os_netbsd_amd64.go
(614 B)
📄
os_netbsd_arm.go
(1.16 KB)
📄
os_netbsd_arm64.go
(856 B)
📄
os_nonopenbsd.go
(437 B)
📄
os_only_solaris.go
(357 B)
📄
os_openbsd.go
(6.55 KB)
📄
os_openbsd_arm.go
(749 B)
📄
os_openbsd_arm64.go
(416 B)
📄
os_openbsd_libc.go
(1.71 KB)
📄
os_openbsd_mips64.go
(416 B)
📄
os_openbsd_syscall.go
(1.27 KB)
📄
os_openbsd_syscall1.go
(441 B)
📄
os_openbsd_syscall2.go
(2.46 KB)
📄
os_plan9.go
(10.3 KB)
📄
os_plan9_arm.go
(462 B)
📄
os_solaris.go
(6.55 KB)
📄
os_windows.go
(44.43 KB)
📄
os_windows_arm.go
(511 B)
📄
os_windows_arm64.go
(339 B)
📄
panic.go
(40.25 KB)
📄
panic32.go
(4.8 KB)
📄
panic_test.go
(1.71 KB)
📄
plugin.go
(4.26 KB)
📁
pprof
📄
preempt.go
(15.21 KB)
📄
preempt_386.s
(824 B)
📄
preempt_amd64.s
(1.62 KB)
📄
preempt_arm.s
(1.48 KB)
📄
preempt_arm64.s
(1.97 KB)
📄
preempt_loong64.s
(2.35 KB)
📄
preempt_mips64x.s
(2.72 KB)
📄
preempt_mipsx.s
(2.68 KB)
📄
preempt_nonwindows.go
(290 B)
📄
preempt_ppc64x.s
(2.72 KB)
📄
preempt_riscv64.s
(2.26 KB)
📄
preempt_s390x.s
(1.01 KB)
📄
preempt_wasm.s
(176 B)
📄
print.go
(5.95 KB)
📄
proc.go
(176.84 KB)
📄
proc_runtime_test.go
(1.38 KB)
📄
proc_test.go
(25.66 KB)
📄
profbuf.go
(18.26 KB)
📄
profbuf_test.go
(8.65 KB)
📄
proflabel.go
(1.52 KB)
📁
race
📄
race.go
(18.58 KB)
📄
race0.go
(2.79 KB)
📄
race_amd64.s
(13.82 KB)
📄
race_arm64.s
(14.21 KB)
📄
race_ppc64le.s
(17.89 KB)
📄
race_s390x.s
(12 KB)
📄
rand_test.go
(907 B)
📄
rdebug.go
(553 B)
📄
relax_stub.go
(598 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
(1.69 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
(1.88 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
(1.81 KB)
📄
rt0_linux_loong64.s
(716 B)
📄
rt0_linux_mips64x.s
(1014 B)
📄
rt0_linux_mipsx.s
(797 B)
📄
rt0_linux_ppc64.s
(928 B)
📄
rt0_linux_ppc64le.s
(4.35 KB)
📄
rt0_linux_riscv64.s
(2.65 KB)
📄
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
(1.8 KB)
📄
rt0_openbsd_386.s
(454 B)
📄
rt0_openbsd_amd64.s
(311 B)
📄
rt0_openbsd_arm.s
(298 B)
📄
rt0_openbsd_arm64.s
(1.96 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.33 KB)
📄
runtime-gdb_test.go
(20.93 KB)
📄
runtime-lldb_test.go
(4.95 KB)
📄
runtime.go
(1.45 KB)
📄
runtime1.go
(13.06 KB)
📄
runtime2.go
(43.07 KB)
📄
runtime_boring.go
(606 B)
📄
runtime_linux_test.go
(1.95 KB)
📄
runtime_mmap_test.go
(1.77 KB)
📄
runtime_test.go
(11.79 KB)
📄
runtime_unix_test.go
(1.22 KB)
📄
rwmutex.go
(3.53 KB)
📄
rwmutex_test.go
(4.19 KB)
📄
select.go
(14.84 KB)
📄
sema.go
(16.16 KB)
📄
sema_test.go
(4.21 KB)
📄
semasleep_test.go
(3.05 KB)
📄
sigaction.go
(489 B)
📄
signal_386.go
(1.72 KB)
📄
signal_aix_ppc64.go
(3.55 KB)
📄
signal_amd64.go
(2.73 KB)
📄
signal_arm.go
(2.54 KB)
📄
signal_arm64.go
(3.21 KB)
📄
signal_darwin.go
(2.13 KB)
📄
signal_darwin_amd64.go
(4 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.12 KB)
📄
signal_linux_arm64.go
(2.95 KB)
📄
signal_linux_loong64.go
(3.22 KB)
📄
signal_linux_mips64x.go
(3.35 KB)
📄
signal_linux_mipsx.go
(3.67 KB)
📄
signal_linux_ppc64x.go
(3.42 KB)
📄
signal_linux_riscv64.go
(2.92 KB)
📄
signal_linux_s390x.go
(4.49 KB)
📄
signal_loong64.go
(3.09 KB)
📄
signal_mips64x.go
(3.18 KB)
📄
signal_mipsx.go
(3.06 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.89 KB)
📄
signal_solaris.go
(4.5 KB)
📄
signal_solaris_amd64.go
(2.47 KB)
📄
signal_unix.go
(41.88 KB)
📄
signal_windows.go
(9.27 KB)
📄
signal_windows_test.go
(5.29 KB)
📄
sigqueue.go
(7.66 KB)
📄
sigqueue_note.go
(648 B)
📄
sigqueue_plan9.go
(3.25 KB)
📄
sigtab_aix.go
(11.3 KB)
📄
sigtab_linux_generic.go
(3.52 KB)
📄
sigtab_linux_mipsx.go
(5.95 KB)
📄
sizeclasses.go
(9.14 KB)
📄
sizeof_test.go
(893 B)
📄
slice.go
(9.87 KB)
📄
slice_test.go
(10.32 KB)
📄
softfloat64.go
(11.54 KB)
📄
softfloat64_test.go
(4.04 KB)
📄
stack.go
(45.05 KB)
📄
stack_test.go
(22.39 KB)
📄
string.go
(13.18 KB)
📄
string_test.go
(12.61 KB)
📄
stubs.go
(19.37 KB)
📄
stubs2.go
(1.13 KB)
📄
stubs3.go
(274 B)
📄
stubs_386.go
(550 B)
📄
stubs_amd64.go
(1.2 KB)
📄
stubs_arm.go
(531 B)
📄
stubs_arm64.go
(555 B)
📄
stubs_linux.go
(650 B)
📄
stubs_loong64.go
(276 B)
📄
stubs_mips64x.go
(364 B)
📄
stubs_mipsx.go
(283 B)
📄
stubs_nonlinux.go
(298 B)
📄
stubs_ppc64.go
(301 B)
📄
stubs_ppc64x.go
(453 B)
📄
stubs_riscv64.go
(460 B)
📄
stubs_s390x.go
(256 B)
📄
symtab.go
(35.81 KB)
📄
symtab_test.go
(7.48 KB)
📄
sys_aix_ppc64.s
(7.42 KB)
📄
sys_arm.go
(521 B)
📄
sys_arm64.go
(469 B)
📄
sys_darwin.go
(17.92 KB)
📄
sys_darwin_amd64.s
(19.12 KB)
📄
sys_darwin_arm64.go
(1.74 KB)
📄
sys_darwin_arm64.s
(15.95 KB)
📄
sys_dragonfly_amd64.s
(8.03 KB)
📄
sys_freebsd_386.s
(8.41 KB)
📄
sys_freebsd_amd64.s
(10.7 KB)
📄
sys_freebsd_arm.s
(10.12 KB)
📄
sys_freebsd_arm64.s
(9.4 KB)
📄
sys_libc.go
(1.84 KB)
📄
sys_linux_386.s
(18.31 KB)
📄
sys_linux_amd64.s
(16.57 KB)
📄
sys_linux_arm.s
(16.12 KB)
📄
sys_linux_arm64.s
(18.09 KB)
📄
sys_linux_loong64.s
(12.15 KB)
📄
sys_linux_mips64x.s
(13.5 KB)
📄
sys_linux_mipsx.s
(11.09 KB)
📄
sys_linux_ppc64x.s
(22.1 KB)
📄
sys_linux_riscv64.s
(12.59 KB)
📄
sys_linux_s390x.s
(13.78 KB)
📄
sys_loong64.go
(489 B)
📄
sys_mips64x.go
(500 B)
📄
sys_mipsx.go
(496 B)
📄
sys_netbsd_386.s
(9.55 KB)
📄
sys_netbsd_amd64.s
(9.51 KB)
📄
sys_netbsd_arm.s
(10.41 KB)
📄
sys_netbsd_arm64.s
(9.38 KB)
📄
sys_nonppc64x.go
(245 B)
📄
sys_openbsd.go
(2.59 KB)
📄
sys_openbsd1.go
(1.23 KB)
📄
sys_openbsd2.go
(8.36 KB)
📄
sys_openbsd3.go
(3.37 KB)
📄
sys_openbsd_386.s
(20.03 KB)
📄
sys_openbsd_amd64.s
(16.64 KB)
📄
sys_openbsd_arm.s
(18.15 KB)
📄
sys_openbsd_arm64.s
(14.84 KB)
📄
sys_openbsd_mips64.s
(8.6 KB)
📄
sys_plan9_386.s
(4.48 KB)
📄
sys_plan9_amd64.s
(4.55 KB)
📄
sys_plan9_arm.s
(7.03 KB)
📄
sys_ppc64x.go
(532 B)
📄
sys_riscv64.go
(469 B)
📄
sys_s390x.go
(469 B)
📄
sys_solaris_amd64.s
(6.42 KB)
📄
sys_wasm.go
(754 B)
📄
sys_wasm.s
(2.65 KB)
📄
sys_windows_386.s
(7.65 KB)
📄
sys_windows_amd64.s
(8.88 KB)
📄
sys_windows_arm.s
(11.97 KB)
📄
sys_windows_arm64.s
(11.45 KB)
📄
sys_x86.go
(552 B)
📄
syscall2_solaris.go
(1.65 KB)
📄
syscall_aix.go
(6 KB)
📄
syscall_solaris.go
(8.01 KB)
📄
syscall_windows.go
(16.95 KB)
📄
syscall_windows_test.go
(32.96 KB)
📁
testdata
📄
textflag.h
(1.52 KB)
📄
time.go
(30.75 KB)
📄
time_fake.go
(2.5 KB)
📄
time_linux_amd64.s
(2.02 KB)
📄
time_nofake.go
(709 B)
📄
time_test.go
(2.03 KB)
📄
time_windows.h
(753 B)
📄
time_windows_386.s
(1.79 KB)
📄
time_windows_amd64.s
(871 B)
📄
time_windows_arm.s
(2.1 KB)
📄
time_windows_arm64.s
(1021 B)
📄
timeasm.go
(418 B)
📄
timestub.go
(532 B)
📄
timestub2.go
(314 B)
📄
tls_arm.s
(3.45 KB)
📄
tls_arm64.h
(1.1 KB)
📄
tls_arm64.s
(1.2 KB)
📄
tls_loong64.s
(589 B)
📄
tls_mips64x.s
(733 B)
📄
tls_mipsx.s
(709 B)
📄
tls_ppc64x.s
(1.5 KB)
📄
tls_riscv64.s
(726 B)
📄
tls_s390x.s
(1.55 KB)
📄
tls_stub.go
(260 B)
📄
tls_windows_amd64.go
(294 B)
📁
trace
📄
trace.go
(45.8 KB)
📄
traceback.go
(48.18 KB)
📄
traceback_test.go
(11.64 KB)
📄
type.go
(17.43 KB)
📄
typekind.go
(742 B)
📄
utf8.go
(3.39 KB)
📄
vdso_elf32.go
(2.76 KB)
📄
vdso_elf64.go
(2.84 KB)
📄
vdso_freebsd.go
(2.44 KB)
📄
vdso_freebsd_arm.go
(454 B)
📄
vdso_freebsd_arm64.go
(443 B)
📄
vdso_freebsd_x86.go
(1.85 KB)
📄
vdso_in_none.go
(443 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_loong64.go
(793 B)
📄
vdso_linux_mips64x.go
(850 B)
📄
vdso_linux_ppc64x.go
(672 B)
📄
vdso_linux_riscv64.go
(666 B)
📄
vdso_linux_s390x.go
(681 B)
📄
vlop_386.s
(2.02 KB)
📄
vlop_arm.s
(7.06 KB)
📄
vlop_arm_test.go
(3.75 KB)
📄
vlrt.go
(6.71 KB)
📄
wincallback.go
(3.45 KB)
📄
write_err.go
(291 B)
📄
write_err_android.go
(4.65 KB)
📄
zcallback_windows.go
(155 B)
📄
zcallback_windows.s
(63.02 KB)
📄
zcallback_windows_arm.s
(89.32 KB)
📄
zcallback_windows_arm64.s
(89.32 KB)
Editing: malloc_test.go
// Copyright 2013 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_test import ( "flag" "fmt" "internal/race" "internal/testenv" "os" "os/exec" "reflect" "runtime" . "runtime" "strings" "sync/atomic" "testing" "time" "unsafe" ) var testMemStatsCount int func TestMemStats(t *testing.T) { testMemStatsCount++ // Make sure there's at least one forced GC. GC() // Test that MemStats has sane values. st := new(MemStats) ReadMemStats(st) nz := func(x any) error { if x != reflect.Zero(reflect.TypeOf(x)).Interface() { return nil } return fmt.Errorf("zero value") } le := func(thresh float64) func(any) error { return func(x any) error { // These sanity tests aren't necessarily valid // with high -test.count values, so only run // them once. if testMemStatsCount > 1 { return nil } if reflect.ValueOf(x).Convert(reflect.TypeOf(thresh)).Float() < thresh { return nil } return fmt.Errorf("insanely high value (overflow?); want <= %v", thresh) } } eq := func(x any) func(any) error { return func(y any) error { if x == y { return nil } return fmt.Errorf("want %v", x) } } // Of the uint fields, HeapReleased, HeapIdle can be 0. // PauseTotalNs can be 0 if timer resolution is poor. fields := map[string][]func(any) error{ "Alloc": {nz, le(1e10)}, "TotalAlloc": {nz, le(1e11)}, "Sys": {nz, le(1e10)}, "Lookups": {eq(uint64(0))}, "Mallocs": {nz, le(1e10)}, "Frees": {nz, le(1e10)}, "HeapAlloc": {nz, le(1e10)}, "HeapSys": {nz, le(1e10)}, "HeapIdle": {le(1e10)}, "HeapInuse": {nz, le(1e10)}, "HeapReleased": {le(1e10)}, "HeapObjects": {nz, le(1e10)}, "StackInuse": {nz, le(1e10)}, "StackSys": {nz, le(1e10)}, "MSpanInuse": {nz, le(1e10)}, "MSpanSys": {nz, le(1e10)}, "MCacheInuse": {nz, le(1e10)}, "MCacheSys": {nz, le(1e10)}, "BuckHashSys": {nz, le(1e10)}, "GCSys": {nz, le(1e10)}, "OtherSys": {nz, le(1e10)}, "NextGC": {nz, le(1e10)}, "LastGC": {nz}, "PauseTotalNs": {le(1e11)}, "PauseNs": nil, "PauseEnd": nil, "NumGC": {nz, le(1e9)}, "NumForcedGC": {nz, le(1e9)}, "GCCPUFraction": {le(0.99)}, "EnableGC": {eq(true)}, "DebugGC": {eq(false)}, "BySize": nil, } rst := reflect.ValueOf(st).Elem() for i := 0; i < rst.Type().NumField(); i++ { name, val := rst.Type().Field(i).Name, rst.Field(i).Interface() checks, ok := fields[name] if !ok { t.Errorf("unknown MemStats field %s", name) continue } for _, check := range checks { if err := check(val); err != nil { t.Errorf("%s = %v: %s", name, val, err) } } } if st.Sys != st.HeapSys+st.StackSys+st.MSpanSys+st.MCacheSys+ st.BuckHashSys+st.GCSys+st.OtherSys { t.Fatalf("Bad sys value: %+v", *st) } if st.HeapIdle+st.HeapInuse != st.HeapSys { t.Fatalf("HeapIdle(%d) + HeapInuse(%d) should be equal to HeapSys(%d), but isn't.", st.HeapIdle, st.HeapInuse, st.HeapSys) } if lpe := st.PauseEnd[int(st.NumGC+255)%len(st.PauseEnd)]; st.LastGC != lpe { t.Fatalf("LastGC(%d) != last PauseEnd(%d)", st.LastGC, lpe) } var pauseTotal uint64 for _, pause := range st.PauseNs { pauseTotal += pause } if int(st.NumGC) < len(st.PauseNs) { // We have all pauses, so this should be exact. if st.PauseTotalNs != pauseTotal { t.Fatalf("PauseTotalNs(%d) != sum PauseNs(%d)", st.PauseTotalNs, pauseTotal) } for i := int(st.NumGC); i < len(st.PauseNs); i++ { if st.PauseNs[i] != 0 { t.Fatalf("Non-zero PauseNs[%d]: %+v", i, st) } if st.PauseEnd[i] != 0 { t.Fatalf("Non-zero PauseEnd[%d]: %+v", i, st) } } } else { if st.PauseTotalNs < pauseTotal { t.Fatalf("PauseTotalNs(%d) < sum PauseNs(%d)", st.PauseTotalNs, pauseTotal) } } if st.NumForcedGC > st.NumGC { t.Fatalf("NumForcedGC(%d) > NumGC(%d)", st.NumForcedGC, st.NumGC) } } func TestStringConcatenationAllocs(t *testing.T) { n := testing.AllocsPerRun(1e3, func() { b := make([]byte, 10) for i := 0; i < 10; i++ { b[i] = byte(i) + '0' } s := "foo" + string(b) if want := "foo0123456789"; s != want { t.Fatalf("want %v, got %v", want, s) } }) // Only string concatenation allocates. if n != 1 { t.Fatalf("want 1 allocation, got %v", n) } } func TestTinyAlloc(t *testing.T) { if runtime.Raceenabled { t.Skip("tinyalloc suppressed when running in race mode") } const N = 16 var v [N]unsafe.Pointer for i := range v { v[i] = unsafe.Pointer(new(byte)) } chunks := make(map[uintptr]bool, N) for _, p := range v { chunks[uintptr(p)&^7] = true } if len(chunks) == N { t.Fatal("no bytes allocated within the same 8-byte chunk") } } type obj12 struct { a uint64 b uint32 } func TestTinyAllocIssue37262(t *testing.T) { if runtime.Raceenabled { t.Skip("tinyalloc suppressed when running in race mode") } // Try to cause an alignment access fault // by atomically accessing the first 64-bit // value of a tiny-allocated object. // See issue 37262 for details. // GC twice, once to reach a stable heap state // and again to make sure we finish the sweep phase. runtime.GC() runtime.GC() // Disable preemption so we stay on one P's tiny allocator and // nothing else allocates from it. runtime.Acquirem() // Make 1-byte allocations until we get a fresh tiny slot. aligned := false for i := 0; i < 16; i++ { x := runtime.Escape(new(byte)) if uintptr(unsafe.Pointer(x))&0xf == 0xf { aligned = true break } } if !aligned { runtime.Releasem() t.Fatal("unable to get a fresh tiny slot") } // Create a 4-byte object so that the current // tiny slot is partially filled. runtime.Escape(new(uint32)) // Create a 12-byte object, which fits into the // tiny slot. If it actually gets place there, // then the field "a" will be improperly aligned // for atomic access on 32-bit architectures. // This won't be true if issue 36606 gets resolved. tinyObj12 := runtime.Escape(new(obj12)) // Try to atomically access "x.a". atomic.StoreUint64(&tinyObj12.a, 10) runtime.Releasem() } func TestPageCacheLeak(t *testing.T) { defer GOMAXPROCS(GOMAXPROCS(1)) leaked := PageCachePagesLeaked() if leaked != 0 { t.Fatalf("found %d leaked pages in page caches", leaked) } } func TestPhysicalMemoryUtilization(t *testing.T) { got := runTestProg(t, "testprog", "GCPhys") want := "OK\n" if got != want { t.Fatalf("expected %q, but got %q", want, got) } } func TestScavengedBitsCleared(t *testing.T) { var mismatches [128]BitsMismatch if n, ok := CheckScavengedBitsCleared(mismatches[:]); !ok { t.Errorf("uncleared scavenged bits") for _, m := range mismatches[:n] { t.Logf("\t@ address 0x%x", m.Base) t.Logf("\t| got: %064b", m.Got) t.Logf("\t| want: %064b", m.Want) } t.FailNow() } } type acLink struct { x [1 << 20]byte } var arenaCollisionSink []*acLink func TestArenaCollision(t *testing.T) { testenv.MustHaveExec(t) // Test that mheap.sysAlloc handles collisions with other // memory mappings. if os.Getenv("TEST_ARENA_COLLISION") != "1" { cmd := testenv.CleanCmdEnv(exec.Command(os.Args[0], "-test.run=TestArenaCollision", "-test.v")) cmd.Env = append(cmd.Env, "TEST_ARENA_COLLISION=1") out, err := cmd.CombinedOutput() if race.Enabled { // This test runs the runtime out of hint // addresses, so it will start mapping the // heap wherever it can. The race detector // doesn't support this, so look for the // expected failure. if want := "too many address space collisions"; !strings.Contains(string(out), want) { t.Fatalf("want %q, got:\n%s", want, string(out)) } } else if !strings.Contains(string(out), "PASS\n") || err != nil { t.Fatalf("%s\n(exit status %v)", string(out), err) } return } disallowed := [][2]uintptr{} // Drop all but the next 3 hints. 64-bit has a lot of hints, // so it would take a lot of memory to go through all of them. KeepNArenaHints(3) // Consume these 3 hints and force the runtime to find some // fallback hints. for i := 0; i < 5; i++ { // Reserve memory at the next hint so it can't be used // for the heap. start, end := MapNextArenaHint() disallowed = append(disallowed, [2]uintptr{start, end}) // Allocate until the runtime tries to use the hint we // just mapped over. hint := GetNextArenaHint() for GetNextArenaHint() == hint { ac := new(acLink) arenaCollisionSink = append(arenaCollisionSink, ac) // The allocation must not have fallen into // one of the reserved regions. p := uintptr(unsafe.Pointer(ac)) for _, d := range disallowed { if d[0] <= p && p < d[1] { t.Fatalf("allocation %#x in reserved region [%#x, %#x)", p, d[0], d[1]) } } } } } var mallocSink uintptr func BenchmarkMalloc8(b *testing.B) { var x uintptr for i := 0; i < b.N; i++ { p := new(int64) x ^= uintptr(unsafe.Pointer(p)) } mallocSink = x } func BenchmarkMalloc16(b *testing.B) { var x uintptr for i := 0; i < b.N; i++ { p := new([2]int64) x ^= uintptr(unsafe.Pointer(p)) } mallocSink = x } func BenchmarkMallocTypeInfo8(b *testing.B) { var x uintptr for i := 0; i < b.N; i++ { p := new(struct { p [8 / unsafe.Sizeof(uintptr(0))]*int }) x ^= uintptr(unsafe.Pointer(p)) } mallocSink = x } func BenchmarkMallocTypeInfo16(b *testing.B) { var x uintptr for i := 0; i < b.N; i++ { p := new(struct { p [16 / unsafe.Sizeof(uintptr(0))]*int }) x ^= uintptr(unsafe.Pointer(p)) } mallocSink = x } type LargeStruct struct { x [16][]byte } func BenchmarkMallocLargeStruct(b *testing.B) { var x uintptr for i := 0; i < b.N; i++ { p := make([]LargeStruct, 2) x ^= uintptr(unsafe.Pointer(&p[0])) } mallocSink = x } var n = flag.Int("n", 1000, "number of goroutines") func BenchmarkGoroutineSelect(b *testing.B) { quit := make(chan struct{}) read := func(ch chan struct{}) { for { select { case _, ok := <-ch: if !ok { return } case <-quit: return } } } benchHelper(b, *n, read) } func BenchmarkGoroutineBlocking(b *testing.B) { read := func(ch chan struct{}) { for { if _, ok := <-ch; !ok { return } } } benchHelper(b, *n, read) } func BenchmarkGoroutineForRange(b *testing.B) { read := func(ch chan struct{}) { for range ch { } } benchHelper(b, *n, read) } func benchHelper(b *testing.B, n int, read func(chan struct{})) { m := make([]chan struct{}, n) for i := range m { m[i] = make(chan struct{}, 1) go read(m[i]) } b.StopTimer() b.ResetTimer() GC() for i := 0; i < b.N; i++ { for _, ch := range m { if ch != nil { ch <- struct{}{} } } time.Sleep(10 * time.Millisecond) b.StartTimer() GC() b.StopTimer() } for _, ch := range m { close(ch) } time.Sleep(10 * time.Millisecond) } func BenchmarkGoroutineIdle(b *testing.B) { quit := make(chan struct{}) fn := func() { <-quit } for i := 0; i < *n; i++ { go fn() } GC() b.ResetTimer() for i := 0; i < b.N; i++ { GC() } b.StopTimer() close(quit) time.Sleep(10 * time.Millisecond) }
Upload File
Create Folder