diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/base.h | 2 | ||||
-rw-r--r-- | include/base/gz.h | 2 | ||||
-rw-r--r-- | include/base/io.h | 31 | ||||
-rw-r--r-- | include/rt.h | 1 | ||||
-rw-r--r-- | include/sys.h | 2 | ||||
-rw-r--r-- | include/u.h | 1 |
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)
|