diff options
author | Benji Dial <benji6283@gmail.com> | 2020-09-06 00:48:07 -0400 |
---|---|---|
committer | Benji Dial <benji6283@gmail.com> | 2020-09-06 00:48:07 -0400 |
commit | e8c6577617bffa4402c07c7aa20e3c24f03c1c20 (patch) | |
tree | 2fb9230b62d2344a44453117de9e656892219788 /src/user/include/knob | |
parent | 7ff724fe8f709440da9c730fdb8dcbaa4f989ed5 (diff) | |
download | portland-os-e8c6577617bffa4402c07c7aa20e3c24f03c1c20.tar.gz |
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
Diffstat (limited to 'src/user/include/knob')
-rw-r--r-- | src/user/include/knob/block.h | 8 | ||||
-rw-r--r-- | src/user/include/knob/env.h | 9 | ||||
-rw-r--r-- | src/user/include/knob/file.h | 17 | ||||
-rw-r--r-- | src/user/include/knob/format.h | 9 | ||||
-rw-r--r-- | src/user/include/knob/heap.h | 9 | ||||
-rw-r--r-- | src/user/include/knob/quit.h | 7 | ||||
-rw-r--r-- | src/user/include/knob/user.h | 12 |
7 files changed, 71 insertions, 0 deletions
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 <stdint.h> + +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 <stdint.h> + +//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 <stdint.h> + +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 <stdbool.h> +#include <stdint.h> + +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 <stdint.h> + +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 <stdint.h> + +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 |