From e8c6577617bffa4402c07c7aa20e3c24f03c1c20 Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Sun, 6 Sep 2020 00:48:07 -0400 Subject: program loading, others big kernel additions: paging, elf loading, separate kernel and user page allocation it now properly loads and runs sd0:bin/init.elf still need to determine which disk was booted from, and start the init on that disk --- src/user/include/knob/block.h | 8 ++++++++ src/user/include/knob/env.h | 9 +++++++++ src/user/include/knob/file.h | 17 +++++++++++++++++ src/user/include/knob/format.h | 9 +++++++++ src/user/include/knob/heap.h | 9 +++++++++ src/user/include/knob/quit.h | 7 +++++++ src/user/include/knob/user.h | 12 ++++++++++++ 7 files changed, 71 insertions(+) create mode 100644 src/user/include/knob/block.h create mode 100644 src/user/include/knob/env.h create mode 100644 src/user/include/knob/file.h create mode 100644 src/user/include/knob/format.h create mode 100644 src/user/include/knob/heap.h create mode 100644 src/user/include/knob/quit.h create mode 100644 src/user/include/knob/user.h (limited to 'src/user/include/knob') diff --git a/src/user/include/knob/block.h b/src/user/include/knob/block.h new file mode 100644 index 0000000..53b3deb --- /dev/null +++ b/src/user/include/knob/block.h @@ -0,0 +1,8 @@ +#ifndef KNOB_BLOCK_H +#define KNOB_BLOCK_H + +#include + +void blockcpy(void *to, const void *from, uint32_t count); + +#endif \ No newline at end of file diff --git a/src/user/include/knob/env.h b/src/user/include/knob/env.h new file mode 100644 index 0000000..6d750ae --- /dev/null +++ b/src/user/include/knob/env.h @@ -0,0 +1,9 @@ +#ifndef KNOB_ENV_H +#define KNOB_ENV_H + +#include + +//not implemented yet +extern uint32_t current_drive; + +#endif \ No newline at end of file diff --git a/src/user/include/knob/file.h b/src/user/include/knob/file.h new file mode 100644 index 0000000..6068077 --- /dev/null +++ b/src/user/include/knob/file.h @@ -0,0 +1,17 @@ +#ifndef KNOB_FILE_H +#define KNOB_FILE_H + +#include + +struct file; + +struct file *open_file(const char *path); +void close_file(struct file *f); + +uint32_t read_from_file(struct file *f, uint32_t max, void *buf); +uint32_t seek_file_to(struct file *f, uint32_t to); +int32_t seek_file_by(struct file *f, int32_t by); + +uint32_t file_size(struct file *f) __attribute__ ((pure)); + +#endif \ No newline at end of file diff --git a/src/user/include/knob/format.h b/src/user/include/knob/format.h new file mode 100644 index 0000000..16d3d83 --- /dev/null +++ b/src/user/include/knob/format.h @@ -0,0 +1,9 @@ +#ifndef KNOB_FORMAT_H +#define KNOB_FORMAT_H + +#include +#include + +bool try_sntoi(const char *s, uint32_t n, uint32_t *out); + +#endif \ No newline at end of file diff --git a/src/user/include/knob/heap.h b/src/user/include/knob/heap.h new file mode 100644 index 0000000..32dc44c --- /dev/null +++ b/src/user/include/knob/heap.h @@ -0,0 +1,9 @@ +#ifndef KNOB_HEAP_H +#define KNOB_HEAP_H + +#include + +void *get_block(uint32_t bytes) __attribute__ ((malloc)); +void free_block(void *block); + +#endif \ No newline at end of file diff --git a/src/user/include/knob/quit.h b/src/user/include/knob/quit.h new file mode 100644 index 0000000..7b10d09 --- /dev/null +++ b/src/user/include/knob/quit.h @@ -0,0 +1,7 @@ +#ifndef KNOB_QUIT_H +#define KNOB_QUIT_H + +void on_quit(void (*run_f)()); +void quit() __attribute__ ((noreturn)); + +#endif \ No newline at end of file diff --git a/src/user/include/knob/user.h b/src/user/include/knob/user.h new file mode 100644 index 0000000..c4ec7db --- /dev/null +++ b/src/user/include/knob/user.h @@ -0,0 +1,12 @@ +#ifndef KNOB_USER_H +#define KNOB_USER_H + +#include + +void tell_user_sz(const char *sz); +void tell_user_n(uint32_t n); + +//return value and max_length both include null terminator +uint32_t ask_user_line_sz(char *sz, uint32_t max_length); + +#endif \ No newline at end of file -- cgit v1.2.3