summaryrefslogtreecommitdiff
path: root/src/lib/runtime/runtime.h
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2008-06-04 15:52:48 -0700
committerRob Pike <r@golang.org>2008-06-04 15:52:48 -0700
commit6f6ab053eb699ce1cef5a498ba98b8cbc6ae1630 (patch)
tree6706ddc6be837c106795c8d20934a3605cdaee91 /src/lib/runtime/runtime.h
parentd42919bb3e69820b030a5a0815ff2f3d15a6da9c (diff)
downloadgolang-6f6ab053eb699ce1cef5a498ba98b8cbc6ae1630.tar.gz
initial runtime code checkin
SVN=121183
Diffstat (limited to 'src/lib/runtime/runtime.h')
-rw-r--r--src/lib/runtime/runtime.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/lib/runtime/runtime.h b/src/lib/runtime/runtime.h
new file mode 100644
index 000000000..65c3278e5
--- /dev/null
+++ b/src/lib/runtime/runtime.h
@@ -0,0 +1,107 @@
+// 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)
+
+/*
+ * very low level
+ */
+void FLUSH(void*);
+void prints(int8*);
+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);
+
+/*
+ * runtime
+ */
+void sys_printbool(bool);
+void sys_printfloat(float64);
+void sys_printint(int64);
+void sys_printstring(string);
+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*);