diff options
author | Marvin Borner | 2020-09-16 21:38:19 +0200 |
---|---|---|
committer | Marvin Borner | 2020-09-16 21:38:19 +0200 |
commit | 11490a493511c4f760af74c12cb7da15b2b404a2 (patch) | |
tree | 92837dcface3dbe825a6d6e90cd983e72a62578f /kernel/features | |
parent | 857c228909603d1a27a40f2714f8b9076fabba6e (diff) |
Added *very* basic keymap parsing
Diffstat (limited to 'kernel/features')
-rw-r--r-- | kernel/features/event.c | 6 | ||||
-rw-r--r-- | kernel/features/proc.c | 5 | ||||
-rw-r--r-- | kernel/features/syscall.c | 5 |
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(); |