Hi,
I think we all agree that global locks should be represented using
uppercase letters in locking annotations. This is an attempt to
harmonize the existing annotations.
Comments? OK?
Index: dev/dt/dt_dev.c
===================================================================
RCS file: /cvs/src/sys/dev/dt/dt_dev.c,v
retrieving revision 1.7
diff -u -p -r1.7 dt_dev.c
--- dev/dt/dt_dev.c 27 Jun 2020 07:22:09 -0000 1.7
+++ dev/dt/dt_dev.c 29 Jun 2020 18:47:30 -0000
@@ -74,19 +74,19 @@
*
* Locks used to protect struct members in this file:
* m per-softc mutex
- * k kernel lock
+ * K kernel lock
*/
struct dt_softc {
- SLIST_ENTRY(dt_softc) ds_next; /* [k] descriptor list */
+ SLIST_ENTRY(dt_softc) ds_next; /* [K] descriptor list */
int ds_unit; /* [I] D_CLONE unique unit */
pid_t ds_pid; /* [I] PID of tracing program */
struct mutex ds_mtx;
- struct dt_pcb_list ds_pcbs; /* [k] list of enabled PCBs */
- struct dt_evt *ds_bufqueue; /* [k] copy evts to userland */
- size_t ds_bufqlen; /* [k] length of the queue */
- int ds_recording; /* [k] currently recording? */
+ struct dt_pcb_list ds_pcbs; /* [K] list of enabled PCBs */
+ struct dt_evt *ds_bufqueue; /* [K] copy evts to userland */
+ size_t ds_bufqlen; /* [K] length of the queue */
+ int ds_recording; /* [K] currently recording? */
int ds_evtcnt; /* [m] # of readable evts */
/* Counters */
@@ -94,7 +94,7 @@ struct dt_softc {
uint64_t ds_dropevt; /* [m] # of events dropped */
};
-SLIST_HEAD(, dt_softc) dtdev_list; /* [k] list of open /dev/dt nodes */
+SLIST_HEAD(, dt_softc) dtdev_list; /* [K] list of open /dev/dt nodes */
/*
* Probes are created during dt_attach() and never modified/freed during
@@ -104,7 +104,7 @@ unsigned int dt_nprobes; /* [I]
# of p
SIMPLEQ_HEAD(, dt_probe) dt_probe_list; /* [I] list of probes */
struct rwlock dt_lock = RWLOCK_INITIALIZER("dtlk");
-volatile uint32_t dt_tracing = 0; /* [k] # of processes tracing */
+volatile uint32_t dt_tracing = 0; /* [K] # of processes tracing */
void dtattach(struct device *, struct device *, void *);
int dtopen(dev_t, int, int, struct proc *);
Index: dev/dt/dtvar.h
===================================================================
RCS file: /cvs/src/sys/dev/dt/dtvar.h,v
retrieving revision 1.3
diff -u -p -r1.3 dtvar.h
--- dev/dt/dtvar.h 28 Mar 2020 15:42:25 -0000 1.3
+++ dev/dt/dtvar.h 29 Jun 2020 18:47:30 -0000
@@ -159,14 +159,14 @@ int dtioc_req_isvalid(struct dtioc_req
*
* Locks used to protect struct members in this file:
* I immutable after creation
- * k kernel lock
- * k,s kernel lock for writting and SMR for reading
+ * K kernel lock
+ * K,S kernel lock for writting and SMR for reading
* m per-pcb mutex
* c owned (read & modified) by a single CPU
*/
struct dt_pcb {
- SMR_SLIST_ENTRY(dt_pcb) dp_pnext; /* [k,s] next PCB per probe */
- TAILQ_ENTRY(dt_pcb) dp_snext; /* [k] next PCB per softc */
+ SMR_SLIST_ENTRY(dt_pcb) dp_pnext; /* [K,S] next PCB per probe */
+ TAILQ_ENTRY(dt_pcb) dp_snext; /* [K] next PCB per softc */
/* Event states ring */
unsigned int dp_prod; /* [m] read index */
@@ -203,18 +203,18 @@ void dt_pcb_ring_consume(struct dt_pcb
*
* Locks used to protect struct members in this file:
* I immutable after creation
- * k kernel lock
- * d dt_lock
- * d,s dt_lock for writting and SMR for reading
+ * K kernel lock
+ * D dt_lock
+ * D,S dt_lock for writting and SMR for reading
*/
struct dt_probe {
- SIMPLEQ_ENTRY(dt_probe) dtp_next; /* [k] global list of probes */
- SMR_SLIST_HEAD(, dt_pcb) dtp_pcbs; /* [d,s] list of enabled PCBs */
+ SIMPLEQ_ENTRY(dt_probe) dtp_next; /* [K] global list of probes */
+ SMR_SLIST_HEAD(, dt_pcb) dtp_pcbs; /* [D,S] list of enabled PCBs */
struct dt_provider *dtp_prov; /* [I] its to provider */
const char *dtp_func; /* [I] probe function */
const char *dtp_name; /* [I] probe name */
uint32_t dtp_pbn; /* [I] unique ID */
- volatile uint32_t dtp_recording; /* [d] is it recording? */
+ volatile uint32_t dtp_recording; /* [D] is it recording? */
uint8_t dtp_nargs; /* [I] # of arguments */
/* Provider specific fields. */
@@ -228,7 +228,7 @@ struct dt_probe {
*/
struct dt_provider {
const char *dtpv_name; /* [I] provider name */
- volatile uint32_t dtpv_recording;/* [d] # of recording PCBs */
+ volatile uint32_t dtpv_recording;/* [D] # of recording PCBs */
int (*dtpv_alloc)(struct dt_probe *, struct dt_softc *,
struct dt_pcb_list *, struct dtioc_req *);
Index: kern/kern_tc.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_tc.c,v
retrieving revision 1.59
diff -u -p -r1.59 kern_tc.c
--- kern/kern_tc.c 26 Jun 2020 18:48:31 -0000 1.59
+++ kern/kern_tc.c 29 Jun 2020 18:47:32 -0000
@@ -69,24 +69,24 @@ static struct timecounter dummy_timecoun
/*
* Locks used to protect struct members, global variables in this file:
* I immutable after initialization
- * t tc_lock
- * w windup_mtx
+ * T tc_lock
+ * W windup_mtx
*/
struct timehands {
/* These fields must be initialized by the driver. */
- struct timecounter *th_counter; /* [w] */
- int64_t th_adjtimedelta; /* [tw] */
- int64_t th_adjustment; /* [w] */
- u_int64_t th_scale; /* [w] */
- u_int th_offset_count; /* [w] */
- struct bintime th_boottime; /* [tw] */
- struct bintime th_offset; /* [w] */
- struct bintime th_naptime; /* [w] */
- struct timeval th_microtime; /* [w] */
- struct timespec th_nanotime; /* [w] */
+ struct timecounter *th_counter; /* [W] */
+ int64_t th_adjtimedelta; /* [T,W] */
+ int64_t th_adjustment; /* [W] */
+ u_int64_t th_scale; /* [W] */
+ u_int th_offset_count; /* [W] */
+ struct bintime th_boottime; /* [T,W] */
+ struct bintime th_offset; /* [W] */
+ struct bintime th_naptime; /* [W] */
+ struct timeval th_microtime; /* [W] */
+ struct timespec th_nanotime; /* [W] */
/* Fields not to be copied in tc_windup start with th_generation. */
- volatile u_int th_generation; /* [w] */
+ volatile u_int th_generation; /* [W] */
struct timehands *th_next; /* [I] */
};
@@ -109,8 +109,8 @@ struct rwlock tc_lock = RWLOCK_INITIALIZ
*/
struct mutex windup_mtx = MUTEX_INITIALIZER(IPL_CLOCK);
-static struct timehands *volatile timehands = &th0; /* [w] */
-struct timecounter *timecounter = &dummy_timecounter; /* [t] */
+static struct timehands *volatile timehands = &th0; /* [W] */
+struct timecounter *timecounter = &dummy_timecounter; /* [T] */
static SLIST_HEAD(, timecounter) tc_list = SLIST_HEAD_INITIALIZER(tc_list);
/*
Index: kern/kern_timeout.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_timeout.c,v
retrieving revision 1.72
diff -u -p -r1.72 kern_timeout.c
--- kern/kern_timeout.c 18 Feb 2020 12:13:40 -0000 1.72
+++ kern/kern_timeout.c 29 Jun 2020 18:47:32 -0000
@@ -47,12 +47,12 @@
* Locks used to protect global variables in this file:
*
* I immutable after initialization
- * t timeout_mutex
+ * T timeout_mutex
*/
struct mutex timeout_mutex = MUTEX_INITIALIZER(IPL_HIGH);
void *softclock_si; /* [I] softclock() interrupt handle */
-struct timeoutstat tostat; /* [t] statistics and totals */
+struct timeoutstat tostat; /* [T] statistics and totals */
/*
* Timeouts are kept in a hierarchical timing wheel. The to_time is the value
@@ -64,9 +64,9 @@ struct timeoutstat tostat; /* [t] stati
#define WHEELMASK 255
#define WHEELBITS 8
-struct circq timeout_wheel[BUCKETS]; /* [t] Queues of timeouts */
-struct circq timeout_todo; /* [t] Due or needs scheduling */
-struct circq timeout_proc; /* [t] Due + needs process context */
+struct circq timeout_wheel[BUCKETS]; /* [T] Queues of timeouts */
+struct circq timeout_todo; /* [T] Due or needs scheduling */
+struct circq timeout_proc; /* [T] Due + needs process context */
#define MASKWHEEL(wheel, time) (((time) >> ((wheel)*WHEELBITS)) & WHEELMASK)
Index: sys/filedesc.h
===================================================================
RCS file: /cvs/src/sys/sys/filedesc.h,v
retrieving revision 1.44
diff -u -p -r1.44 filedesc.h
--- sys/filedesc.h 30 Jan 2020 15:33:04 -0000 1.44
+++ sys/filedesc.h 29 Jun 2020 18:47:32 -0000
@@ -64,15 +64,15 @@ struct kqueue;
* a atomic operations
* f fd_lock
* f/w fd_lock when writing
- * k kernel lock
+ * K kernel lock
* m fd_fplock
*/
struct filedesc {
struct file **fd_ofiles; /* [f/w,m] file structures for
* open files */
char *fd_ofileflags; /* [f] per-process open file flags */
- struct vnode *fd_cdir; /* [k] current directory */
- struct vnode *fd_rdir; /* [k] root directory */
+ struct vnode *fd_cdir; /* [K] current directory */
+ struct vnode *fd_rdir; /* [K] root directory */
int fd_nfiles; /* [f] number of open files allocated */
int fd_openfd; /* [f] number of files currently open */
u_int *fd_himap; /* [f] each bit points to 32 fds */
@@ -80,7 +80,7 @@ struct filedesc {
int fd_lastfile; /* [f] high-water mark of fd_ofiles */
int fd_freefile; /* [f] approx. next free file */
u_short fd_cmask; /* [f/w] mask for file creation */
- u_short fd_refcnt; /* [k] reference count */
+ u_short fd_refcnt; /* [K] reference count */
struct rwlock fd_lock; /* lock for the file descs */
struct mutex fd_fplock; /* lock for reading fd_ofiles without
* fd_lock */
Index: sys/proc.h
===================================================================
RCS file: /cvs/src/sys/sys/proc.h,v
retrieving revision 1.295
diff -u -p -r1.295 proc.h
--- sys/proc.h 28 Apr 2020 08:29:40 -0000 1.295
+++ sys/proc.h 29 Jun 2020 18:47:32 -0000
@@ -152,7 +152,7 @@ struct unveil;
* a atomic operations
* m this process' `ps_mtx'
* p this process' `ps_lock'
- * r rlimit_lock
+ * R rlimit_lock
*/
struct process {
/*
@@ -235,7 +235,7 @@ struct process {
/* The following fields are all copied upon creation in process_new. */
#define ps_startcopy ps_limit
- struct plimit *ps_limit; /* [m,r] Process limits. */
+ struct plimit *ps_limit; /* [m,R] Process limits. */
struct pgrp *ps_pgrp; /* Pointer to process group. */
struct emul *ps_emul; /* Emulation information */
@@ -325,12 +325,12 @@ struct p_inentry {
/*
* Locks used to protect struct members in this file:
* I immutable after creation
- * s scheduler lock
+ * S scheduler lock
* l read only reference, see lim_read_enter()
* o owned (read/modified only) by this thread
*/
struct proc {
- TAILQ_ENTRY(proc) p_runq; /* [s] current run/sleep queue */
+ TAILQ_ENTRY(proc) p_runq; /* [S] current run/sleep queue */
LIST_ENTRY(proc) p_list; /* List of all threads. */
struct process *p_p; /* [I] The process of this thread. */
@@ -347,8 +347,8 @@ struct proc {
int p_flag; /* P_* flags. */
u_char p_spare; /* unused */
- char p_stat; /* [s] S* process status. */
- u_char p_runpri; /* [s] Runqueue priority */
+ char p_stat; /* [S] S* process status. */
+ u_char p_runpri; /* [S] Runqueue priority */
u_char p_descfd; /* if not 255, fdesc permits this fd */
pid_t p_tid; /* Thread identifier. */
@@ -360,15 +360,15 @@ struct proc {
/* scheduling */
int p_cpticks; /* Ticks of cpu time. */
- const volatile void *p_wchan; /* [s] Sleep address. */
+ const volatile void *p_wchan; /* [S] Sleep address. */
struct timeout p_sleep_to;/* timeout for tsleep() */
- 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. */
+ 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; /* [s] 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. */
@@ -387,9 +387,9 @@ struct proc {
#define p_startcopy p_sigmask
sigset_t p_sigmask; /* Current signal mask. */
- u_char p_slppri; /* [s] Sleeping priority */
- u_char p_usrpri; /* [s] Priority based on p_estcpu & ps_nice */
- u_int p_estcpu; /* [s] Time averaged val of p_cpticks */
+ u_char p_slppri; /* [S] Sleeping priority */
+ u_char p_usrpri; /* [S] Priority based on p_estcpu & ps_nice */
+ u_int p_estcpu; /* [S] Time averaged val of p_cpticks */
int p_pledge_syscall; /* Cache of current syscall */
struct ucred *p_ucred; /* [o] cached credentials */
Index: sys/timetc.h
===================================================================
RCS file: /cvs/src/sys/sys/timetc.h,v
retrieving revision 1.10
diff -u -p -r1.10 timetc.h
--- sys/timetc.h 26 Oct 2019 21:16:38 -0000 1.10
+++ sys/timetc.h 29 Jun 2020 18:47:32 -0000
@@ -48,8 +48,8 @@ typedef void timecounter_pps_t(struct ti
/*
* Locks used to protect struct members in this file:
* I immutable after initialization
- * t tc_lock
- * w windup_mtx
+ * T tc_lock
+ * W windup_mtx
*/
struct timecounter {
@@ -82,7 +82,7 @@ struct timecounter {
/* Pointer to the timecounter's private parts. */
SLIST_ENTRY(timecounter) tc_next; /* [I] */
/* Pointer to the next timecounter. */
- int64_t tc_freq_adj; /* [tw] */
+ int64_t tc_freq_adj; /* [T,W] */
/* Current frequency adjustment. */
u_int64_t tc_precision; /* [I] */
/* Precision of the counter. Computed in tc_init(). */