svn commit: r290473 - in head/sys: kern sys
Mateusz Guzik
mjg at FreeBSD.org
Sat Nov 7 00:18:16 UTC 2015
Author: mjg
Date: Sat Nov 7 00:18:14 2015
New Revision: 290473
URL: https://svnweb.freebsd.org/changeset/base/290473
Log:
fd: implement kern.proc.nfds sysctl
Intended purpose is to provide an equivalent of OpenBSD's getdtablecount
syscall for the compat library..
Modified:
head/sys/kern/kern_descrip.c
head/sys/sys/sysctl.h
Modified: head/sys/kern/kern_descrip.c
==============================================================================
--- head/sys/kern/kern_descrip.c Fri Nov 6 23:17:00 2015 (r290472)
+++ head/sys/kern/kern_descrip.c Sat Nov 7 00:18:14 2015 (r290473)
@@ -3157,6 +3157,30 @@ filedesc_to_leader_alloc(struct filedesc
return (fdtol);
}
+static int
+sysctl_kern_proc_nfds(SYSCTL_HANDLER_ARGS)
+{
+ struct filedesc *fdp;
+ int i, count, slots;
+
+ if (*(int *)arg1 != 0)
+ return (EINVAL);
+
+ fdp = curproc->p_fd;
+ count = 0;
+ FILEDESC_SLOCK(fdp);
+ slots = NDSLOTS(fdp->fd_lastfile + 1);
+ for (i = 0; i < slots; i++)
+ count += bitcountl(fdp->fd_map[i]);
+ FILEDESC_SUNLOCK(fdp);
+
+ return (SYSCTL_OUT(req, &count, sizeof(count)));
+}
+
+static SYSCTL_NODE(_kern_proc, KERN_PROC_NFDS, nfds,
+ CTLFLAG_RD|CTLFLAG_MPSAFE, sysctl_kern_proc_nfds,
+ "Number of open file descriptors");
+
/*
* Get file structures globally.
*/
Modified: head/sys/sys/sysctl.h
==============================================================================
--- head/sys/sys/sysctl.h Fri Nov 6 23:17:00 2015 (r290472)
+++ head/sys/sys/sysctl.h Sat Nov 7 00:18:14 2015 (r290473)
@@ -703,6 +703,7 @@ TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_e
#define KERN_PROC_OSREL 40 /* osreldate for process binary */
#define KERN_PROC_SIGTRAMP 41 /* signal trampoline location */
#define KERN_PROC_CWD 42 /* process current working directory */
+#define KERN_PROC_NFDS 43 /* number of open file descriptors */
/*
* KERN_IPC identifiers
More information about the svn-src-all
mailing list