aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/base.h2
-rw-r--r--include/base/gz.h2
-rw-r--r--include/base/io.h31
-rw-r--r--include/rt.h1
-rw-r--r--include/sys.h2
-rw-r--r--include/u.h1
6 files changed, 21 insertions, 18 deletions
diff --git a/include/base.h b/include/base.h
index a7e9319..d532a85 100644
--- a/include/base.h
+++ b/include/base.h
@@ -3,8 +3,8 @@
// ------------------------------------------------------------------------
// standard library
+#include <rt.h>
#include <sys.h>
-#include <arch/types.h>
// TODO: remove dependency system headers
#include <assert.h>
diff --git a/include/base/gz.h b/include/base/gz.h
index 3b3a830..ac241d3 100644
--- a/include/base/gz.h
+++ b/include/base/gz.h
@@ -25,5 +25,5 @@ int gz·putbyte(gz·Stream *s, byte str);
int gz·putstring(gz·Stream *s, byte *str);
int gz·printf(gz·Stream *s, byte *fmt, ...);
int gz·flush(gz·Stream *s);
-int gz·seek(gz·Stream *s, long off, enum SeekPos whence);
+int gz·seek(gz·Stream *s, long off, int whence);
long gz·tell(gz·Stream *s);
diff --git a/include/base/io.h b/include/base/io.h
index 5e0f1e0..5d31282 100644
--- a/include/base/io.h
+++ b/include/base/io.h
@@ -1,12 +1,5 @@
#pragma once
-enum SeekPos
-{
- seek·cur = SEEK_CUR,
- seek·set = SEEK_SET,
- seek·end = SEEK_END
-};
-
typedef struct io·Reader
{
int (*read)(void*, int sz, int n, void *buf);
@@ -22,7 +15,7 @@ extern io·Peeker sys·Peeker;
typedef struct io·Seeker
{
- int (*seek)(void *skr, long off, enum SeekPos whence);
+ int (*seek)(void *skr, long off, int whence);
long (*tell)(void *skr);
} io·Seeker;
extern io·Seeker sys·Seeker;
@@ -93,10 +86,11 @@ int io·putbyte(io·Stream *s, byte c);
int io·putstring(io·Stream *s, string str);
int io·write(io·Stream *s, int sz, int n, void *buf);
int io·flush(io·Stream *s);
-int io·seek(io·Stream *s, long off, enum SeekPos whence);
+int io·seek(io·Stream *s, long off, int whence);
long io·tell(io·Stream *s);
/* buffered i/o */
+typedef struct io·Header io·Header;
typedef struct io·Buffer io·Buffer;
#define iota(x) (1 << (x))
@@ -116,21 +110,26 @@ enum
};
#undef iota
-struct io·Buffer
+struct io·Header
{
- int state, id, flag;
+ int state, fd, flag;
struct{
- int in; /* negative number of bytes at end */
- int out; /* number of bytes at start */
- int line; /* number of bytes after last readline */
+ int in; /* negative number of bytes at end */
+ int out; /* number of bytes at start */
+ int ln; /* number of bytes after last readline */
} off;
intptr pos, cap; /* position in file, capacity of buffer */
uchar *b,*g,*e; /* start, good bytes, end of byte pointers */
- uchar bytes[];
+};
+
+struct io·Buffer
+{
+ io·Header;
+ uchar bytes[io·BufLen+io·BufUngets];
};
int bio·init(io·Buffer *io, int fd, int mode);
-int bio·initcap(io·Buffer *io, int fd, int mode, int cap);
+int bio·initcap(io·Header *io, int fd, int mode, int cap, uchar *buf);
/* basic os helpers */
/* XXX: find a better location for this */
diff --git a/include/rt.h b/include/rt.h
index 43357cd..ce92af0 100644
--- a/include/rt.h
+++ b/include/rt.h
@@ -12,4 +12,5 @@ extern struct rt·Context
extern char **rt·environ;
+int rt·atexit(void (*func)(void *), void *arg);
void noreturn rt·exit(int code);
diff --git a/include/sys.h b/include/sys.h
index 0c703a8..e983f2a 100644
--- a/include/sys.h
+++ b/include/sys.h
@@ -2,6 +2,7 @@
/* types declarations */
#include <arch/types.h>
+#include <arch/constants.h>
#include <os/types.h>
#include <os/constants.h>
@@ -14,6 +15,7 @@
#define sys·ORead 0x0u
#define sys·OWrite 0x1u
#define sys·ORdwr 0x2u
+#define sys·OExec sys·OPath
/* seek */
#define sys·SeekSet 0u
diff --git a/include/u.h b/include/u.h
index d415d82..fe251ac 100644
--- a/include/u.h
+++ b/include/u.h
@@ -112,6 +112,7 @@ typedef __builtin_va_list va_list;
#define noreturn _Noreturn
#define hidden __attribute__((__visibility__("hidden")))
#define weakalias(old, new) extern __typeof(old) new __attribute__((weak, alias(#old)))
+#define weaklink __attribute__((weak))
/* offsets */
#define offsetof(t, d) __builtin_offsetof(t, d)