#ifndef _KERNEL_SYS_PROC_H
#define _KERNEL_SYS_PROC_H

#include <libk/list.h>
#include <libk/std.h>
#include <proc/reschedule.h>

struct proc;

struct proc* proc_from_elf (uint8_t* elf_contents);

struct proc* proc_clone (struct proc* proto, uintptr_t vstack_top, uintptr_t entry,
                         uintptr_t argument_ptr);

void proc_cleanup (struct proc* proc, struct reschedule_ctx* rctx);

void proc_init_tls (struct proc* proc);

#endif // _KERNEL_SYS_PROC_H
