1:1 Userland threading stage 2.15/4:
authorSimon Schubert <corecode@dragonflybsd.org>
Sun, 18 Feb 2007 16:15:24 +0000 (16:15 +0000)
committerSimon Schubert <corecode@dragonflybsd.org>
Sun, 18 Feb 2007 16:15:24 +0000 (16:15 +0000)
Drop P_ZOMBIE and make SZOMB a real state again.

15 files changed:
bin/ps/print.c
lib/libkvm/kvm_proc.c
sys/emulation/linux/i386/linprocfs/linprocfs_misc.c
sys/kern/kern_descrip.c
sys/kern/kern_exit.c
sys/kern/kern_proc.c
sys/kern/kern_sig.c
sys/kern/kern_synch.c
sys/kern/tty.c
sys/sys/proc.h
usr.bin/fstat/fstat.c
usr.bin/gcore/gcore.c
usr.bin/top/machine.c
usr.bin/w/proc_compare.c
usr.bin/w/w.c

index 8b7dc5a..a74508a 100644 (file)
@@ -32,7 +32,7 @@
  *
  * @(#)print.c 8.6 (Berkeley) 4/16/94
  * $FreeBSD: src/bin/ps/print.c,v 1.36.2.4 2002/11/30 13:00:14 tjr Exp $
- * $DragonFly: src/bin/ps/print.c,v 1.30 2007/02/18 16:12:42 corecode Exp $
+ * $DragonFly: src/bin/ps/print.c,v 1.31 2007/02/18 16:15:23 corecode Exp $
  */
 
 #include <sys/param.h>
@@ -207,13 +207,14 @@ state(const KINFO *k, const struct varent *vent)
                }
                break;
 
+       case SZOMB:
+               *cp = 'Z';
+               break;
+
        default:
                *cp = '?';
        }
 
-       if (flag & P_ZOMBIE)
-               *cp = 'Z';
-
        cp++;
        if (flag & P_SWAPPEDOUT)
                *cp++ = 'W';
@@ -223,7 +224,7 @@ state(const KINFO *k, const struct varent *vent)
                *cp++ = 'N';
        if (flag & P_TRACED)
                *cp++ = 'X';
-       if (flag & P_WEXIT && (flag & P_ZOMBIE) == 0)
+       if (flag & P_WEXIT && KI_PROC(k, stat) != SZOMB)
                *cp++ = 'E';
        if (flag & P_PPWAIT)
                *cp++ = 'V';
index 37b86c4..f4d353a 100644 (file)
@@ -35,7 +35,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/lib/libkvm/kvm_proc.c,v 1.25.2.3 2002/08/24 07:27:46 kris Exp $
- * $DragonFly: src/lib/libkvm/kvm_proc.c,v 1.11 2007/02/16 23:11:39 corecode Exp $
+ * $DragonFly: src/lib/libkvm/kvm_proc.c,v 1.12 2007/02/18 16:15:23 corecode Exp $
  *
  * @(#)kvm_proc.c      8.3 (Berkeley) 9/23/93
  */
@@ -629,7 +629,7 @@ proc_verify(kvm_t *kd, const struct kinfo_proc *p)
                return (0);
 
        error = (p->kp_pid == kp.kp_pid &&
-           ((kp.kp_flags & P_ZOMBIE) == 0 || (p->kp_flags & P_ZOMBIE)));
+           (kp.kp_stat != SZOMB || p->kp_stat == SZOMB));
        return (error);
 }
 
