mirror of https://github.com/golang/go.git
66 lines
1.3 KiB
C
66 lines
1.3 KiB
C
// Copyright 2009 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.
|
|
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
|
|
#define nil ((void*)0)
|
|
#define nelem(x) (sizeof(x)/sizeof((x)[0]))
|
|
|
|
typedef uint32_t uint32;
|
|
typedef uint64_t uint64;
|
|
typedef uintptr_t uintptr;
|
|
|
|
/*
|
|
* The beginning of the per-goroutine structure,
|
|
* as defined in ../pkg/runtime/runtime.h.
|
|
* Just enough to edit these two fields.
|
|
*/
|
|
typedef struct G G;
|
|
struct G
|
|
{
|
|
uintptr stackguard;
|
|
uintptr stackbase;
|
|
};
|
|
|
|
/*
|
|
* Arguments to the _cgo_thread_start call.
|
|
* Also known to ../pkg/runtime/runtime.h.
|
|
*/
|
|
typedef struct ThreadStart ThreadStart;
|
|
struct ThreadStart
|
|
{
|
|
G *g;
|
|
uintptr *tls;
|
|
void (*fn)(void);
|
|
};
|
|
|
|
/*
|
|
* Called by 5c/6c/8c world.
|
|
* Makes a local copy of the ThreadStart and
|
|
* calls _cgo_sys_thread_start(ts).
|
|
*/
|
|
extern void (*_cgo_thread_start)(ThreadStart *ts);
|
|
|
|
/*
|
|
* Creates the new operating system thread (OS, arch dependent).
|
|
*/
|
|
void _cgo_sys_thread_start(ThreadStart *ts);
|
|
|
|
/*
|
|
* Call fn in the 6c world.
|
|
*/
|
|
void crosscall_amd64(void (*fn)(void));
|
|
|
|
/*
|
|
* Call fn in the 8c world.
|
|
*/
|
|
void crosscall_386(void (*fn)(void));
|
|
|
|
/*
|
|
* Prints error then calls abort. For linux and android.
|
|
*/
|
|
void fatalf(const char* format, ...);
|