tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
fcntl(F_GETPATH) support
Comments?
christos
Index: kern/sys_descrip.c
===================================================================
RCS file: /cvsroot/src/sys/kern/sys_descrip.c,v
retrieving revision 1.34
diff -u -p -u -r1.34 sys_descrip.c
--- kern/sys_descrip.c 26 Aug 2019 10:19:08 -0000 1.34
+++ kern/sys_descrip.c 14 Sep 2019 21:33:29 -0000
@@ -315,6 +312,28 @@ do_fcntl_lock(int fd, int cmd, struct fl
return error;
}
+static int
+do_fcntl_getpath(struct lwp *l, file_t *fp, char *upath)
+{
+ char *kpath;
+ int error;
+
+ if (fp->f_type != DTYPE_VNODE)
+ return EOPNOTSUPP;
+
+ kpath = PNBUF_GET();
+
+ error = vnode_to_path(kpath, MAXPATHLEN, fp->f_vnode, l, l->l_proc);
+ if (error)
+ goto out;
+
+ error = copyoutstr(kpath, upath, MAXPATHLEN, NULL);
+out:
+ PNBUF_PUT(kpath);
+
+ return error;
+}
+
/*
* The file control system call.
*/
@@ -463,6 +482,10 @@ sys_fcntl(struct lwp *l, const struct sy
error = (*fp->f_ops->fo_ioctl)(fp, FIOSETOWN, &tmp);
break;
+ case F_GETPATH:
+ error = do_fcntl_getpath(l, fp, SCARG(uap, arg));
+ break;
+
default:
error = EINVAL;
}
Index: sys/fcntl.h
===================================================================
RCS file: /cvsroot/src/sys/sys/fcntl.h,v
retrieving revision 1.50
diff -u -p -u -r1.50 fcntl.h
--- sys/fcntl.h 20 Feb 2018 18:20:05 -0000 1.50
+++ sys/fcntl.h 14 Sep 2019 21:33:29 -0000
@@ -193,6 +195,7 @@
#define F_DUPFD_CLOEXEC 12 /* close on exec duplicated fd */
#define F_GETNOSIGPIPE 13 /* get SIGPIPE disposition */
#define F_SETNOSIGPIPE 14 /* set SIGPIPE disposition */
+#define F_GETPATH 15 /* get pathname assosiated with file */
#endif
/* file descriptor flags (F_GETFD, F_SETFD) */
Home |
Main Index |
Thread Index |
Old Index