On Sat, May 11, 2019 at 07:23:42PM -0400, Martin Pieuchot wrote:
> Document which fields are protected by the SCHED_LOCK(), ok?
>
> Index: sys/proc.h
> ===================================================================
> RCS file: /cvs/src/sys/sys/proc.h,v
> retrieving revision 1.263
> diff -u -p -r1.263 proc.h
> --- sys/proc.h 6 Jan 2019 12:59:45 -0000 1.263
> +++ sys/proc.h 11 May 2019 23:21:57 -0000
> @@ -297,8 +297,12 @@ struct process {
> struct kcov_dev;
> struct lock_list_entry;
>
> +/*
> + * Locks used to protect struct members in this file:
> + * s scheduler lock
> + */
> struct proc {
> - TAILQ_ENTRY(proc) p_runq;
> + TAILQ_ENTRY(proc) p_runq; /* [s] current run/sleep queue */
> LIST_ENTRY(proc) p_list; /* List of all threads. */
>
> struct process *p_p; /* The process of this thread. */
> @@ -314,7 +318,7 @@ struct proc {
>
> int p_flag; /* P_* flags. */
> u_char p_spare; /* unused */
> - char p_stat; /* S* process status. */
> + char p_stat; /* [s] S* process status. */
> char p_pad1[1];
> u_char p_descfd; /* if not 255, fdesc permits this fd */
>
> @@ -328,17 +332,17 @@ struct proc {
> long p_thrslpid; /* for thrsleep syscall */
>
> /* scheduling */
> - u_int p_estcpu; /* Time averaged value of p_cpticks. */
> + u_int p_estcpu; /* [s] Time averaged val of p_cpticks */
> int p_cpticks; /* Ticks of cpu time. */
> - const volatile void *p_wchan;/* Sleep address. */
> + const volatile void *p_wchan; /* [s] Sleep address. */
> struct timeout p_sleep_to;/* timeout for tsleep() */
> - const char *p_wmesg; /* Reason for sleep. */
> - fixpt_t p_pctcpu; /* %cpu for this thread */
> - u_int p_slptime; /* Time since last blocked. */
> + const char *p_wmesg; /* [s] Reason for sleep. */
> + fixpt_t p_pctcpu; /* [s] %cpu for this thread */
> + u_int p_slptime; /* [s] Time since last blocked. */
> u_int p_uticks; /* Statclock hits in user mode. */
> u_int p_sticks; /* Statclock hits in system mode. */
> u_int p_iticks; /* Statclock hits processing intr. */
> - struct cpu_info * volatile p_cpu; /* CPU we're running on. */
> + struct cpu_info * volatile p_cpu; /* [s] CPU we're running on. */
>
> struct rusage p_ru; /* Statistics */
> struct tusage p_tu; /* accumulated times. */
> @@ -357,8 +361,8 @@ struct proc {
> vaddr_t p_spstart;
> vaddr_t p_spend;
>
> - u_char p_priority; /* Process priority. */
> - u_char p_usrpri; /* User-priority based on p_estcpu and ps_nice.
> */
> + u_char p_priority; /* [s] Process priority. */
> + u_char p_usrpri; /* [s] User-prio based on p_estcpu & ps_nice. */
> int p_pledge_syscall; /* Cache of current syscall */
>
> struct ucred *p_ucred; /* cached credentials */
>
I've checked the [s]-marked members, this is correct from my point of
view
ok ians@