struct proc remove dead field
All checks were successful
Build documentation / build-and-deploy (push) Successful in 2m52s
All checks were successful
Build documentation / build-and-deploy (push) Successful in 2m52s
This commit is contained in:
@@ -248,7 +248,7 @@ static struct proc* proc_find_sched (struct cpu* cpu) {
|
|||||||
|
|
||||||
int state = proc->state;
|
int state = proc->state;
|
||||||
|
|
||||||
if (!proc->dead && state == PROC_READY && !(proc->flags & PROC_KPROC)) {
|
if (state == PROC_READY && !(proc->flags & PROC_KPROC)) {
|
||||||
spin_unlock (&proc->lock, fp);
|
spin_unlock (&proc->lock, fp);
|
||||||
return proc;
|
return proc;
|
||||||
}
|
}
|
||||||
@@ -313,7 +313,6 @@ void proc_kill (struct proc* proc, struct reschedule_ctx* rctx) {
|
|||||||
if (cpu->proc_current == proc)
|
if (cpu->proc_current == proc)
|
||||||
cpu->proc_current = NULL;
|
cpu->proc_current = NULL;
|
||||||
|
|
||||||
proc->dead = true;
|
|
||||||
rbtree_delete (&proc_tree, &proc->proc_tree_link);
|
rbtree_delete (&proc_tree, &proc->proc_tree_link);
|
||||||
|
|
||||||
spin_unlock (&proc->lock, fp);
|
spin_unlock (&proc->lock, fp);
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ struct proc {
|
|||||||
spin_lock_t lock;
|
spin_lock_t lock;
|
||||||
struct cpu* cpu;
|
struct cpu* cpu;
|
||||||
int state;
|
int state;
|
||||||
bool dead;
|
|
||||||
uintptr_t uvaddr_argument;
|
uintptr_t uvaddr_argument;
|
||||||
void* mail_recv_buffer;
|
void* mail_recv_buffer;
|
||||||
size_t mail_recv_size;
|
size_t mail_recv_size;
|
||||||
|
|||||||
@@ -762,8 +762,6 @@ DEFINE_SYSCALL (sys_get_exec_pid) {
|
|||||||
|
|
||||||
/* wait_for_pid (int pid) */
|
/* wait_for_pid (int pid) */
|
||||||
DEFINE_SYSCALL (sys_wait_for_pid) {
|
DEFINE_SYSCALL (sys_wait_for_pid) {
|
||||||
uint64_t fp;
|
|
||||||
|
|
||||||
int pid = (int)a1;
|
int pid = (int)a1;
|
||||||
|
|
||||||
struct proc* wait_proc = proc_find_pid (pid);
|
struct proc* wait_proc = proc_find_pid (pid);
|
||||||
@@ -771,15 +769,6 @@ DEFINE_SYSCALL (sys_wait_for_pid) {
|
|||||||
if (wait_proc == NULL)
|
if (wait_proc == NULL)
|
||||||
return SYSRESULT (-ST_NOT_FOUND);
|
return SYSRESULT (-ST_NOT_FOUND);
|
||||||
|
|
||||||
spin_lock (&wait_proc->lock, &fp);
|
|
||||||
|
|
||||||
if (wait_proc->dead) {
|
|
||||||
spin_unlock (&wait_proc->lock, fp);
|
|
||||||
return SYSRESULT (-ST_NOT_FOUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
spin_unlock (&wait_proc->lock, fp);
|
|
||||||
|
|
||||||
proc_wait_for (proc, rctx, wait_proc);
|
proc_wait_for (proc, rctx, wait_proc);
|
||||||
|
|
||||||
return SYSRESULT (ST_OK);
|
return SYSRESULT (ST_OK);
|
||||||
|
|||||||
Reference in New Issue
Block a user