aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2022-05-21 15:04:01 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2022-05-21 15:04:01 +0300
commit836026dbba64793afc0d2591ffdb6fb39b696977 (patch)
tree214cab6c75ac15785a20728bde406e70797f5229 /common
parent1ea7d9dec1b460ab76dfd6270596c8138c9c2b40 (diff)
downloadkmi-836026dbba64793afc0d2591ffdb6fb39b696977.tar.gz
kmi-836026dbba64793afc0d2591ffdb6fb39b696977.zip
implement timers better
Diffstat (limited to 'common')
-rw-r--r--common/timer.c3
-rw-r--r--common/uapi/ipc.c15
-rw-r--r--common/uapi/mem.c6
-rw-r--r--common/vmem.c7
4 files changed, 16 insertions, 15 deletions
diff --git a/common/timer.c b/common/timer.c
index da4fd11..0442c44 100644
--- a/common/timer.c
+++ b/common/timer.c
@@ -3,6 +3,7 @@
#include <apos/nodes.h>
#include <apos/utils.h>
#include <apos/timer.h>
+#include <apos/debug.h>
#include <arch/timer.h>
#include <arch/cpu.h>
@@ -27,6 +28,8 @@ static struct sp_root *__cpu_timers()
void init_timer(const void *fdt)
{
ticks_per_sec = stat_timer(fdt);
+ info("ticks_per_sec: %" PRIu64 "\n", ticks_per_sec);
+ info("current ticks: %" PRIu64 "\n", current_ticks());
init_nodes(&node_root, sizeof(struct timer_node));
}
diff --git a/common/uapi/ipc.c b/common/uapi/ipc.c
index 7181490..bef9665 100644
--- a/common/uapi/ipc.c
+++ b/common/uapi/ipc.c
@@ -11,17 +11,16 @@ SYSCALL_DEFINE1(ipc_server)(sys_arg_t callback)
return (struct sys_ret){ OK, 0 };
}
-SYSCALL_DEFINE4(ipc_req)
-(sys_arg_t pid, sys_arg_t d0, sys_arg_t d1, sys_arg_t d2)
+SYSCALL_DEFINE3(ipc_req)(sys_arg_t tid, sys_arg_t d0, sys_arg_t d1)
{
- struct tcb *t = get_tcb(pid);
- /* something like jump_to_callback(t, d0, d1, d2) */
- return (struct sys_ret){ OK, 0 };
+ struct tcb *r = get_tcb(tid);
+ /* something like jump_to_callback(t, d0, d1) */
+ return (struct sys_ret){ d0, d1 };
}
-SYSCALL_DEFINE3(ipc_resp)(sys_arg_t pid, sys_arg_t ret, sys_arg_t val)
+SYSCALL_DEFINE3(ipc_resp)(sys_arg_t tid, sys_arg_t d0, sys_arg_t d1)
{
- struct tcb *r = get_tcb(pid);
+ struct tcb *r = get_tcb(tid);
/* something like return_from_callback(t, r) */
- return (struct sys_ret){ ret, val };
+ return (struct sys_ret){ d0, d1 };
}
diff --git a/common/uapi/mem.c b/common/uapi/mem.c
index ace40b9..7526152 100644
--- a/common/uapi/mem.c
+++ b/common/uapi/mem.c
@@ -50,7 +50,7 @@ SYSCALL_DEFINE2(req_sharedmem)
if ((start = alloc_shared_uvmem(t, size, flags)))
return (struct sys_ret){ ERR_OOMEM, 0 };
- return (struct sys_ret){ OK, start};
+ return (struct sys_ret){ OK, start };
}
/* add a syscall like ref_sharedmem that adds a reference to an existing shared
@@ -61,7 +61,7 @@ SYSCALL_DEFINE3(ref_sharedmem)(sys_arg_t tid, sys_arg_t va, sys_arg_t flags)
struct tcb *t2 = get_tcb(tid);
vm_t start = 0;
if ((start = ref_shared_uvmem(t1, t2, va, flags)))
- return (struct sys_ret){ERR_OOMEM, 0};
+ return (struct sys_ret){ ERR_OOMEM, 0 };
- return (struct sys_ret) {OK, start};
+ return (struct sys_ret){ OK, start };
}
diff --git a/common/vmem.c b/common/vmem.c
index 89e1140..989029a 100644
--- a/common/vmem.c
+++ b/common/vmem.c
@@ -21,12 +21,11 @@ vm_t alloc_fixed_uvmem(struct tcb *t, vm_t start, size_t size, vmflags_t flags)
}
/* free_shared_uvmem shouldn't be needed, likely to work with free_uvmem */
-vm_t alloc_shared_uvmem(struct tcb *t, size_t size,
- vmflags_t flags)
+vm_t alloc_shared_uvmem(struct tcb *t, size_t size, vmflags_t flags)
{
/* TODO: proper error handling */
vm_t v = alloc_region(&t->sp_r, size, &size,
- flags | MR_SHARED | MR_OWNED);
+ flags | MR_SHARED | MR_OWNED);
return map_shared_region(t->b_r, v, size, flags);
}
@@ -81,7 +80,7 @@ stat_t alloc_uvmem_wrapper(struct vm_branch *b, pm_t *offset, vm_t vaddr,
}
stat_t alloc_shared_wrapper(struct vm_branch *b, pm_t *offset, vm_t vaddr,
- vmflags_t flags, enum mm_order order)
+ vmflags_t flags, enum mm_order order)
{
if (order != MM_O0)
return REGION_TRY_AGAIN;