mirror of
https://github.com/autc04/Retro68.git
synced 2024-12-02 18:53:22 +00:00
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
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 "unsafe"
|
|
|
|
// These functions are called from C code via cgo/callbacks.c.
|
|
|
|
// Allocate memory. This allocates the requested number of bytes in
|
|
// memory controlled by the Go runtime. The allocated memory will be
|
|
// zeroed. You are responsible for ensuring that the Go garbage
|
|
// collector can see a pointer to the allocated memory for as long as
|
|
// it is valid, e.g., by storing a pointer in a local variable in your
|
|
// C function, or in memory allocated by the Go runtime. If the only
|
|
// pointers are in a C global variable or in memory allocated via
|
|
// malloc, then the Go garbage collector may collect the memory.
|
|
//
|
|
// TODO(rsc,iant): This memory is untyped.
|
|
// Either we need to add types or we need to stop using it.
|
|
|
|
func _cgo_allocate_internal(len uintptr) unsafe.Pointer {
|
|
if len == 0 {
|
|
len = 1
|
|
}
|
|
ret := unsafe.Pointer(&make([]unsafe.Pointer, (len+ptrSize-1)/ptrSize)[0])
|
|
c := new(cgomal)
|
|
c.alloc = ret
|
|
gp := getg()
|
|
c.next = gp.m.cgomal
|
|
gp.m.cgomal = c
|
|
return ret
|
|
}
|
|
|
|
// Panic.
|
|
|
|
func _cgo_panic_internal(p *byte) {
|
|
panic(gostringnocopy(p))
|
|
}
|