Rename P_THREADED to P_SA. P_SA means a process is using scheduler
activations.
This commit is contained in:
parent
ec3fab0e0c
commit
0e2a4d3aeb
@ -658,7 +658,7 @@ syscall(code, framep)
|
||||
sticks = td->td_sticks;
|
||||
if (td->td_ucred != p->p_ucred)
|
||||
cred_update_thread(td);
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
thread_user_enter(p, td);
|
||||
#ifdef DIAGNOSTIC
|
||||
alpha_fpstate_check(td);
|
||||
|
@ -94,7 +94,7 @@ elf_linux_fixup(register_t **stack_base, struct image_params *imgp)
|
||||
register_t *pos;
|
||||
|
||||
KASSERT(curthread->td_proc == imgp->proc &&
|
||||
(curthread->td_proc->p_flag & P_THREADED) == 0,
|
||||
(curthread->td_proc->p_flag & P_SA) == 0,
|
||||
("unsafe elf_linux_fixup(), should be curproc"));
|
||||
args = (Elf64_Auxargs *)imgp->auxargs;
|
||||
pos = *stack_base + (imgp->argc + imgp->envc + 2);
|
||||
|
@ -2979,7 +2979,7 @@ pmap_activate(struct thread *td)
|
||||
/* XXXKSE this is wrong.
|
||||
* pmap_activate is for the current thread on the current cpu
|
||||
*/
|
||||
if (p->p_flag & P_THREADED) {
|
||||
if (p->p_flag & P_SA) {
|
||||
/* Make sure all other cr3 entries are updated. */
|
||||
/* what if they are running? XXXKSE (maybe abort them) */
|
||||
FOREACH_THREAD_IN_PROC(p, td) {
|
||||
|
@ -673,7 +673,7 @@ syscall(frame)
|
||||
td->td_frame = &frame;
|
||||
if (td->td_ucred != p->p_ucred)
|
||||
cred_update_thread(td);
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
thread_user_enter(p, td);
|
||||
params = (caddr_t)frame.tf_rsp + sizeof(register_t);
|
||||
code = frame.tf_rax;
|
||||
|
@ -210,7 +210,7 @@ svr4_fixup(register_t **stack_base, struct image_params *imgp)
|
||||
register_t *pos;
|
||||
|
||||
KASSERT(curthread->td_proc == imgp->proc &&
|
||||
(curthread->td_proc->p_flag & P_THREADED) == 0,
|
||||
(curthread->td_proc->p_flag & P_SA) == 0,
|
||||
("unsafe svr4_fixup(), should be curproc"));
|
||||
args = (Elf32_Auxargs *)imgp->auxargs;
|
||||
pos = *stack_base + (imgp->argc + imgp->envc + 2);
|
||||
|
@ -127,7 +127,7 @@ db_ps(dummy1, dummy2, dummy3, dummy4)
|
||||
p->p_ucred != NULL ? p->p_ucred->cr_ruid : 0, pp->p_pid,
|
||||
p->p_pgrp != NULL ? p->p_pgrp->pg_id : 0, p->p_flag,
|
||||
state);
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
db_printf("(threaded) %s\n", p->p_comm);
|
||||
FOREACH_THREAD_IN_PROC(p, td) {
|
||||
dumpthread(p, td);
|
||||
@ -145,7 +145,7 @@ db_ps(dummy1, dummy2, dummy3, dummy4)
|
||||
static void
|
||||
dumpthread(volatile struct proc *p, volatile struct thread *td)
|
||||
{
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
db_printf( " thread %p ksegrp %p ", td, td->td_ksegrp);
|
||||
if (TD_ON_SLEEPQ(td)) {
|
||||
if (td->td_flags & TDF_CVWAITQ)
|
||||
@ -198,7 +198,7 @@ dumpthread(volatile struct proc *p, volatile struct thread *td)
|
||||
default:
|
||||
db_printf("[UNK: %#x]", td->td_state);
|
||||
}
|
||||
if (p->p_flag & P_THREADED) {
|
||||
if (p->p_flag & P_SA) {
|
||||
if (td->td_kse)
|
||||
db_printf("[kse %p]", td->td_kse);
|
||||
db_printf("\n");
|
||||
|
@ -117,7 +117,7 @@ procfs_doprocstatus(PFS_FILL_ARGS)
|
||||
}
|
||||
|
||||
mtx_lock_spin(&sched_lock);
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
wmesg = "-kse- ";
|
||||
else {
|
||||
tdfirst = FIRST_THREAD_IN_PROC(p);
|
||||
|
@ -3258,7 +3258,7 @@ pmap_activate(struct thread *td)
|
||||
/* XXXKSE this is wrong.
|
||||
* pmap_activate is for the current thread on the current cpu
|
||||
*/
|
||||
if (p->p_flag & P_THREADED) {
|
||||
if (p->p_flag & P_SA) {
|
||||
/* Make sure all other cr3 entries are updated. */
|
||||
/* what if they are running? XXXKSE (maybe abort them) */
|
||||
FOREACH_THREAD_IN_PROC(p, td) {
|
||||
|
@ -135,7 +135,7 @@ i386_extend_pcb(struct thread *td)
|
||||
0 /* granularity */
|
||||
};
|
||||
|
||||
if (td->td_proc->p_flag & P_THREADED)
|
||||
if (td->td_proc->p_flag & P_SA)
|
||||
return (EINVAL); /* XXXKSE */
|
||||
/* XXXKSE All the code below only works in 1:1 needs changing */
|
||||
ext = (struct pcb_ext *)kmem_alloc(kernel_map, ctob(IOPAGES+1));
|
||||
|
@ -951,7 +951,7 @@ syscall(frame)
|
||||
td->td_frame = &frame;
|
||||
if (td->td_ucred != p->p_ucred)
|
||||
cred_update_thread(td);
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
thread_user_enter(p, td);
|
||||
params = (caddr_t)frame.tf_esp + sizeof(int);
|
||||
code = frame.tf_eax;
|
||||
|
@ -236,7 +236,7 @@ elf_linux_fixup(register_t **stack_base, struct image_params *imgp)
|
||||
register_t *pos;
|
||||
|
||||
KASSERT(curthread->td_proc == imgp->proc &&
|
||||
(curthread->td_proc->p_flag & P_THREADED) == 0,
|
||||
(curthread->td_proc->p_flag & P_SA) == 0,
|
||||
("unsafe elf_linux_fixup(), should be curproc"));
|
||||
args = (Elf32_Auxargs *)imgp->auxargs;
|
||||
pos = *stack_base + (imgp->argc + imgp->envc + 2);
|
||||
|
@ -944,7 +944,7 @@ syscall(struct trapframe *tf)
|
||||
sticks = td->td_sticks;
|
||||
if (td->td_ucred != p->p_ucred)
|
||||
cred_update_thread(td);
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
thread_user_enter(p, td);
|
||||
|
||||
if (p->p_sysent->sv_prepsyscall) {
|
||||
|
@ -164,7 +164,7 @@ hardclock_process(frame)
|
||||
* Run current process's virtual and profile time, as needed.
|
||||
*/
|
||||
mtx_lock_spin_flags(&sched_lock, MTX_QUIET);
|
||||
if (p->p_flag & P_THREADED) {
|
||||
if (p->p_flag & P_SA) {
|
||||
/* XXXKSE What to do? */
|
||||
} else {
|
||||
pstats = p->p_stats;
|
||||
@ -370,7 +370,7 @@ statclock(frame)
|
||||
/*
|
||||
* Charge the time as appropriate.
|
||||
*/
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
thread_statclock(1);
|
||||
p->p_uticks++;
|
||||
if (ke->ke_ksegrp->kg_nice > NZERO)
|
||||
@ -394,7 +394,7 @@ statclock(frame)
|
||||
p->p_iticks++;
|
||||
cp_time[CP_INTR]++;
|
||||
} else {
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
thread_statclock(0);
|
||||
td->td_sticks++;
|
||||
p->p_sticks++;
|
||||
|
@ -190,7 +190,7 @@ kern_execve(td, fname, argv, envv, mac_p)
|
||||
PROC_LOCK(p);
|
||||
KASSERT((p->p_flag & P_INEXEC) == 0,
|
||||
("%s(): process already has P_INEXEC flag", __func__));
|
||||
if (p->p_flag & P_THREADED || p->p_numthreads > 1) {
|
||||
if (p->p_flag & P_SA || p->p_numthreads > 1) {
|
||||
if (thread_single(SINGLE_EXIT)) {
|
||||
PROC_UNLOCK(p);
|
||||
return (ERESTART); /* Try again later. */
|
||||
@ -199,7 +199,7 @@ kern_execve(td, fname, argv, envv, mac_p)
|
||||
* If we get here all other threads are dead,
|
||||
* so unset the associated flags and lose KSE mode.
|
||||
*/
|
||||
p->p_flag &= ~P_THREADED;
|
||||
p->p_flag &= ~P_SA;
|
||||
td->td_mailbox = NULL;
|
||||
thread_single_end();
|
||||
}
|
||||
|
@ -134,7 +134,7 @@ exit1(struct thread *td, int rv)
|
||||
* MUST abort all other threads before proceeding past here.
|
||||
*/
|
||||
PROC_LOCK(p);
|
||||
if (p->p_flag & P_THREADED || p->p_numthreads > 1) {
|
||||
if (p->p_flag & P_SA || p->p_numthreads > 1) {
|
||||
/*
|
||||
* First check if some other thread got here before us..
|
||||
* if so, act apropriatly, (exit or suspend);
|
||||
@ -164,7 +164,7 @@ exit1(struct thread *td, int rv)
|
||||
* ...
|
||||
* Turn off threading support.
|
||||
*/
|
||||
p->p_flag &= ~P_THREADED;
|
||||
p->p_flag &= ~P_SA;
|
||||
thread_single_end(); /* Don't need this any more. */
|
||||
}
|
||||
/*
|
||||
|
@ -259,7 +259,7 @@ fork1(td, flags, pages, procp)
|
||||
* other side with the expectation that the process is about to
|
||||
* exec.
|
||||
*/
|
||||
if (p1->p_flag & P_THREADED) {
|
||||
if (p1->p_flag & P_SA) {
|
||||
/*
|
||||
* Idle the other threads for a second.
|
||||
* Since the user space is copied, it must remain stable.
|
||||
@ -717,7 +717,7 @@ fork1(td, flags, pages, procp)
|
||||
/*
|
||||
* If other threads are waiting, let them continue now
|
||||
*/
|
||||
if (p1->p_flag & P_THREADED) {
|
||||
if (p1->p_flag & P_SA) {
|
||||
PROC_LOCK(p1);
|
||||
thread_single_end();
|
||||
PROC_UNLOCK(p1);
|
||||
@ -732,7 +732,7 @@ fork1(td, flags, pages, procp)
|
||||
fail:
|
||||
sx_xunlock(&allproc_lock);
|
||||
uma_zfree(proc_zone, newproc);
|
||||
if (p1->p_flag & P_THREADED) {
|
||||
if (p1->p_flag & P_SA) {
|
||||
PROC_LOCK(p1);
|
||||
thread_single_end();
|
||||
PROC_UNLOCK(p1);
|
||||
|
@ -393,7 +393,7 @@ kse_thr_interrupt(struct thread *td, struct kse_thr_interrupt_args *uap)
|
||||
struct thread *td2;
|
||||
|
||||
p = td->td_proc;
|
||||
if (!(p->p_flag & P_THREADED) || (uap->tmbx == NULL))
|
||||
if (!(p->p_flag & P_SA) || (uap->tmbx == NULL))
|
||||
return (EINVAL);
|
||||
mtx_lock_spin(&sched_lock);
|
||||
FOREACH_THREAD_IN_PROC(p, td2) {
|
||||
@ -456,7 +456,7 @@ kse_exit(struct thread *td, struct kse_exit_args *uap)
|
||||
ke = td->td_kse;
|
||||
if (p->p_numthreads == 1) {
|
||||
kse_purge(p, td);
|
||||
p->p_flag &= ~P_THREADED;
|
||||
p->p_flag &= ~P_SA;
|
||||
mtx_unlock_spin(&sched_lock);
|
||||
PROC_UNLOCK(p);
|
||||
} else {
|
||||
@ -545,7 +545,7 @@ kse_wakeup(struct thread *td, struct kse_wakeup_args *uap)
|
||||
td2 = NULL;
|
||||
ku = NULL;
|
||||
/* KSE-enabled processes only, please. */
|
||||
if (!(p->p_flag & P_THREADED))
|
||||
if (!(p->p_flag & P_SA))
|
||||
return (EINVAL);
|
||||
PROC_LOCK(p);
|
||||
mtx_lock_spin(&sched_lock);
|
||||
@ -620,7 +620,7 @@ kse_create(struct thread *td, struct kse_create_args *uap)
|
||||
|
||||
/* Easier to just set it than to test and set */
|
||||
PROC_LOCK(p);
|
||||
p->p_flag |= P_THREADED;
|
||||
p->p_flag |= P_SA;
|
||||
PROC_UNLOCK(p);
|
||||
kg = td->td_ksegrp;
|
||||
if (uap->newgroup) {
|
||||
@ -1764,7 +1764,7 @@ thread_single(int force_exit)
|
||||
PROC_LOCK_ASSERT(p, MA_OWNED);
|
||||
KASSERT((td != NULL), ("curthread is NULL"));
|
||||
|
||||
if ((p->p_flag & P_THREADED) == 0 && p->p_numthreads == 1)
|
||||
if ((p->p_flag & P_SA) == 0 && p->p_numthreads == 1)
|
||||
return (0);
|
||||
|
||||
/* Is someone already single threading? */
|
||||
@ -1906,7 +1906,7 @@ thread_suspend_check(int return_instead)
|
||||
if ((p->p_flag & P_SINGLE_EXIT) && (p->p_singlethread != td)) {
|
||||
while (mtx_owned(&Giant))
|
||||
mtx_unlock(&Giant);
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
thread_exit();
|
||||
else
|
||||
thr_exit1();
|
||||
|
@ -2190,7 +2190,7 @@ postsig(sig)
|
||||
p->p_code = 0;
|
||||
p->p_sig = 0;
|
||||
}
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
thread_signal_add(curthread, sig);
|
||||
else
|
||||
(*p->p_sysent->sv_sendsig)(action, sig,
|
||||
|
@ -142,7 +142,7 @@ choosethread(void)
|
||||
td = ke->ke_thread;
|
||||
KASSERT((td->td_kse == ke), ("kse/thread mismatch"));
|
||||
kg = ke->ke_ksegrp;
|
||||
if (td->td_proc->p_flag & P_THREADED) {
|
||||
if (td->td_proc->p_flag & P_SA) {
|
||||
if (kg->kg_last_assigned == td) {
|
||||
kg->kg_last_assigned = TAILQ_PREV(td,
|
||||
threadqueue, td_runq);
|
||||
@ -247,7 +247,7 @@ remrunqueue(struct thread *td)
|
||||
/*
|
||||
* If it is not a threaded process, take the shortcut.
|
||||
*/
|
||||
if ((td->td_proc->p_flag & P_THREADED) == 0) {
|
||||
if ((td->td_proc->p_flag & P_SA) == 0) {
|
||||
/* Bring its kse with it, leave the thread attached */
|
||||
sched_rem(ke);
|
||||
ke->ke_state = KES_THREAD;
|
||||
@ -290,7 +290,7 @@ adjustrunqueue( struct thread *td, int newpri)
|
||||
/*
|
||||
* If it is not a threaded process, take the shortcut.
|
||||
*/
|
||||
if ((td->td_proc->p_flag & P_THREADED) == 0) {
|
||||
if ((td->td_proc->p_flag & P_SA) == 0) {
|
||||
/* We only care about the kse in the run queue. */
|
||||
td->td_priority = newpri;
|
||||
if (ke->ke_rqindex != (newpri / RQ_PPQ)) {
|
||||
@ -331,7 +331,7 @@ setrunqueue(struct thread *td)
|
||||
TD_SET_RUNQ(td);
|
||||
kg = td->td_ksegrp;
|
||||
kg->kg_runnable++;
|
||||
if ((td->td_proc->p_flag & P_THREADED) == 0) {
|
||||
if ((td->td_proc->p_flag & P_SA) == 0) {
|
||||
/*
|
||||
* Common path optimisation: Only one of everything
|
||||
* and the KSE is always already attached.
|
||||
@ -651,7 +651,7 @@ thread_sanity_check(struct thread *td, char *string)
|
||||
}
|
||||
}
|
||||
|
||||
if ((p->p_flag & P_THREADED) == 0) {
|
||||
if ((p->p_flag & P_SA) == 0) {
|
||||
if (ke == NULL) {
|
||||
panc(string, "non KSE thread lost kse");
|
||||
}
|
||||
|
@ -170,7 +170,7 @@ msleep(ident, mtx, priority, wmesg, timo)
|
||||
* the thread (recursion here might be bad).
|
||||
*/
|
||||
mtx_lock_spin(&sched_lock);
|
||||
if (p->p_flag & P_THREADED || p->p_numthreads > 1) {
|
||||
if (p->p_flag & P_SA || p->p_numthreads > 1) {
|
||||
/*
|
||||
* Just don't bother if we are exiting
|
||||
* and not the exiting thread or thread was marked as
|
||||
@ -517,7 +517,7 @@ mi_switch(void)
|
||||
CTR3(KTR_PROC, "mi_switch: old thread %p (pid %d, %s)", td, p->p_pid,
|
||||
p->p_comm);
|
||||
sched_nest = sched_lock.mtx_recurse;
|
||||
if (td->td_proc->p_flag & P_THREADED)
|
||||
if (td->td_proc->p_flag & P_SA)
|
||||
thread_switchout(td);
|
||||
sched_switchout(td);
|
||||
|
||||
|
@ -393,7 +393,7 @@ kse_thr_interrupt(struct thread *td, struct kse_thr_interrupt_args *uap)
|
||||
struct thread *td2;
|
||||
|
||||
p = td->td_proc;
|
||||
if (!(p->p_flag & P_THREADED) || (uap->tmbx == NULL))
|
||||
if (!(p->p_flag & P_SA) || (uap->tmbx == NULL))
|
||||
return (EINVAL);
|
||||
mtx_lock_spin(&sched_lock);
|
||||
FOREACH_THREAD_IN_PROC(p, td2) {
|
||||
@ -456,7 +456,7 @@ kse_exit(struct thread *td, struct kse_exit_args *uap)
|
||||
ke = td->td_kse;
|
||||
if (p->p_numthreads == 1) {
|
||||
kse_purge(p, td);
|
||||
p->p_flag &= ~P_THREADED;
|
||||
p->p_flag &= ~P_SA;
|
||||
mtx_unlock_spin(&sched_lock);
|
||||
PROC_UNLOCK(p);
|
||||
} else {
|
||||
@ -545,7 +545,7 @@ kse_wakeup(struct thread *td, struct kse_wakeup_args *uap)
|
||||
td2 = NULL;
|
||||
ku = NULL;
|
||||
/* KSE-enabled processes only, please. */
|
||||
if (!(p->p_flag & P_THREADED))
|
||||
if (!(p->p_flag & P_SA))
|
||||
return (EINVAL);
|
||||
PROC_LOCK(p);
|
||||
mtx_lock_spin(&sched_lock);
|
||||
@ -620,7 +620,7 @@ kse_create(struct thread *td, struct kse_create_args *uap)
|
||||
|
||||
/* Easier to just set it than to test and set */
|
||||
PROC_LOCK(p);
|
||||
p->p_flag |= P_THREADED;
|
||||
p->p_flag |= P_SA;
|
||||
PROC_UNLOCK(p);
|
||||
kg = td->td_ksegrp;
|
||||
if (uap->newgroup) {
|
||||
@ -1764,7 +1764,7 @@ thread_single(int force_exit)
|
||||
PROC_LOCK_ASSERT(p, MA_OWNED);
|
||||
KASSERT((td != NULL), ("curthread is NULL"));
|
||||
|
||||
if ((p->p_flag & P_THREADED) == 0 && p->p_numthreads == 1)
|
||||
if ((p->p_flag & P_SA) == 0 && p->p_numthreads == 1)
|
||||
return (0);
|
||||
|
||||
/* Is someone already single threading? */
|
||||
@ -1906,7 +1906,7 @@ thread_suspend_check(int return_instead)
|
||||
if ((p->p_flag & P_SINGLE_EXIT) && (p->p_singlethread != td)) {
|
||||
while (mtx_owned(&Giant))
|
||||
mtx_unlock(&Giant);
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
thread_exit();
|
||||
else
|
||||
thr_exit1();
|
||||
|
@ -590,7 +590,7 @@ sched_switchout(struct thread *td)
|
||||
if (TD_IS_RUNNING(td)) {
|
||||
/* Put us back on the run queue (kse and all). */
|
||||
setrunqueue(td);
|
||||
} else if (p->p_flag & P_THREADED) {
|
||||
} else if (p->p_flag & P_SA) {
|
||||
/*
|
||||
* We will not be on the run queue. So we must be
|
||||
* sleeping or similar. As it's available,
|
||||
|
@ -771,7 +771,7 @@ sched_switchout(struct thread *td)
|
||||
* We will not be on the run queue. So we must be
|
||||
* sleeping or similar.
|
||||
*/
|
||||
if (td->td_proc->p_flag & P_THREADED)
|
||||
if (td->td_proc->p_flag & P_SA)
|
||||
kse_reassign(ke);
|
||||
}
|
||||
|
||||
|
@ -109,7 +109,7 @@ userret(td, frame, oticks)
|
||||
/*
|
||||
* Do special thread processing, e.g. upcall tweaking and such.
|
||||
*/
|
||||
if (p->p_flag & P_THREADED) {
|
||||
if (p->p_flag & P_SA) {
|
||||
thread_userret(td, frame);
|
||||
}
|
||||
|
||||
@ -254,7 +254,7 @@ ast(struct trapframe *framep)
|
||||
}
|
||||
mtx_unlock(&p->p_sigacts->ps_mtx);
|
||||
PROC_UNLOCK(p);
|
||||
if (p->p_flag & P_THREADED && sigs) {
|
||||
if (p->p_flag & P_SA && sigs) {
|
||||
struct kse_upcall *ku = td->td_upcall;
|
||||
if ((void *)TRAPF_PC(framep) != ku->ku_func) {
|
||||
mtx_lock_spin(&sched_lock);
|
||||
|
@ -2419,7 +2419,7 @@ ttyinfo(struct tty *tp)
|
||||
|
||||
td = FIRST_THREAD_IN_PROC(pick);
|
||||
sprefix = "";
|
||||
if (pick->p_flag & P_THREADED) {
|
||||
if (pick->p_flag & P_SA) {
|
||||
stmp = "KSE" ; /* XXXKSE */
|
||||
} else {
|
||||
if (td) {
|
||||
|
@ -490,7 +490,7 @@ syscall(struct trapframe *tf)
|
||||
td->td_frame = tf;
|
||||
if (td->td_ucred != p->p_ucred)
|
||||
cred_update_thread(td);
|
||||
if (p->p_flag & P_THREADED)
|
||||
if (p->p_flag & P_SA)
|
||||
thread_user_enter(p, td);
|
||||
code = tf->tf_global[1];
|
||||
|
||||
|
@ -629,7 +629,7 @@ struct proc {
|
||||
#define P_WAITED 0x01000 /* Someone is waiting for us */
|
||||
#define P_WEXIT 0x02000 /* Working on exiting. */
|
||||
#define P_EXEC 0x04000 /* Process called exec. */
|
||||
#define P_THREADED 0x08000 /* Process is using threads. */
|
||||
#define P_SA 0x08000 /* Using scheduler activations. */
|
||||
#define P_CONTINUED 0x10000 /* Proc has continued from a stopped state. */
|
||||
#define P_STOPPED_SIG 0x20000 /* Stopped due to SIGSTOP/SIGTSTP */
|
||||
#define P_STOPPED_TRACE 0x40000 /* Stopped because of tracing */
|
||||
|
Loading…
Reference in New Issue
Block a user