#ifndef _KERNEL_PROC_MAIL_H #define _KERNEL_PROC_MAIL_H #include #include #include struct proc; struct proc_resource; struct cpu; struct reschedule_ctx; struct proc_mail { struct proc_resource* resource; struct proc_suspension_q send_sq; struct proc_suspension_q recv_sq; void* pending_mesg; size_t pending_mesg_size; }; void proc_cleanup_resource_mail (struct proc_resource* resource, struct reschedule_ctx* rctx); void proc_mail_send (struct proc* proc, struct proc_mail* mail, struct reschedule_ctx* rctx, void* data, size_t data_size); void proc_mail_receive (struct proc* proc, struct proc_mail* mail, struct reschedule_ctx* rctx, void* recv_buffer, size_t recv_size); #endif // _KERNEL_PROC_MAIL_H