diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2022-11-21 14:02:17 +0200 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2022-11-21 14:02:17 +0200 |
| commit | 62d395d206171fdaf3fa62c495633990198db6c4 (patch) | |
| tree | bed68b4a0fd5ff5897f78418fd3527eb05c72ec9 /include | |
| parent | d312c853a8c9e6e2fd457fa5f840e65a9a738e7d (diff) | |
| download | kmi-62d395d206171fdaf3fa62c495633990198db6c4.tar.gz kmi-62d395d206171fdaf3fa62c495633990198db6c4.zip | |
possible optimisations
Diffstat (limited to 'include')
| -rw-r--r-- | include/apos/syscalls.h | 2 | ||||
| -rw-r--r-- | include/apos/tcb.h | 12 | ||||
| -rw-r--r-- | include/apos/uapi.h | 51 | ||||
| -rw-r--r-- | include/arch/vmem.h | 2 |
4 files changed, 40 insertions, 27 deletions
diff --git a/include/apos/syscalls.h b/include/apos/syscalls.h index dd383c8..a5c805d 100644 --- a/include/apos/syscalls.h +++ b/include/apos/syscalls.h @@ -126,6 +126,8 @@ enum { /** Shutdown, reboot, etc. */ SYS_POWEROFF, /** @} */ + + SYS_NUM, }; /* function declarations should be somewhere else, this file could be used in diff --git a/include/apos/tcb.h b/include/apos/tcb.h index 981f352..34b0457 100644 --- a/include/apos/tcb.h +++ b/include/apos/tcb.h @@ -31,13 +31,23 @@ #define is_rpc(t) (t->rid != t->pid) /** - * Get the process thread of current thread. + * Get the effective process thread of current thread. * * @param t Thread whose effective process thread to get. * @return The process thread of the current thread. */ #define get_proc(t) (get_tcb(t->eid)) +#define get_eproc(t) get_proc(t) + +/** + * Get the current process thread of current thread. + * + * @param t Thread whose current process thread to get. + * @return The current process thread of the current thread. + */ +#define get_cproc(t) (get_tcb(t->pid)) + /** * Get the root process thread of current thread. * diff --git a/include/apos/uapi.h b/include/apos/uapi.h index fea82e4..99ab4e1 100644 --- a/include/apos/uapi.h +++ b/include/apos/uapi.h @@ -16,7 +16,7 @@ * Syscall function type. * Let's start with five arguments and see where that goes */ -typedef struct sys_ret (*sys_t)(long, long, long, long, long); +typedef struct sys_ret (*sys_t)(struct tcb *t, long, long, long, long, long); /** * Syscall argument type. @@ -83,7 +83,8 @@ struct sys_ret { * @param name Name of syscall. */ #define SYSCALL_DECLARE0(name) \ - struct sys_ret sys_##name(sys_arg_t a, \ + struct sys_ret sys_##name(struct tcb *t, \ + sys_arg_t a, \ sys_arg_t b, \ sys_arg_t c, \ sys_arg_t d, \ @@ -96,7 +97,7 @@ struct sys_ret { * @param a Name of argument. */ #define SYSCALL_DECLARE1(name, a) \ - struct sys_ret sys_##name(sys_arg_t a, sys_arg_t b, sys_arg_t c, \ + struct sys_ret sys_##name(struct tcb *t, sys_arg_t a, sys_arg_t b, sys_arg_t c, \ sys_arg_t d, sys_arg_t e); /** @@ -107,7 +108,7 @@ struct sys_ret { * @param b Name of second argument. */ #define SYSCALL_DECLARE2(name, a, b) \ - struct sys_ret sys_##name(sys_arg_t a, sys_arg_t b, sys_arg_t c, \ + struct sys_ret sys_##name(struct tcb *t, sys_arg_t a, sys_arg_t b, sys_arg_t c, \ sys_arg_t d, sys_arg_t e); /** @@ -119,7 +120,7 @@ struct sys_ret { * @param c Name of third argument. */ #define SYSCALL_DECLARE3(name, a, b, c) \ - struct sys_ret sys_##name(sys_arg_t a, sys_arg_t b, sys_arg_t c, \ + struct sys_ret sys_##name(struct tcb *t, sys_arg_t a, sys_arg_t b, sys_arg_t c, \ sys_arg_t d, sys_arg_t e); /** @@ -132,7 +133,7 @@ struct sys_ret { * @param d Name of fourth argument. */ #define SYSCALL_DECLARE4(name, a, b, c, d) \ - struct sys_ret sys_##name(sys_arg_t a, sys_arg_t b, sys_arg_t c, \ + struct sys_ret sys_##name(struct tcb *t, sys_arg_t a, sys_arg_t b, sys_arg_t c, \ sys_arg_t d, sys_arg_t e); /** @@ -146,7 +147,7 @@ struct sys_ret { * @param e Name of fifth argument. */ #define SYSCALL_DECLARE5(name, a, b, c, d, e) \ - struct sys_ret sys_##name(sys_arg_t a, sys_arg_t b, sys_arg_t c, \ + struct sys_ret sys_##name(struct tcb *t, sys_arg_t a, sys_arg_t b, sys_arg_t c, \ sys_arg_t d, sys_arg_t e); /** @@ -155,8 +156,8 @@ struct sys_ret { * @param name Name of syscall. */ #define SYSCALL_DEFINE0(name) \ - static inline struct sys_ret __##name(); \ - struct sys_ret sys_##name(sys_arg_t a, sys_arg_t b, sys_arg_t c, \ + static inline struct sys_ret __##name(struct tcb *t); \ + struct sys_ret sys_##name(struct tcb *t, sys_arg_t a, sys_arg_t b, sys_arg_t c, \ sys_arg_t d, sys_arg_t e) \ { \ UNUSED(a); \ @@ -164,7 +165,7 @@ struct sys_ret { UNUSED(c); \ UNUSED(d); \ UNUSED(e); \ - return __##name(); \ + return __##name(t); \ } \ static struct sys_ret __##name @@ -174,15 +175,15 @@ struct sys_ret { * @param name Name of syscall. */ #define SYSCALL_DEFINE1(name) \ - static inline struct sys_ret __##name(sys_arg_t); \ - struct sys_ret sys_##name(sys_arg_t a, sys_arg_t b, sys_arg_t c, \ + static inline struct sys_ret __##name(struct tcb *, sys_arg_t); \ + struct sys_ret sys_##name(struct tcb *t, sys_arg_t a, sys_arg_t b, sys_arg_t c, \ sys_arg_t d, sys_arg_t e) \ { \ UNUSED(b); \ UNUSED(c); \ UNUSED(d); \ UNUSED(e); \ - return __##name(a); \ + return __##name(t, a); \ } \ static inline struct sys_ret __##name @@ -192,14 +193,14 @@ struct sys_ret { * @param name Name of syscall. */ #define SYSCALL_DEFINE2(name) \ - static inline struct sys_ret __##name(sys_arg_t, sys_arg_t); \ - struct sys_ret sys_##name(sys_arg_t a, sys_arg_t b, sys_arg_t c, \ + static inline struct sys_ret __##name(struct tcb *, sys_arg_t, sys_arg_t); \ + struct sys_ret sys_##name(struct tcb *t, sys_arg_t a, sys_arg_t b, sys_arg_t c, \ sys_arg_t d, sys_arg_t e) \ { \ UNUSED(c); \ UNUSED(d); \ UNUSED(e); \ - return __##name(a, b); \ + return __##name(t, a, b); \ } \ static inline struct sys_ret __##name @@ -209,14 +210,14 @@ struct sys_ret { * @param name Name of syscall. */ #define SYSCALL_DEFINE3(name) \ - static inline struct sys_ret __##name(sys_arg_t, sys_arg_t, \ + static inline struct sys_ret __##name(struct tcb *, sys_arg_t, sys_arg_t, \ sys_arg_t); \ - struct sys_ret sys_##name(sys_arg_t a, sys_arg_t b, sys_arg_t c, \ + struct sys_ret sys_##name(struct tcb *t, sys_arg_t a, sys_arg_t b, sys_arg_t c, \ sys_arg_t d, sys_arg_t e) \ { \ UNUSED(d); \ UNUSED(e); \ - return __##name(a, b, c); \ + return __##name(t, a, b, c); \ } \ static inline struct sys_ret __##name @@ -226,13 +227,13 @@ struct sys_ret { * @param name Name of syscall. */ #define SYSCALL_DEFINE4(name) \ - static inline struct sys_ret __##name(sys_arg_t, sys_arg_t, sys_arg_t, \ + static inline struct sys_ret __##name(struct tcb *, sys_arg_t, sys_arg_t, sys_arg_t, \ sys_arg_t); \ - struct sys_ret sys_##name(sys_arg_t a, sys_arg_t b, sys_arg_t c, \ + struct sys_ret sys_##name(struct tcb *t, sys_arg_t a, sys_arg_t b, sys_arg_t c, \ sys_arg_t d, sys_arg_t e) \ { \ UNUSED(e); \ - return __##name(a, b, c, d); \ + return __##name(t, a, b, c, d); \ } \ static inline struct sys_ret __##name @@ -242,12 +243,12 @@ struct sys_ret { * @param name Name of syscall. */ #define SYSCALL_DEFINE5(name) \ - static inline struct sys_ret __##name(sys_arg_t, sys_arg_t, sys_arg_t, \ + static inline struct sys_ret __##name(struct tcb *, sys_arg_t, sys_arg_t, sys_arg_t, \ sys_arg_t, sys_arg_t); \ - struct sys_ret sys_##name(sys_arg_t a, sys_arg_t b, sys_arg_t c, \ + struct sys_ret sys_##name(struct tcb *t, sys_arg_t a, sys_arg_t b, sys_arg_t c, \ sys_arg_t d, sys_arg_t e) \ { \ - return __##name(a, b, c, d, e); \ + return __##name(t, a, b, c, d, e); \ } \ static inline struct sys_ret __##name diff --git a/include/arch/vmem.h b/include/arch/vmem.h index c829629..ce43a55 100644 --- a/include/arch/vmem.h +++ b/include/arch/vmem.h @@ -162,6 +162,6 @@ stat_t destroy_vmem(struct vmem *b); * @param r Source virtual memory of clone. * @param b Destination virtual memory of clone. */ -void clone_uvmem(struct vmem *r, struct vmem *b); +void clone_uvmem(struct vmem * restrict r, struct vmem * restrict b); #endif /* APOS_ARCH_PAGES_H */ |
