summaryrefslogtreecommitdiff
path: root/src/user/lib/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/user/lib/include')
-rw-r--r--src/user/lib/include/bits/file.h9
-rw-r--r--src/user/lib/include/stdio.h18
-rw-r--r--src/user/lib/include/stdlib.h5
-rw-r--r--src/user/lib/include/string.h1
-rw-r--r--src/user/lib/include/unistd.h5
5 files changed, 38 insertions, 0 deletions
diff --git a/src/user/lib/include/bits/file.h b/src/user/lib/include/bits/file.h
new file mode 100644
index 0000000..d37b7de
--- /dev/null
+++ b/src/user/lib/include/bits/file.h
@@ -0,0 +1,9 @@
+#pragma once
+#include <stdbool.h>
+// TODO make opaque
+struct libc_file {
+ int fd;
+ int pos;
+ bool eof;
+};
+typedef struct libc_file libc_file;
diff --git a/src/user/lib/include/stdio.h b/src/user/lib/include/stdio.h
new file mode 100644
index 0000000..291a194
--- /dev/null
+++ b/src/user/lib/include/stdio.h
@@ -0,0 +1,18 @@
+#pragma once
+#include <bits/file.h>
+#include <stddef.h>
+
+int printf(const char *fmt, ...);
+int snprintf(char *str, size_t len, const char *fmt, ...);
+
+int _klogf(const char *fmt, ...); // for kernel debugging only
+
+
+extern libc_file *const stdin, *const stdout;
+
+libc_file *file_open(const char *path, int flags);
+libc_file *file_reopen(libc_file*, const char *path, int flags);
+libc_file *file_clone(const libc_file*);
+int file_read(libc_file*, char *buf, size_t len);
+int file_write(libc_file*, const char *buf, size_t len);
+void file_close(libc_file*);
diff --git a/src/user/lib/include/stdlib.h b/src/user/lib/include/stdlib.h
new file mode 100644
index 0000000..5916ebc
--- /dev/null
+++ b/src/user/lib/include/stdlib.h
@@ -0,0 +1,5 @@
+#pragma once
+#include <stddef.h>
+
+void *malloc(size_t size);
+void free(void *ptr);
diff --git a/src/user/lib/include/string.h b/src/user/lib/include/string.h
new file mode 100644
index 0000000..e5c0255
--- /dev/null
+++ b/src/user/lib/include/string.h
@@ -0,0 +1 @@
+#include <shared/mem.h>
diff --git a/src/user/lib/include/unistd.h b/src/user/lib/include/unistd.h
new file mode 100644
index 0000000..4a30298
--- /dev/null
+++ b/src/user/lib/include/unistd.h
@@ -0,0 +1,5 @@
+#pragma once
+#include <camellia/types.h> // TODO only needed because of handle_t
+
+int fork(void);
+int close(handle_t h);