aboutsummaryrefslogtreecommitdiff
path: root/kernel/features
diff options
context:
space:
mode:
authorMarvin Borner2020-09-16 21:38:19 +0200
committerMarvin Borner2020-09-16 21:38:19 +0200
commit11490a493511c4f760af74c12cb7da15b2b404a2 (patch)
tree92837dcface3dbe825a6d6e90cd983e72a62578f /kernel/features
parent857c228909603d1a27a40f2714f8b9076fabba6e (diff)
Added *very* basic keymap parsing
Diffstat (limited to 'kernel/features')
-rw-r--r--kernel/features/event.c6
-rw-r--r--kernel/features/proc.c5
-rw-r--r--kernel/features/syscall.c5
3 files changed, 11 insertions, 5 deletions
diff --git a/kernel/features/event.c b/kernel/features/event.c
index 1aa0cd0..633f633 100644
--- a/kernel/features/event.c
+++ b/kernel/features/event.c
@@ -10,7 +10,7 @@
struct list *event_table[] = { [EVENT_KEYBOARD] = NULL, [EVENT_MOUSE] = NULL };
-u32 event_register(enum message_type id, struct proc *proc)
+u32 event_register(u32 id, struct proc *proc)
{
assert(id < sizeof(event_table) / sizeof(*event_table));
@@ -25,7 +25,7 @@ u32 event_register(enum message_type id, struct proc *proc)
return 0;
}
-void event_unregister(enum message_type id, struct proc *proc)
+void event_unregister(u32 id, struct proc *proc)
{
assert(id < sizeof(event_table) / sizeof(*event_table));
@@ -42,7 +42,7 @@ void event_unregister(enum message_type id, struct proc *proc)
}
}
-u32 event_trigger(enum message_type id, void *data)
+u32 event_trigger(u32 id, void *data)
{
assert(id < sizeof(event_table) / sizeof(*event_table));
diff --git a/kernel/features/proc.c b/kernel/features/proc.c
index 3f8dcf1..7544b68 100644
--- a/kernel/features/proc.c
+++ b/kernel/features/proc.c
@@ -83,10 +83,11 @@ struct proc *proc_current()
return current && current->data ? current->data : NULL;
}
-void proc_send(struct proc *src, struct proc *dest, enum message_type type, void *data)
+void proc_send(struct proc *src, struct proc *dest, u32 type, void *data)
{
// TODO: Use unique key instead of pid for IPC messaging
- assert(src && dest);
+ if (!src || !dest)
+ return;
struct proc_message *msg = malloc(sizeof(*msg));
msg->src = src;
msg->dest = dest;
diff --git a/kernel/features/syscall.c b/kernel/features/syscall.c
index 25770a4..f6e3f15 100644
--- a/kernel/features/syscall.c
+++ b/kernel/features/syscall.c
@@ -100,6 +100,11 @@ void syscall_handler(struct regs *r)
r->eax = (u32)(msg ? msg->msg : NULL);
break;
}
+ case SYS_GETPID: {
+ printf("getpid\n");
+ r->eax = proc_current()->pid;
+ break;
+ }
default: {
printf("unknown\n");
loop();