Module Name:    src
Committed By:   ad
Date:           Tue Apr 21 21:46:07 UTC 2020

Modified Files:
        src/sys/sys: filedesc.h

Log Message:
- Give cwdi_lock its own cache line, for multithreaded processes.
- Comments.


To generate a diff of this commit:
cvs rdiff -u -r1.67 -r1.68 src/sys/sys/filedesc.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/sys/filedesc.h
diff -u src/sys/sys/filedesc.h:1.67 src/sys/sys/filedesc.h:1.68
--- src/sys/sys/filedesc.h:1.67	Tue Apr 21 21:42:47 2020
+++ src/sys/sys/filedesc.h	Tue Apr 21 21:46:07 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: filedesc.h,v 1.67 2020/04/21 21:42:47 ad Exp $	*/
+/*	$NetBSD: filedesc.h,v 1.68 2020/04/21 21:46:07 ad Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -164,13 +164,21 @@ typedef struct filedesc {
 	uint32_t	fd_dlomap[NDENTRIES];
 } filedesc_t;
 
+/*
+ * Working directory, root and umask information.  Serialization:
+ *
+ * a	atomic operations
+ * l	cwdi_lock
+ */
 typedef struct cwdinfo {
-	struct vnode	*cwdi_cdir;	/* current directory */
-	struct vnode	*cwdi_rdir;	/* root directory */
-	struct vnode	*cwdi_edir;	/* emulation root (if known) */
-	krwlock_t	cwdi_lock;	/* lock on entire struct */
-	u_int		cwdi_cmask;	/* mask for file creation */
-	u_int		cwdi_refcnt;	/* reference count */
+	struct vnode	*cwdi_cdir;	/* l: current directory */
+	struct vnode	*cwdi_rdir;	/* l: root directory */
+	struct vnode	*cwdi_edir;	/* l: emulation root (if known) */
+	u_int		cwdi_cmask;	/* a: mask for file creation */
+	u_int		cwdi_refcnt;	/* a: reference count */
+
+	krwlock_t	cwdi_lock	/* :: lock on struct */
+	    __aligned(COHERENCY_UNIT);	/* -> gets own cache line */
 } cwdinfo_t;
 
 #ifdef _KERNEL

Reply via email to