From a3e27d361919392eeb0086ed93b105d8301c7913 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Tue, 26 Jul 2022 19:31:06 +0200 Subject: user: move the POSIX-y stuff to the proper header files --- src/user/lib/elfload.c | 3 +++ src/user/lib/elfload.h | 2 +- src/user/lib/elfreloc.c | 2 +- src/user/lib/esemaphore.c | 3 ++- src/user/lib/fs/misc.c | 5 ++++- src/user/lib/fs/misc.h | 2 +- src/user/lib/include/bits/file.h | 9 +++++++++ src/user/lib/include/stdio.h | 18 ++++++++++++++++++ src/user/lib/include/stdlib.h | 5 +++++ src/user/lib/include/string.h | 1 + src/user/lib/include/unistd.h | 5 +++++ src/user/lib/malloc.c | 5 ++--- src/user/lib/malloc.h | 5 ----- src/user/lib/stdlib.c | 7 +++++-- src/user/lib/stdlib.h | 28 ---------------------------- 15 files changed, 57 insertions(+), 43 deletions(-) create mode 100644 src/user/lib/include/bits/file.h create mode 100644 src/user/lib/include/stdio.h create mode 100644 src/user/lib/include/stdlib.h create mode 100644 src/user/lib/include/string.h create mode 100644 src/user/lib/include/unistd.h delete mode 100644 src/user/lib/malloc.h delete mode 100644 src/user/lib/stdlib.h (limited to 'src/user/lib') diff --git a/src/user/lib/elfload.c b/src/user/lib/elfload.c index 45ce2a0..a30fd7c 100644 --- a/src/user/lib/elfload.c +++ b/src/user/lib/elfload.c @@ -1,6 +1,9 @@ #include #include #include +#include +#include +#include #include #include diff --git a/src/user/lib/elfload.h b/src/user/lib/elfload.h index 40c4874..8310b3f 100644 --- a/src/user/lib/elfload.h +++ b/src/user/lib/elfload.h @@ -1,5 +1,5 @@ #pragma once -#include +#include void elf_execf(libc_file *f); void elf_exec(void *elf); diff --git a/src/user/lib/elfreloc.c b/src/user/lib/elfreloc.c index 550fe97..b6e3844 100644 --- a/src/user/lib/elfreloc.c +++ b/src/user/lib/elfreloc.c @@ -1,5 +1,5 @@ +#include #include -#include __attribute__((visibility("hidden"))) extern struct Elf64_Dyn _DYNAMIC[]; diff --git a/src/user/lib/esemaphore.c b/src/user/lib/esemaphore.c index 1da418e..3a4a836 100644 --- a/src/user/lib/esemaphore.c +++ b/src/user/lib/esemaphore.c @@ -1,7 +1,8 @@ #include #include +#include +#include #include -#include void esem_signal(struct evil_sem *sem) { _syscall_write(sem->signal, NULL, 0, 0); diff --git a/src/user/lib/fs/misc.c b/src/user/lib/fs/misc.c index 99993ed..3a248ec 100644 --- a/src/user/lib/fs/misc.c +++ b/src/user/lib/fs/misc.c @@ -2,8 +2,11 @@ #include #include #include +#include +#include +#include +#include #include -#include bool fork2_n_mount(const char *path) { handle_t h; diff --git a/src/user/lib/fs/misc.h b/src/user/lib/fs/misc.h index 1e41956..0d9eb20 100644 --- a/src/user/lib/fs/misc.h +++ b/src/user/lib/fs/misc.h @@ -1,6 +1,6 @@ #pragma once #include -#include +#include bool fork2_n_mount(const char *path); 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 +// 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 +#include + +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 + +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 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 // TODO only needed because of handle_t + +int fork(void); +int close(handle_t h); diff --git a/src/user/lib/malloc.c b/src/user/lib/malloc.c index bb6b653..ea65d74 100644 --- a/src/user/lib/malloc.c +++ b/src/user/lib/malloc.c @@ -1,9 +1,8 @@ #include #include #include -#include - -#include +#include +#include #define MBLOCK_MAGIC 0x1337BABE diff --git a/src/user/lib/malloc.h b/src/user/lib/malloc.h deleted file mode 100644 index 5916ebc..0000000 --- a/src/user/lib/malloc.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -#include - -void *malloc(size_t size); -void free(void *ptr); diff --git a/src/user/lib/stdlib.c b/src/user/lib/stdlib.c index 943af01..c998de7 100644 --- a/src/user/lib/stdlib.c +++ b/src/user/lib/stdlib.c @@ -1,12 +1,15 @@ #include #include -#include +#include +#include +#include +#include // TODO oh god this garbage - malloc, actually open, [...] static libc_file _stdin_null = { .fd = 0 }; static libc_file _stdout_null = { .fd = 1 }; -libc_file *stdin = &_stdin_null, *stdout = &_stdout_null; +libc_file *const stdin = &_stdin_null, *const stdout = &_stdout_null; static void backend_file(void *arg, const char *buf, size_t len) { file_write((libc_file*)arg, buf, len); diff --git a/src/user/lib/stdlib.h b/src/user/lib/stdlib.h deleted file mode 100644 index 64fbbe6..0000000 --- a/src/user/lib/stdlib.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once -#include -#include -#include -#include -#include - -int printf(const char *fmt, ...); -int snprintf(char *str, size_t len, const char *fmt, ...); - -int _klogf(const char *fmt, ...); // for kernel debugging only - -typedef struct { - int fd; - int pos; - bool eof; -} libc_file; -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*); - -extern libc_file *stdin, *stdout; - -int fork(void); -int close(handle_t h); -- cgit v1.2.3