diff options
author | Anton Kling <anton@kling.gg> | 2024-04-27 15:26:39 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-04-27 15:26:39 +0200 |
commit | 02c27583a539c4e8073509536d328581cf1ba346 (patch) | |
tree | 67c8de59e04b118116f039e724be3ee9268b507f /kernel/sched/scheduler.c | |
parent | 7ab3153f92f38223157c4c1f4af1c30e33c94a76 (diff) |
Kernel: Make file descriptor numbers reusable.
Instead of using the "append only" list it now uses "relist" which
allows for indexes to be removed.
Diffstat (limited to 'kernel/sched/scheduler.c')
-rw-r--r-- | kernel/sched/scheduler.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/sched/scheduler.c b/kernel/sched/scheduler.c index 6454775..42d4dc7 100644 --- a/kernel/sched/scheduler.c +++ b/kernel/sched/scheduler.c @@ -120,14 +120,14 @@ process_t *create_process(process_t *p, u32 esp, u32 eip) { } if (p) { - if (!list_clone(&p->file_descriptors, &r->file_descriptors)) { + if (!relist_clone(&p->file_descriptors, &r->file_descriptors)) { kfree(r->tcb); kfree(r); return NULL; } for (int i = 0;; i++) { vfs_fd_t *out; - if (!list_get(&p->file_descriptors, i, (void **)&out)) { + if (!relist_get(&r->file_descriptors, i, (void **)&out)) { break; } if (out) { @@ -135,7 +135,7 @@ process_t *create_process(process_t *p, u32 esp, u32 eip) { } } } else { - list_init(&r->file_descriptors); + relist_init(&r->file_descriptors); } if (p) { @@ -208,7 +208,7 @@ void free_process(process_t *p) { list_free(&p->tcp_sockets); list_free(&p->tcp_listen); list_free(&p->event_queue); - list_free(&p->file_descriptors); + relist_free(&p->file_descriptors); kfree(p->tcb); mmu_free_pagedirectory(p->cr3); |