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