@@ -654,7 +654,7 @@ kvm_doargv(kvm_t *kd, const struct kinfo_proc *kp, int nchr,
        /*
         * Pointers are stored at the top of the user stack.
         */
-       if ((kp->kp_flags & P_ZOMBIE) ||
+       if (kp->kp_stat == SZOMB ||
            kvm_uread(kd, kp->kp_pid, ps_strings, (char *)&arginfo,
                      sizeof(arginfo)) != sizeof(arginfo))
                return (0);
index 3a4b726..715c223 100644 (file)
@@ -39,7 +39,7 @@
  *     @(#)procfs_status.c     8.4 (Berkeley) 6/15/94
  *
  * $FreeBSD: src/sys/i386/linux/linprocfs/linprocfs_misc.c,v 1.3.2.8 2001/06/25 19:46:47 pirzyk Exp $
- * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_misc.c,v 1.17 2007/02/16 23:11:39 corecode Exp $
+ * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_misc.c,v 1.18 2007/02/18 16:15:23 corecode Exp $
  */
 
 #include <sys/param.h>
@@ -393,8 +393,6 @@ linprocfs_doprocstatus(struct proc *curp, struct proc *p, struct pfsnode *pfs,
                state = state_str[0];
        else
                state = state_str[(int)p->p_stat];
-       if (p->p_flag & P_ZOMBIE)
-               state = state_str[4];
 
 #define PS_ADD ps += ksprintf
        PS_ADD(ps, "Name:\t%s\n",         p->p_comm); /* XXX escape */
index 0d7b2f3..cb34684 100644 (file)
@@ -70,7 +70,7 @@
  *
  *     @(#)kern_descrip.c      8.6 (Berkeley) 4/19/94
  * $FreeBSD: src/sys/kern/kern_descrip.c,v 1.81.2.19 2004/02/28 00:43:31 tegge Exp $
- * $DragonFly: src/sys/kern/kern_descrip.c,v 1.77 2007/02/03 17:05:57 corecode Exp $
+ * $DragonFly: src/sys/kern/kern_descrip.c,v 1.78 2007/02/18 16:15:23 corecode Exp $
  */
 
 #include "opt_compat.h"
@@ -2400,7 +2400,7 @@ sysctl_kern_file_callback(struct proc *p, void *data)
        uid_t uid;
        int n;
 
-       if (p->p_stat == SIDL || (p->p_flag & P_ZOMBIE))
+       if (p->p_stat == SIDL || p->p_stat == SZOMB)
                return(0);
        if (!PRISON_CHECK(info->req->td->td_proc->p_ucred, p->p_ucred) != 0)
                return(0);
index 90185cf..db70774 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)kern_exit.c 8.7 (Berkeley) 2/12/94
  * $FreeBSD: src/sys/kern/kern_exit.c,v 1.92.2.11 2003/01/13 22:51:16 dillon Exp $
- * $DragonFly: src/sys/kern/kern_exit.c,v 1.71 2007/02/18 16:12:43 corecode Exp $
+ * $DragonFly: src/sys/kern/kern_exit.c,v 1.72 2007/02/18 16:15:23 corecode Exp $
  */
 
 #include "opt_compat.h"
@@ -469,7 +469,7 @@ loop:
                }
 
                nfound++;
-               if (p->p_flag & P_ZOMBIE) {
+               if (p->p_stat == SZOMB) {
                        deadlp = ONLY_LWP_IN_PROC(p);
 
                        /*
index b85a7a3..72ec79e 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)kern_proc.c 8.7 (Berkeley) 2/14/95
  * $FreeBSD: src/sys/kern/kern_proc.c,v 1.63.2.9 2003/05/08 07:47:16 kbyanc Exp $
- * $DragonFly: src/sys/kern/kern_proc.c,v 1.36 2007/02/16 23:11:39 corecode Exp $
+ * $DragonFly: src/sys/kern/kern_proc.c,v 1.37 2007/02/18 16:15:23 corecode Exp $
  */
 
 #include <sys/param.h>
@@ -352,7 +352,7 @@ fixjobc(struct proc *p, struct pgrp *pgrp, int entering)
        LIST_FOREACH(p, &p->p_children, p_sibling)
                if ((hispgrp = p->p_pgrp) != pgrp &&
                    hispgrp->pg_session == mysession &&
-                   (p->p_flag & P_ZOMBIE) == 0) {
+                   p->p_stat != SZOMB) {
                        if (entering)
                                hispgrp->pg_jobc++;
                        else if (--hispgrp->pg_jobc == 0)
@@ -492,7 +492,7 @@ proc_move_allproc_zombie(struct proc *p)
        LIST_REMOVE(p, p_list);
        LIST_INSERT_HEAD(&zombproc, p, p_list);
        LIST_REMOVE(p, p_hash);
-       p->p_flag |= P_ZOMBIE;
+       p->p_stat = SZOMB;
        spin_unlock_wr(&allproc_spin);
 }
 
index c7c2342..d1bfca7 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)kern_sig.c  8.7 (Berkeley) 4/18/94
  * $FreeBSD: src/sys/kern/kern_sig.c,v 1.72.2.17 2003/05/16 16:34:34 obrien Exp $
- * $DragonFly: src/sys/kern/kern_sig.c,v 1.64 2007/02/18 16:12:43 corecode Exp $
+ * $DragonFly: src/sys/kern/kern_sig.c,v 1.65 2007/02/18 16:15:23 corecode Exp $
  */
 
 #include "opt_ktrace.h"
@@ -654,7 +654,8 @@ dokillpg(int sig, int pgid, int all)
                lockmgr(&pgrp->pg_lock, LK_EXCLUSIVE);
                LIST_FOREACH(p, &pgrp->pg_members, p_pglist) {
                        if (p->p_pid <= 1 || 
-                           (p->p_flag & (P_SYSTEM | P_ZOMBIE)) ||
+                           p->p_stat == SZOMB ||
+                           (p->p_flag & P_SYSTEM) ||
                            !CANSIGNAL(p, sig)) {
                                continue;
                        }
index 4695a58..d4feb38 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)kern_synch.c        8.9 (Berkeley) 5/19/95
  * $FreeBSD: src/sys/kern/kern_synch.c,v 1.87.2.6 2002/10/13 07:29:53 kbyanc Exp $
- * $DragonFly: src/sys/kern/kern_synch.c,v 1.74 2007/02/18 16:12:43 corecode Exp $
+ * $DragonFly: src/sys/kern/kern_synch.c,v 1.75 2007/02/18 16:15:23 corecode Exp $
  */
 
 #include "opt_ktrace.h"
@@ -227,7 +227,7 @@ schedcpu_resource(struct proc *p, void *data __unused)
        lp = FIRST_LWP_IN_PROC(p);
        crit_enter();
        if (p->p_stat == SIDL || 
-           (p->p_flag & P_ZOMBIE) ||
+           p->p_stat == SZOMB ||
            p->p_limit == NULL || 
            lp->lwp_thread == NULL
        ) {
index 6fde73e..c34d770 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)tty.c       8.8 (Berkeley) 1/21/94
  * $FreeBSD: src/sys/kern/tty.c,v 1.129.2.5 2002/03/11 01:32:31 dd Exp $
- * $DragonFly: src/sys/kern/tty.c,v 1.38 2007/02/18 16:12:43 corecode Exp $
+ * $DragonFly: src/sys/kern/tty.c,v 1.39 2007/02/18 16:15:23 corecode Exp $
  */
 
 /*-
@@ -2400,7 +2400,7 @@ ttyinfo(struct tty *tp)
 
                pctcpu = (lp->lwp_pctcpu * 10000 + FSCALE / 2) >> FSHIFT;
 
-               if (pick->p_stat == SIDL || (pick->p_flag & P_ZOMBIE))
+               if (pick->p_stat == SIDL || pick->p_stat == SZOMB)
                    vmsz = 0;
                else
                    vmsz = pgtok(vmspace_resident_count(pick->p_vmspace));
@@ -2471,7 +2471,7 @@ proc_compare(struct proc *p1, struct proc *p2)
        /*
         * weed out zombies
         */
-       switch (TESTAB((p1->p_flag & P_ZOMBIE), (p2->p_flag & P_ZOMBIE))) {
+       switch (TESTAB(p1->p_stat == SZOMB, p2->p_stat == SZOMB)) {
        case ONLYA:
                return (1);
        case ONLYB:
index 43d95f9..7771858 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)proc.h      8.15 (Berkeley) 5/19/95
  * $FreeBSD: src/sys/sys/proc.h,v 1.99.2.9 2003/06/06 20:21:32 tegge Exp $
- * $DragonFly: src/sys/sys/proc.h,v 1.95 2007/02/18 16:13:27 corecode Exp $
+ * $DragonFly: src/sys/sys/proc.h,v 1.96 2007/02/18 16:15:24 corecode Exp $
  */
 
 #ifndef _SYS_PROC_H_
@@ -147,6 +147,7 @@ enum procstat {
        SIDL = 1,
        SACTIVE = 2,
        SSTOP = 3,
+       SZOMB = 4,
 };
 
 struct lwp {
@@ -328,7 +329,7 @@ struct      proc {
 #define        P_UPCALLPEND    0x20000 /* an upcall is pending */
 
 #define        P_SWAPWAIT      0x40000 /* Waiting for a swapin */
-#define        P_ZOMBIE        0x80000 /* Now in a zombied state */
+#define        P_UNUSED6       0x80000 /* was: Now in a zombied state */
 
 /* Marked a kernel thread */
 #define        P_ONRUNQ        0x100000 /* on a user scheduling run queue */
index ef4f480..6ba43ec 100644 (file)
@@ -33,7 +33,7 @@
  * @(#) Copyright (c) 1988, 1993 The Regents of the University of California.  All rights reserved.
  * @(#)fstat.c 8.3 (Berkeley) 5/2/95
  * $FreeBSD: src/usr.bin/fstat/fstat.c,v 1.21.2.7 2001/11/21 10:49:37 dwmalone Exp $
- * $DragonFly: src/usr.bin/fstat/fstat.c,v 1.23 2007/02/16 23:11:40 corecode Exp $
+ * $DragonFly: src/usr.bin/fstat/fstat.c,v 1.24 2007/02/18 16:15:24 corecode Exp $
  */
 
 #define        _KERNEL_STRUCTURES
@@ -260,7 +260,7 @@ main(int argc, char **argv)
                putchar('\n');
 
        for (plast = &p[cnt]; p < plast; ++p) {
-               if (p->kp_flags & P_ZOMBIE)
+               if (p->kp_stat == SZOMB)
                        continue;
                if (!kread((void *)p->kp_paddr, &proc, sizeof(proc))) {
                        dprintf(stderr, "can't read proc at %p for pid %d\n",
index 86e121a..1ee5b74 100644 (file)
@@ -33,7 +33,7 @@
  * @(#) Copyright (c) 1992, 1993 The Regents of the University of California.  All rights reserved.
  * @(#)gcore.c 8.2 (Berkeley) 9/23/93
  * $FreeBSD: src/usr.bin/gcore/gcore.c,v 1.15.2.2 2001/08/17 20:56:22 mikeh Exp $
- * $DragonFly: src/usr.bin/gcore/gcore.c,v 1.9 2007/02/16 23:11:40 corecode Exp $
+ * $DragonFly: src/usr.bin/gcore/gcore.c,v 1.10 2007/02/18 16:15:24 corecode Exp $
  */
 
 /*
@@ -152,7 +152,7 @@ main(int argc, char **argv)
                if (ki->kp_ruid != uid && uid != 0)
                        errx(1, "%d: not owner", pid);
 
-               if (ki->kp_flags & P_ZOMBIE)
+               if (ki->kp_stat == SZOMB)
                        errx(1, "%d: zombie", pid);
 
                if (ki->kp_flags & P_WEXIT)
index 3ed5e8a..a119508 100644 (file)
@@ -21,7 +21,7 @@
  *          Hiten Pandya <hmp@backplane.com>
  *
  * $FreeBSD: src/usr.bin/top/machine.c,v 1.29.2.2 2001/07/31 20:27:05 tmm Exp $
- * $DragonFly: src/usr.bin/top/machine.c,v 1.22 2007/02/16 23:11:40 corecode Exp $
+ * $DragonFly: src/usr.bin/top/machine.c,v 1.23 2007/02/18 16:15:24 corecode Exp $
  */
 
 
@@ -503,7 +503,7 @@ caddr_t get_process_info(struct system_info *si, struct process_select *sel,
            total_procs++;
            process_states[(unsigned char) PP(pp, stat)]++;
            if ((show_threads && (LP(pp, pid) == 0)) ||
-               (!show_only_threads && ((PP(pp, flags) & P_ZOMBIE) == 0) &&
+               (!show_only_threads && PP(pp, stat) != SZOMB &&
                (show_idle || (LP(pp, pctcpu) != 0) ||
                 (LP(pp, stat) == LSRUN)) &&
                (!show_uid || PP(pp, ruid) == (uid_t)sel->uid)))
@@ -605,7 +605,7 @@ char *format_next_process(caddr_t handle, char *(*get_userid)())
            break;
     }
 
-    if (PP(pp, flags) & P_ZOMBIE)
+    if (PP(pp, stat) == SZOMB)
            strcpy(status, "ZOMB");
 
     /*
index f8fb5de..3af7d26 100644 (file)
@@ -32,7 +32,7 @@
  *
  * @(#)proc_compare.c  8.2 (Berkeley) 9/23/93
  *
- * $DragonFly: src/usr.bin/w/proc_compare.c,v 1.8 2007/02/18 16:12:43 corecode Exp $
+ * $DragonFly: src/usr.bin/w/proc_compare.c,v 1.9 2007/02/18 16:15:24 corecode Exp $
  */
 
 #include <sys/param.h>
@@ -93,7 +93,7 @@ proc_compare(struct kinfo_proc *p1, struct kinfo_proc *p2)
        /*
         * weed out zombies
         */
-       switch (TESTAB(p1->kp_flags & P_ZOMBIE, p2->kp_flags & P_ZOMBIE)) {
+       switch (TESTAB(p1->kp_stat == SZOMB, p2->kp_stat == SZOMB)) {
        case ONLYA:
                return (1);
        case ONLYB:
index eb16bce..705696a 100644 (file)
@@ -33,7 +33,7 @@
  * @(#) Copyright (c) 1980, 1991, 1993, 1994 The Regents of the University of California.  All rights reserved.
  * @(#)w.c     8.4 (Berkeley) 4/16/94
  * $FreeBSD: src/usr.bin/w/w.c,v 1.38.2.6 2002/03/12 19:51:51 phantom Exp $
- * $DragonFly: src/usr.bin/w/w.c,v 1.9 2007/02/16 23:11:40 corecode Exp $
+ * $DragonFly: src/usr.bin/w/w.c,v 1.10 2007/02/18 16:15:24 corecode Exp $
  */
 
 /*
@@ -275,7 +275,7 @@ main(int argc, char **argv)
        if ((kp = kvm_getprocs(kd, KERN_PROC_ALL, 0, &nentries)) == NULL)
                err(1, "%s", kvm_geterr(kd));
        for (i = 0; i < nentries; i++, kp++) {
-               if (kp->kp_stat == SIDL || (kp->kp_flags & P_ZOMBIE))
+               if (kp->kp_stat == SIDL || kp->kp_stat == SZOMB)
                        continue;
                for (ep = ehead; ep != NULL; ep = ep->next) {
                        if (ep->tdev == kp->kp_tdev) {