From 53034bc09105d3b26f12818e2f5f2773c9cc19f5 Mon Sep 17 00:00:00 2001 From: kamkow1 Date: Wed, 18 Mar 2026 23:24:07 +0100 Subject: [PATCH] Remove mail_receive_nonblock () --- include/syscall_defs.h | 7 +++--- kernel/proc/mail.c | 48 ---------------------------------------- kernel/proc/mail.h | 3 --- kernel/syscall/syscall.c | 30 ------------------------- libsystem/system.c | 4 ---- libsystem/system.h | 3 --- 6 files changed, 3 insertions(+), 92 deletions(-) diff --git a/include/syscall_defs.h b/include/syscall_defs.h index f20456f..814b74a 100644 --- a/include/syscall_defs.h +++ b/include/syscall_defs.h @@ -34,9 +34,8 @@ #define SYS_ENV_GET 31 #define SYS_EXEC_PARTIAL 32 #define SYS_EXEC_PARTIAL_FINI 33 -#define SYS_MAIL_RECEIVE_NONBLOCK 34 -#define SYS_GET_SELF_PID 35 -#define SYS_STREAM_WRITE 36 -#define SYS_STREAM_READ 37 +#define SYS_GET_SELF_PID 34 +#define SYS_STREAM_WRITE 35 +#define SYS_STREAM_READ 36 #endif // _M_SYSCALL_DEFS_H diff --git a/kernel/proc/mail.c b/kernel/proc/mail.c index 4534dc0..cf8a85d 100644 --- a/kernel/proc/mail.c +++ b/kernel/proc/mail.c @@ -147,51 +147,3 @@ void proc_mail_receive (struct proc* proc, struct proc_mail* mail, struct resche /* nothing to receive */ proc_sq_suspend (proc, &mail->recv_sq, &mail->resource->lock, fr, rctx); } - -bool proc_mail_receive_nonblock (struct proc* proc, struct proc_mail* mail, - struct reschedule_ctx* rctx, void* recv_buffer, size_t recv_size) { - uint64_t fp, fr, fssq; - - spin_lock (&proc->lock, &fp); - proc->mail_recv_buffer = recv_buffer; - proc->mail_recv_size = recv_size; - spin_unlock (&proc->lock, fp); - - spin_lock (&mail->resource->lock, &fr); - - /* consume mesg if available */ - if (mail->packets_count > 0) { - struct mail_packet* packet = list_entry (mail->packets, struct mail_packet, packets_link); - list_remove (mail->packets, &packet->packets_link); - mail->packets_count--; - - memcpy (recv_buffer, packet->packet_buffer, min (recv_size, packet->packet_size)); - free (packet->packet_buffer); - free (packet); - - /* check for suspended sender */ - spin_lock (&mail->send_sq.lock, &fssq); - - struct list_node_link* node = mail->send_sq.proc_list; - - if (node != NULL) { - struct proc_sq_entry* sq_entry = list_entry (node, struct proc_sq_entry, sq_link); - struct proc* resumed_proc = sq_entry->proc; - - spin_unlock (&mail->send_sq.lock, fssq); - spin_unlock (&mail->resource->lock, fr); - - proc_sq_resume (resumed_proc, sq_entry, rctx); - return true; - } - - spin_unlock (&mail->send_sq.lock, fssq); - spin_unlock (&mail->resource->lock, fr); - - return true; - } - - spin_unlock (&mail->resource->lock, fr); - - return false; -} diff --git a/kernel/proc/mail.h b/kernel/proc/mail.h index d53f8b1..6528b2e 100644 --- a/kernel/proc/mail.h +++ b/kernel/proc/mail.h @@ -37,7 +37,4 @@ void proc_mail_send (struct proc* proc, struct proc_mail* mail, struct reschedul void proc_mail_receive (struct proc* proc, struct proc_mail* mail, struct reschedule_ctx* rctx, void* recv_buffer, size_t recv_size); -bool proc_mail_receive_nonblock (struct proc* proc, struct proc_mail* mail, - struct reschedule_ctx* rctx, void* recv_buffer, size_t recv_size); - #endif // _KERNEL_PROC_MAIL_H diff --git a/kernel/syscall/syscall.c b/kernel/syscall/syscall.c index 7fd621e..f266382 100644 --- a/kernel/syscall/syscall.c +++ b/kernel/syscall/syscall.c @@ -274,35 +274,6 @@ DEFINE_SYSCALL (sys_mail_receive) { return SYSRESULT (ST_OK); } -/* int mail_receive_nonblock (void* recv_mesg, size_t mesg_size) */ -DEFINE_SYSCALL (sys_mail_receive_nonblock) { - uint64_t fp; - - uintptr_t uvaddr_mesg = a1; - size_t mesg_size = (size_t)a2; - - spin_lock (&proc->lock, &fp); - struct procgroup* procgroup = proc->procgroup; - spin_unlock (&proc->lock, fp); - - void* mesg = sys_get_user_buffer (procgroup, uvaddr_mesg, mesg_size); - - if (mesg == NULL) - return SYSRESULT (-ST_BAD_ADDRESS_SPACE); - - struct proc_resource* mail_resource = proc_find_resource (procgroup, 0); - - if (mail_resource == NULL) - return SYSRESULT (-ST_NOT_FOUND); - - bool r = proc_mail_receive_nonblock (proc, &mail_resource->u.mail, rctx, mesg, mesg_size); - - if (r) - return SYSRESULT (ST_OK); - else - return SYSRESULT (-ST_TRY_AGAIN); -} - /* int device_do (int device_id, int cmd, void* a1, void* a2, void* a3, void* a4) */ DEFINE_SYSCALL (sys_device_do) { uint64_t fpg, fd, fp; @@ -1131,7 +1102,6 @@ static syscall_handler_func_t handler_table[] = { [SYS_ENV_GET] = &sys_env_get, [SYS_EXEC_PARTIAL] = &sys_exec_partial, [SYS_EXEC_PARTIAL_FINI] = &sys_exec_partial_fini, - [SYS_MAIL_RECEIVE_NONBLOCK] = &sys_mail_receive_nonblock, [SYS_GET_SELF_PID] = &sys_get_self_pid, [SYS_STREAM_WRITE] = &sys_stream_write, [SYS_STREAM_READ] = &sys_stream_read, diff --git a/libsystem/system.c b/libsystem/system.c index 25ee49e..c0d3ddf 100644 --- a/libsystem/system.c +++ b/libsystem/system.c @@ -61,10 +61,6 @@ int mail_receive (void* mesg, size_t mesg_size) { return (int)do_syscall (SYS_MAIL_RECEIVE, mesg, mesg_size); } -int mail_receive_nonblock (void* mesg, size_t mesg_size) { - return (int)do_syscall (SYS_MAIL_RECEIVE_NONBLOCK, mesg, mesg_size); -} - int get_procgroup (int pid) { return (int)do_syscall (SYS_GET_PROCGROUP, pid); } int get_exec_pid (void) { return (int)do_syscall (SYS_GET_EXEC_PID, 0); } diff --git a/libsystem/system.h b/libsystem/system.h index 1991179..9763c81 100644 --- a/libsystem/system.h +++ b/libsystem/system.h @@ -63,9 +63,6 @@ int mail_send (int pgid, void* mesg, size_t mesg_size); /* receive a message from mail */ int mail_receive (void* mesg, size_t mesg_size); -/* receive a message from mail without blocking */ -int mail_receive_nonblock (void* mesg, size_t mesg_size); - /* get procgroup id of a perticular process */ int get_procgroup (int pid);