1
0
mirror of https://github.com/golang/go synced 2024-10-03 12:31:21 -06:00
go/src/runtime/runtime.h
2008-06-30 14:39:47 -07:00

144 lines
2.8 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.
/*
* basic types
*/
typedef signed char int8;
typedef unsigned char uint8;
typedef signed short int16;
typedef unsigned short uint16;
typedef signed int int32;
typedef unsigned int uint32;
typedef signed long long int int64;
typedef unsigned long long int uint64;
typedef float float32;
typedef double float64;
/*
* get rid of C types
*/
#define unsigned XXunsigned
#define signed XXsigned
#define char XXchar
#define short XXshort
#define int XXint
#define long XXlong
#define float XXfloat
#define double XXdouble
/*
* defined types
*/
typedef uint8 bool;
typedef uint8 byte;
typedef struct
{
int32 len;
byte str[1];
} *string;
typedef struct
{
byte* name;
uint32 hash;
void (*fun)(void);
} Sigs;
typedef struct
{
byte* name;
uint32 hash;
uint32 offset;
} Sigi;
typedef struct Map Map;
struct Map
{
Sigi* si;
Sigs* ss;
Map* link;
int32 bad;
int32 unused;
void (*fun[])(void);
};
/*
* defined constants
*/
enum
{
true = 1,
false = 0,
};
/*
* defined macros
* you need super-goru privilege
* to add this list.
*/
#define nelem(x) (sizeof(x)/sizeof((x)[0]))
#define nil ((void*)0)
/*
* common functions and data
*/
int32 strcmp(byte*, byte*);
int32 findnull(int8*);
void dump(byte*, int32);
extern string emptystring;
extern int32 debug;
/*
* very low level c-called
*/
void FLUSH(void*);
void* getu(void);
void throw(int8*);
void prints(int8*);
void mcpy(byte*, byte*, uint32);
void* mal(uint32);
uint32 cmpstring(string, string);
void initsig(void);
void traceback(uint8 *pc, uint8 *sp, void* up);
int32 open(byte*, int32);
int32 read(int32, void*, int32);
void close(int32);
int32 fstat(int32, void*);
struct SigTab
{
int32 catch;
int8 *name;
};
/*
* low level go -called
*/
void sys·exit(int32);
void sys·write(int32, void*, int32);
void sys·breakpoint(void);
uint8* sys·mmap(byte*, uint32, int32, int32, int32, uint32);
void sys·memclr(byte*, uint32);
void* sys·getcallerpc(void*);
void sys·sigaction(int64, void*, void*);
void sys·rt_sigaction(int64, void*, void*, uint64);
/*
* runtime go-called
*/
void sys·printbool(bool);
void sys·printfloat(float64);
void sys·printint(int64);
void sys·printstring(string);
void sys·printpc(void*);
void sys·printpointer(void*);
void sys·catstring(string, string, string);
void sys·cmpstring(string, string, int32);
void sys·slicestring(string, int32, int32, string);
void sys·indexstring(string, int32, byte);
void sys·intstring(int64, string);
void sys·ifaces2i(Sigi*, Sigs*, Map*, void*);
void sys·ifacei2i(Sigi*, Map*, void*);
void sys·ifacei2s(Sigs*, Map*, void*);
void sys·readfile(string, string, bool);