v0.11.0-alpha.11 63002e0

go_util.go RawHistoryFolder

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
3
4//go:build !cgo && (darwin || freebsd || linux || netbsd)
5
6package fakecgo
7
8import "unsafe"
9
10// _cgo_thread_start is split into three parts in cgo since only one part is system dependent (keep it here for easier handling)
11
12// _cgo_thread_start(ThreadStart *arg) (runtime/cgo/gcc_util.c)
13// This get's called instead of the go code for creating new threads
14// -> pthread_* stuff is used, so threads are setup correctly for C
15// If this is missing, TLS is only setup correctly on thread 1!
16// This function should be go:systemstack instead of go:nosplit (but that requires runtime)
17//
18//go:nosplit
19//go:norace
20func x_cgo_thread_start(arg *ThreadStart) {
21	var ts *ThreadStart
22	// Make our own copy that can persist after we return.
23	//	_cgo_tsan_acquire();
24	ts = (*ThreadStart)(malloc(unsafe.Sizeof(*ts)))
25	//	_cgo_tsan_release();
26	if ts == nil {
27		println("fakecgo: out of memory in thread_start")
28		abort()
29	}
30	// *ts = *arg would cause a writebarrier so copy using slices
31	const ptrSize = unsafe.Sizeof(uintptr(0))
32	s1 := unsafe.Slice((*uintptr)(unsafe.Pointer(ts)), unsafe.Sizeof(*ts)/ptrSize)
33	s2 := unsafe.Slice((*uintptr)(unsafe.Pointer(arg)), unsafe.Sizeof(*arg)/ptrSize)
34	for i := range s2 {
35		s1[i] = s2[i]
36	}
37	_cgo_sys_thread_start(ts) // OS-dependent half
38}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 102

↑↓ moveenter openesc close