v0.11.0-alpha.11 63002e0

callbacks.go RawHistoryFolder

1// Copyright 2011 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5//go:build !cgo && (darwin || freebsd || linux || netbsd)
6
7package fakecgo
8
9import (
10	_ "unsafe"
11)
12
13// TODO: decide if we need _runtime_cgo_panic_internal
14
15//go:linkname x_cgo_init_trampoline x_cgo_init_trampoline
16//go:linkname _cgo_init _cgo_init
17var x_cgo_init_trampoline byte
18var _cgo_init = &x_cgo_init_trampoline
19
20// Creates a new system thread without updating any Go state.
21//
22// This method is invoked during shared library loading to create a new OS
23// thread to perform the runtime initialization. This method is similar to
24// _cgo_sys_thread_start except that it doesn't update any Go state.
25
26//go:linkname x_cgo_thread_start_trampoline x_cgo_thread_start_trampoline
27//go:linkname _cgo_thread_start _cgo_thread_start
28var x_cgo_thread_start_trampoline byte
29var _cgo_thread_start = &x_cgo_thread_start_trampoline
30
31// Notifies that the runtime has been initialized.
32//
33// We currently block at every CGO entry point (via _cgo_wait_runtime_init_done)
34// to ensure that the runtime has been initialized before the CGO call is
35// executed. This is necessary for shared libraries where we kickoff runtime
36// initialization in a separate thread and return without waiting for this
37// thread to complete the init.
38
39//go:linkname x_cgo_notify_runtime_init_done_trampoline x_cgo_notify_runtime_init_done_trampoline
40//go:linkname _cgo_notify_runtime_init_done _cgo_notify_runtime_init_done
41var x_cgo_notify_runtime_init_done_trampoline byte
42var _cgo_notify_runtime_init_done = &x_cgo_notify_runtime_init_done_trampoline
43
44// Indicates whether a dummy thread key has been created or not.
45//
46// When calling go exported function from C, we register a destructor
47// callback, for a dummy thread key, by using pthread_key_create.
48
49//go:linkname _cgo_pthread_key_created _cgo_pthread_key_created
50var x_cgo_pthread_key_created uintptr
51var _cgo_pthread_key_created = &x_cgo_pthread_key_created
52
53// Set the x_crosscall2_ptr C function pointer variable point to crosscall2.
54// It's for the runtime package to call at init time.
55func set_crosscall2() {
56	// nothing needs to be done here for fakecgo
57	// because it's possible to just call cgocallback directly
58}
59
60//go:linkname _set_crosscall2 runtime.set_crosscall2
61var _set_crosscall2 = set_crosscall2
62
63// Store the g into the thread-specific value.
64// So that pthread_key_destructor will dropm when the thread is exiting.
65
66//go:linkname x_cgo_bindm_trampoline x_cgo_bindm_trampoline
67//go:linkname _cgo_bindm _cgo_bindm
68var x_cgo_bindm_trampoline byte
69var _cgo_bindm = &x_cgo_bindm_trampoline
70
71// TODO: decide if we need x_cgo_set_context_function
72// TODO: decide if we need _cgo_yield
73
74var (
75	// In Go 1.20 the race detector was rewritten to pure Go
76	// on darwin. This means that when CGO_ENABLED=0 is set
77	// fakecgo is built with race detector code. This is not
78	// good since this code is pretending to be C. The go:norace
79	// pragma is not enough, since it only applies to the native
80	// ABIInternal function. The ABIO wrapper (which is necessary,
81	// since all references to text symbols from assembly will use it)
82	// does not inherit the go:norace pragma, so it will still be
83	// instrumented by the race detector.
84	//
85	// To circumvent this issue, using closure calls in the
86	// assembly, which forces the compiler to use the ABIInternal
87	// native implementation (which has go:norace) instead.
88	threadentry_call        = threadentry
89	x_cgo_init_call         = x_cgo_init
90	x_cgo_setenv_call       = x_cgo_setenv
91	x_cgo_unsetenv_call     = x_cgo_unsetenv
92	x_cgo_thread_start_call = x_cgo_thread_start
93)

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