On Thu, Mar 12, 2020 at 08:15:00AM -0500, Amit Kulkarni wrote:
> Hi,
> 
> In grepping for ps_flags in /sys, it is confusing to see that ps_flags is 
> associated with
> 
> 1) PWM_POLARITY (power regulation?).
>       Proposed to rename to ps_pwmflags?
> 2) process signals: struct sigacts in /sys/sys/signalvar.h
> 3) its rightful usage as ps_flags for struct process in /sys/sys/proc.h
> 
> 
> So, to reduce confusion while grepping, the below diff simply renames usages 
> of ps_flags in relation to struct sigacts (#2 above) to ps_sigflags.
> 

I have the same issue with ps_flags vs ps_flags and I think it resulted in
some major confusion for others as well. See inline.

> Index: kern/init_main.c
> ===================================================================
> RCS file: /cvs/src/sys/kern/init_main.c,v
> retrieving revision 1.296
> diff -u -p -u -p -r1.296 init_main.c
> --- kern/init_main.c  25 Feb 2020 16:55:33 -0000      1.296
> +++ kern/init_main.c  12 Mar 2020 12:58:41 -0000
> @@ -639,7 +639,7 @@ start_init(void *arg)
>       check_console(p);
>  
>       /* process 0 ignores SIGCHLD, but we can't */
> -     p->p_p->ps_sigacts->ps_flags = 0;
> +     p->p_p->ps_sigacts->ps_sigflags = 0;
>  
>       /*
>        * Need just enough stack to hold the faked-up "execve()" arguments.
> Index: kern/kern_exit.c
> ===================================================================
> RCS file: /cvs/src/sys/kern/kern_exit.c,v
> retrieving revision 1.185
> diff -u -p -u -p -r1.185 kern_exit.c
> --- kern/kern_exit.c  1 Mar 2020 18:50:52 -0000       1.185
> +++ kern/kern_exit.c  12 Mar 2020 12:58:42 -0000
> @@ -215,7 +215,7 @@ exit1(struct proc *p, int xexit, int xsi
>                * If parent has the SAS_NOCLDWAIT flag set, we're not
>                * going to become a zombie.
>                */
> -             if (pr->ps_pptr->ps_sigacts->ps_flags & SAS_NOCLDWAIT)
> +             if (pr->ps_pptr->ps_sigacts->ps_sigflags & SAS_NOCLDWAIT)
>                       atomic_setbits_int(&pr->ps_flags, PS_NOZOMBIE);
>       }
>  
> Index: kern/kern_sig.c
> ===================================================================
> RCS file: /cvs/src/sys/kern/kern_sig.c,v
> retrieving revision 1.252
> diff -u -p -u -p -r1.252 kern_sig.c
> --- kern/kern_sig.c   11 Mar 2020 15:45:03 -0000      1.252
> +++ kern/kern_sig.c   12 Mar 2020 12:58:42 -0000
> @@ -285,9 +285,9 @@ sys_sigaction(struct proc *p, void *v, r
>               if ((ps->ps_siginfo & bit) != 0)
>                       sa->sa_flags |= SA_SIGINFO;
>               if (signum == SIGCHLD) {
> -                     if ((ps->ps_flags & SAS_NOCLDSTOP) != 0)
> +                     if ((ps->ps_sigflags & SAS_NOCLDSTOP) != 0)
>                               sa->sa_flags |= SA_NOCLDSTOP;
> -                     if ((ps->ps_flags & SAS_NOCLDWAIT) != 0)
> +                     if ((ps->ps_sigflags & SAS_NOCLDWAIT) != 0)
>                               sa->sa_flags |= SA_NOCLDWAIT;
>               }
>               if ((sa->sa_mask & bit) == 0)
> @@ -336,9 +336,9 @@ setsigvec(struct proc *p, int signum, st
>       ps->ps_catchmask[signum] = sa->sa_mask &~ sigcantmask;
>       if (signum == SIGCHLD) {
>               if (sa->sa_flags & SA_NOCLDSTOP)
> -                     atomic_setbits_int(&ps->ps_flags, SAS_NOCLDSTOP);
> +                     atomic_setbits_int(&ps->ps_sigflags, SAS_NOCLDSTOP);
>               else
> -                     atomic_clearbits_int(&ps->ps_flags, SAS_NOCLDSTOP);
> +                     atomic_clearbits_int(&ps->ps_sigflags, SAS_NOCLDSTOP);

I doubt these should be atomic functions here. The sigacts ps_flags are
don't need atomic updates (especially since most other calls are not
atomic.

>               /*
>                * If the SA_NOCLDWAIT flag is set or the handler
>                * is SIG_IGN we reparent the dying child to PID 1
> @@ -350,9 +350,9 @@ setsigvec(struct proc *p, int signum, st
>               if (initprocess->ps_sigacts != ps &&
>                   ((sa->sa_flags & SA_NOCLDWAIT) ||
>                   sa->sa_handler == SIG_IGN))
> -                     atomic_setbits_int(&ps->ps_flags, SAS_NOCLDWAIT);
> +                     atomic_setbits_int(&ps->ps_sigflags, SAS_NOCLDWAIT);
>               else
> -                     atomic_clearbits_int(&ps->ps_flags, SAS_NOCLDWAIT);
> +                     atomic_clearbits_int(&ps->ps_sigflags, SAS_NOCLDWAIT);

And again.

>       }
>       if ((sa->sa_flags & SA_RESETHAND) != 0)
>               ps->ps_sigreset |= bit;
> @@ -406,7 +406,7 @@ siginit(struct process *pr)
>       for (i = 0; i < NSIG; i++)
>               if (sigprop[i] & SA_IGNORE && i != SIGCONT)
>                       ps->ps_sigignore |= sigmask(i);
> -     ps->ps_flags = SAS_NOCLDWAIT | SAS_NOCLDSTOP;
> +     ps->ps_sigflags = SAS_NOCLDWAIT | SAS_NOCLDSTOP;
>  }
>  
>  /*
> @@ -442,7 +442,7 @@ execsigs(struct proc *p)
>        * Clear set of signals caught on the signal stack.
>        */
>       sigstkinit(&p->p_sigstk);
> -     atomic_clearbits_int(&ps->ps_flags, SAS_NOCLDWAIT);
> +     atomic_clearbits_int(&ps->ps_sigflags, SAS_NOCLDWAIT);

And again.

>       if (ps->ps_sigact[SIGCHLD] == SIG_IGN)
>               ps->ps_sigact[SIGCHLD] = SIG_DFL;
>  }
> @@ -1360,7 +1360,7 @@ proc_stop_sweep(void *v)
>                       continue;
>               atomic_clearbits_int(&pr->ps_flags, PS_STOPPED);
>  
> -             if ((pr->ps_pptr->ps_sigacts->ps_flags & SAS_NOCLDSTOP) == 0)
> +             if ((pr->ps_pptr->ps_sigacts->ps_sigflags & SAS_NOCLDSTOP) == 0)
>                       prsignal(pr->ps_pptr, SIGCHLD);
>               wakeup(pr->ps_pptr);
>       }
> Index: sys/signalvar.h
> ===================================================================
> RCS file: /cvs/src/sys/sys/signalvar.h,v
> retrieving revision 1.39
> diff -u -p -u -p -r1.39 signalvar.h
> --- sys/signalvar.h   11 Mar 2020 15:45:04 -0000      1.39
> +++ sys/signalvar.h   12 Mar 2020 12:58:42 -0000
> @@ -53,7 +53,7 @@ struct      sigacts {
>       sigset_t ps_siginfo;            /* signals that provide siginfo */
>       sigset_t ps_sigignore;          /* signals being ignored */
>       sigset_t ps_sigcatch;           /* signals being caught by user */
> -     int     ps_flags;               /* signal flags, below */
> +     int     ps_sigflags;            /* signal flags, below */
>  };
>  
>  /* signal flags */
> 

-- 
:wq Claudio

Reply via email to