Author: mjg
Date: Sat Aug  1 06:33:38 2020
New Revision: 363754
URL: https://svnweb.freebsd.org/changeset/base/363754

Log:
  vfs: inline NDINIT_ALL
  
  The routine takes more than 6 arguments, which on amd64 means some of
  them have to be passed through the stack.

Modified:
  head/sys/kern/vfs_lookup.c
  head/sys/sys/namei.h

Modified: head/sys/kern/vfs_lookup.c
==============================================================================
--- head/sys/kern/vfs_lookup.c  Sat Aug  1 06:33:11 2020        (r363753)
+++ head/sys/kern/vfs_lookup.c  Sat Aug  1 06:33:38 2020        (r363754)
@@ -1365,25 +1365,6 @@ bad:
        return (error);
 }
 
-void
-NDINIT_ALL(struct nameidata *ndp, u_long op, u_long flags, enum uio_seg segflg,
-    const char *namep, int dirfd, struct vnode *startdir, cap_rights_t 
*rightsp,
-    struct thread *td)
-{
-
-       MPASS(rightsp != NULL);
-       ndp->ni_cnd.cn_nameiop = op;
-       ndp->ni_cnd.cn_flags = flags;
-       ndp->ni_segflg = segflg;
-       ndp->ni_dirp = namep;
-       ndp->ni_dirfd = dirfd;
-       ndp->ni_startdir = startdir;
-       ndp->ni_resflags = 0;
-       filecaps_init(&ndp->ni_filecaps);
-       ndp->ni_cnd.cn_thread = td;
-       ndp->ni_rightsneeded = rightsp;
-}
-
 /*
  * Free data allocated by namei(); see namei(9) for details.
  */

Modified: head/sys/sys/namei.h
==============================================================================
--- head/sys/sys/namei.h        Sat Aug  1 06:33:11 2020        (r363753)
+++ head/sys/sys/namei.h        Sat Aug  1 06:33:38 2020        (r363754)
@@ -196,9 +196,22 @@ int        cache_fplookup(struct nameidata *ndp, enum 
cache_f
 #define        NDINIT_ATVP(ndp, op, flags, segflg, namep, vp, td)              
\
        NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, vp, &cap_no_rights, 
td)
 
-void NDINIT_ALL(struct nameidata *ndp, u_long op, u_long flags,
-    enum uio_seg segflg, const char *namep, int dirfd, struct vnode *startdir,
-    cap_rights_t *rightsp, struct thread *td);
+#define NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, startdir, rightsp, 
td)        \
+do {                                                                           
\
+       struct nameidata *_ndp = (ndp);                                         
\
+       cap_rights_t *_rightsp = (rightsp);                                     
\
+       MPASS(_rightsp != NULL);                                                
\
+       _ndp->ni_cnd.cn_nameiop = op;                                           
\
+       _ndp->ni_cnd.cn_flags = flags;                                          
\
+       _ndp->ni_segflg = segflg;                                               
\
+       _ndp->ni_dirp = namep;                                                  
\
+       _ndp->ni_dirfd = dirfd;                                                 
\
+       _ndp->ni_startdir = startdir;                                           
\
+       _ndp->ni_resflags = 0;                                                  
\
+       filecaps_init(&_ndp->ni_filecaps);                                      
\
+       _ndp->ni_cnd.cn_thread = td;                                            
\
+       _ndp->ni_rightsneeded = _rightsp;                                       
\
+} while (0)
 
 #define NDF_NO_DVP_RELE                0x00000001
 #define NDF_NO_DVP_UNLOCK      0x00000002
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to