diff options
author | dzwdz | 2021-08-24 19:05:46 +0200 |
---|---|---|
committer | dzwdz | 2021-08-24 19:05:46 +0200 |
commit | b988b821372466ed58eb1d2116bcbb158f70346c (patch) | |
tree | 669bb9331082848277031632e818e8293fb6e44c /src/kernel/arch/generic.h | |
parent | 04878a07e587f26fe6d5a1044b69651406e3aa1c (diff) |
switch to using user_ptr for pointers coming from userland
this avoid accidental dereferences, and now it's easy to tell apart
which pointers are safe to directly read and which aren't.
cons:
- const is completely discarded
Diffstat (limited to 'src/kernel/arch/generic.h')
-rw-r--r-- | src/kernel/arch/generic.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/kernel/arch/generic.h b/src/kernel/arch/generic.h index 1fa716b..e7afeff 100644 --- a/src/kernel/arch/generic.h +++ b/src/kernel/arch/generic.h @@ -1,5 +1,6 @@ #pragma once +#include <kernel/types.h> #include <kernel/arch/i386/registers.h> #include <kernel/arch/log.h> #include <stdbool.h> @@ -22,11 +23,11 @@ int syscall_handler(int, int, int, int); // all of those can allocate memory struct pagedir *pagedir_new(void); struct pagedir *pagedir_copy(const struct pagedir *orig); -void pagedir_map(struct pagedir *dir, void *virt, void *phys, +void pagedir_map(struct pagedir *dir, user_ptr virt, void *phys, bool user, bool writeable); void pagedir_switch(struct pagedir *); // return 0 on failure -void *pagedir_virt2phys(struct pagedir *dir, const void *virt, +void *pagedir_virt2phys(struct pagedir *dir, const user_ptr virt, bool user, bool writeable); |