From fca80df9e638a7d68147d91cbffda95aed96ab5c Mon Sep 17 00:00:00 2001 From: dzwdz Date: Thu, 23 Feb 2023 20:07:59 +0100 Subject: build: don't -Isrc/ in user code --- src/user/lib/include/bits/panic.h | 5 +++++ src/user/lib/include/draw.h | 24 ++++++++++++++++++++++++ src/user/lib/include/elfload.h | 14 ++++++++++++++ src/user/lib/include/esemaphore.h | 12 ++++++++++++ src/user/lib/include/getopt.h | 1 + src/user/lib/include/malloc.h | 1 + src/user/lib/include/setjmp.h | 2 +- src/user/lib/include/stdlib.h | 2 +- src/user/lib/include/thread.h | 9 +++++++++ src/user/lib/include/unistd.h | 2 +- 10 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 src/user/lib/include/bits/panic.h create mode 100644 src/user/lib/include/draw.h create mode 100644 src/user/lib/include/elfload.h create mode 100644 src/user/lib/include/esemaphore.h create mode 120000 src/user/lib/include/getopt.h create mode 120000 src/user/lib/include/malloc.h create mode 100644 src/user/lib/include/thread.h (limited to 'src/user/lib/include') diff --git a/src/user/lib/include/bits/panic.h b/src/user/lib/include/bits/panic.h new file mode 100644 index 0000000..91aec5f --- /dev/null +++ b/src/user/lib/include/bits/panic.h @@ -0,0 +1,5 @@ +#pragma once +#include +#include + +#define __libc_panic(...) do { fprintf(stderr, "__libc_panic @ %s:", __func__); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n"); abort(); } while (0) diff --git a/src/user/lib/include/draw.h b/src/user/lib/include/draw.h new file mode 100644 index 0000000..5e614be --- /dev/null +++ b/src/user/lib/include/draw.h @@ -0,0 +1,24 @@ +#pragma once +#include +#include +#include + +struct framebuf { + size_t len, width, height, pitch; + uint8_t bpp; + char *b; + + hid_t fd; +}; + +struct rect { uint32_t x1, y1, x2, y2; }; +void dirty_reset(struct rect *d); +void dirty_mark(struct rect *d, uint32_t x, uint32_t y); +void dirty_flush(struct rect *d, struct framebuf *fb); + +int fb_setup(struct framebuf *fb, const char *base); +int fb_anon(struct framebuf *fb, size_t w, size_t h); +uint32_t *fb_pixel(struct framebuf *fb, uint32_t x, uint32_t y); +void fb_cpy( + struct framebuf *dest, const struct framebuf *src, + size_t xd, size_t yd, size_t xs, size_t ys, size_t w, size_t h); diff --git a/src/user/lib/include/elfload.h b/src/user/lib/include/elfload.h new file mode 100644 index 0000000..825f765 --- /dev/null +++ b/src/user/lib/include/elfload.h @@ -0,0 +1,14 @@ +#pragma once +#include + +struct execdata { + int argc; + char **argv, **envp; + char *cwd; +}; + +void elf_execf(FILE *f, char **argv, char **envp); +void elf_exec(void *base, char **argv, char **envp); +void *elf_partialexec(void *elf); /* returns pointer to entry point */ + +void elf_selfreloc(void); // elfreloc.c diff --git a/src/user/lib/include/esemaphore.h b/src/user/lib/include/esemaphore.h new file mode 100644 index 0000000..9cc85e0 --- /dev/null +++ b/src/user/lib/include/esemaphore.h @@ -0,0 +1,12 @@ +#pragma once +#include + +struct evil_sem { + hid_t wait, signal; +}; + +void esem_signal(struct evil_sem *sem); +void esem_wait(struct evil_sem *sem); + +struct evil_sem *esem_new(int value); +void esem_free(struct evil_sem *sem); diff --git a/src/user/lib/include/getopt.h b/src/user/lib/include/getopt.h new file mode 120000 index 0000000..4890ceb --- /dev/null +++ b/src/user/lib/include/getopt.h @@ -0,0 +1 @@ +../vendor/getopt/getopt.h \ No newline at end of file diff --git a/src/user/lib/include/malloc.h b/src/user/lib/include/malloc.h new file mode 120000 index 0000000..80b9bf5 --- /dev/null +++ b/src/user/lib/include/malloc.h @@ -0,0 +1 @@ +../vendor/dlmalloc/malloc.h \ No newline at end of file diff --git a/src/user/lib/include/setjmp.h b/src/user/lib/include/setjmp.h index 298939c..6d05d79 100644 --- a/src/user/lib/include/setjmp.h +++ b/src/user/lib/include/setjmp.h @@ -1,5 +1,5 @@ #pragma once -#include +#include typedef uint64_t jmp_buf[8]; /* rbx, rsp, rbp, r12, r13, r14, r15, rip */ typedef char sigjmp_buf[1]; diff --git a/src/user/lib/include/stdlib.h b/src/user/lib/include/stdlib.h index 050ca80..4a44bf6 100644 --- a/src/user/lib/include/stdlib.h +++ b/src/user/lib/include/stdlib.h @@ -3,7 +3,7 @@ #include #ifndef NO_MALLOC_H -#include +#include #endif #define EXIT_SUCCESS 0 diff --git a/src/user/lib/include/thread.h b/src/user/lib/include/thread.h new file mode 100644 index 0000000..5a5ddc0 --- /dev/null +++ b/src/user/lib/include/thread.h @@ -0,0 +1,9 @@ +#pragma once +#include + +void thread_creates(int flags, void (*fn)(void*), void *arg, void *stack); + +static inline void thread_create(int flags, void (*fn)(void*), void *arg) { + /* error checking is for WIMPS. */ + thread_creates(flags, fn, arg, malloc(4096) + 4096); +} diff --git a/src/user/lib/include/unistd.h b/src/user/lib/include/unistd.h index c55cd29..a1c18e8 100644 --- a/src/user/lib/include/unistd.h +++ b/src/user/lib/include/unistd.h @@ -1,6 +1,6 @@ #pragma once #include // TODO only needed because of hid_t -#include +#include int fork(void); int close(hid_t h); -- cgit v1.2.3