Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys Move sysctl routines from init_sysctl.c to kern_descrip....
details: https://anonhg.NetBSD.org/src/rev/e5a2f4b749c4
branches: trunk
changeset: 761463:e5a2f4b749c4
user: pooka <pooka%NetBSD.org@localhost>
date: Fri Jan 28 18:44:44 2011 +0000
description:
Move sysctl routines from init_sysctl.c to kern_descrip.c (for
descriptors) and kern_proc.c (for processes). This makes them
usable in a rump kernel, in case somebody was wondering.
diffstat:
sys/kern/init_main.c | 6 +-
sys/kern/init_sysctl.c | 1233 +----------------------------------------------
sys/kern/kern_descrip.c | 412 +++++++++++++++-
sys/kern/kern_proc.c | 876 +++++++++++++++++++++++++++++++++-
sys/kern/kern_sysctl.c | 22 +-
sys/sys/proc.h | 3 +-
sys/sys/sysctl.h | 10 +-
7 files changed, 1318 insertions(+), 1244 deletions(-)
diffs (truncated from 2844 to 300 lines):
diff -r 65e0e2fbbb72 -r e5a2f4b749c4 sys/kern/init_main.c
--- a/sys/kern/init_main.c Fri Jan 28 17:57:03 2011 +0000
+++ b/sys/kern/init_main.c Fri Jan 28 18:44:44 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: init_main.c,v 1.426 2011/01/18 08:18:43 matt Exp $ */
+/* $NetBSD: init_main.c,v 1.427 2011/01/28 18:44:44 pooka Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -97,7 +97,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.426 2011/01/18 08:18:43 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.427 2011/01/28 18:44:44 pooka Exp $");
#include "opt_ddb.h"
#include "opt_ipsec.h"
@@ -584,6 +584,8 @@
machdep_init();
+ procinit_sysctl();
+
/*
* Create process 1 (init(8)). We do this now, as Unix has
* historically had init be process 1, and changing this would
diff -r 65e0e2fbbb72 -r e5a2f4b749c4 sys/kern/init_sysctl.c
--- a/sys/kern/init_sysctl.c Fri Jan 28 17:57:03 2011 +0000
+++ b/sys/kern/init_sysctl.c Fri Jan 28 18:44:44 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: init_sysctl.c,v 1.176 2011/01/22 20:54:43 christos Exp $ */
+/* $NetBSD: init_sysctl.c,v 1.177 2011/01/28 18:44:44 pooka Exp $ */
/*-
* Copyright (c) 2003, 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: init_sysctl.c,v 1.176 2011/01/22 20:54:43 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: init_sysctl.c,v 1.177 2011/01/28 18:44:44 pooka Exp $");
#include "opt_sysv.h"
#include "opt_compat_netbsd32.h"
@@ -96,10 +96,6 @@
gid_t security_setidcore_group = 0;
mode_t security_setidcore_mode = (S_IRUSR|S_IWUSR);
-/* Initialized in sysctl_init() for now... */
-extern kmutex_t sysctl_file_marker_lock;
-static u_int sysctl_file_marker = 1;
-
static const u_int sysctl_flagmap[] = {
PK_ADVLOCK, P_ADVLOCK,
PK_EXEC, P_EXEC,
@@ -139,13 +135,6 @@
};
-static const u_int sysctl_lwpflagmap[] = {
- LW_SINTR, L_SINTR,
- LW_SYSTEM, L_SYSTEM,
- LW_SA, L_SA, /* WRS ??? */
- 0
-};
-
static const u_int sysctl_lwpprflagmap[] = {
LPR_DETACHED, L_DETACHED,
0
@@ -154,7 +143,6 @@
/*
* try over estimating by 5 procs/lwps
*/
-#define KERN_PROCSLOP (5 * sizeof(struct kinfo_proc))
#define KERN_LWPSLOP (5 * sizeof(struct kinfo_lwp))
static int dcopyout(struct lwp *, const void *, void *, size_t);
@@ -179,7 +167,6 @@
static int sysctl_kern_hostid(SYSCTLFN_PROTO);
static int sysctl_setlen(SYSCTLFN_PROTO);
static int sysctl_kern_clockrate(SYSCTLFN_PROTO);
-static int sysctl_kern_file(SYSCTLFN_PROTO);
static int sysctl_msgbuf(SYSCTLFN_PROTO);
static int sysctl_kern_defcorename(SYSCTLFN_PROTO);
static int sysctl_kern_cptime(SYSCTLFN_PROTO);
@@ -193,20 +180,13 @@
static int sysctl_kern_forkfsleep(SYSCTLFN_PROTO);
static int sysctl_kern_root_partition(SYSCTLFN_PROTO);
static int sysctl_kern_drivers(SYSCTLFN_PROTO);
-static int sysctl_kern_file2(SYSCTLFN_PROTO);
static int sysctl_security_setidcore(SYSCTLFN_PROTO);
static int sysctl_security_setidcorename(SYSCTLFN_PROTO);
static int sysctl_kern_cpid(SYSCTLFN_PROTO);
-static int sysctl_doeproc(SYSCTLFN_PROTO);
-static int sysctl_kern_proc_args(SYSCTLFN_PROTO);
static int sysctl_hw_usermem(SYSCTLFN_PROTO);
static int sysctl_hw_cnmagic(SYSCTLFN_PROTO);
-static u_int sysctl_map_flags(const u_int *, u_int);
-static void fill_kproc2(struct proc *, struct kinfo_proc2 *, bool);
static void fill_lwp(struct lwp *l, struct kinfo_lwp *kl);
-static void fill_file(struct kinfo_file *, const file_t *, const fdfile_t *,
- int, pid_t);
/*
* ********************************************************************
@@ -313,12 +293,6 @@
SYSCTL_DESCR("System vnode table"),
sysctl_kern_vnode, 0, NULL, 0,
CTL_KERN, KERN_VNODE, CTL_EOL);
- sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT,
- CTLTYPE_STRUCT, "file",
- SYSCTL_DESCR("System open file table"),
- sysctl_kern_file, 0, NULL, 0,
- CTL_KERN, KERN_FILE, CTL_EOL);
#ifndef GPROF
sysctl_createv(clog, 0, NULL, NULL,
CTLFLAG_PERMANENT,
@@ -712,12 +686,6 @@
CTL_KERN, KERN_DRIVERS, CTL_EOL);
sysctl_createv(clog, 0, NULL, NULL,
CTLFLAG_PERMANENT,
- CTLTYPE_STRUCT, "file2",
- SYSCTL_DESCR("System open file table"),
- sysctl_kern_file2, 0, NULL, 0,
- CTL_KERN, KERN_FILE2, CTL_EOL);
- sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT,
CTLTYPE_STRUCT, "cp_id",
SYSCTL_DESCR("Mapping of CPU number to CPU id"),
sysctl_kern_cpid, 0, NULL, 0,
@@ -801,52 +769,6 @@
CTL_CREATE, CTL_EOL);
}
-SYSCTL_SETUP(sysctl_kern_proc_setup,
- "sysctl kern.proc/proc2/proc_args subtree setup")
-{
-
- sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT,
- CTLTYPE_NODE, "kern", NULL,
- NULL, 0, NULL, 0,
- CTL_KERN, CTL_EOL);
-
- sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT,
- CTLTYPE_NODE, "proc",
- SYSCTL_DESCR("System-wide process information"),
- sysctl_doeproc, 0, NULL, 0,
- CTL_KERN, KERN_PROC, CTL_EOL);
- sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT,
- CTLTYPE_NODE, "proc2",
- SYSCTL_DESCR("Machine-independent process information"),
- sysctl_doeproc, 0, NULL, 0,
- CTL_KERN, KERN_PROC2, CTL_EOL);
- sysctl_createv(clog, 0, NULL, NULL,
- CTLFLAG_PERMANENT,
- CTLTYPE_NODE, "proc_args",
- SYSCTL_DESCR("Process argument information"),
- sysctl_kern_proc_args, 0, NULL, 0,
- CTL_KERN, KERN_PROC_ARGS, CTL_EOL);
-
- /*
- "nodes" under these:
-
- KERN_PROC_ALL
- KERN_PROC_PID pid
- KERN_PROC_PGRP pgrp
- KERN_PROC_SESSION sess
- KERN_PROC_TTY tty
- KERN_PROC_UID uid
- KERN_PROC_RUID uid
- KERN_PROC_GID gid
- KERN_PROC_RGID gid
-
- all in all, probably not worth the effort...
- */
-}
-
SYSCTL_SETUP(sysctl_hw_setup, "sysctl hw subtree setup")
{
u_int u;
@@ -1217,185 +1139,6 @@
}
/*
- * Expects to be called with proc_lock and sysctl_file_marker_lock locked.
- */
-static void
-sysctl_file_marker_reset(void)
-{
- struct proc *p;
-
- PROCLIST_FOREACH(p, &allproc) {
- struct filedesc *fd = p->p_fd;
- fdtab_t *dt;
- u_int i;
-
- mutex_enter(&fd->fd_lock);
-
- dt = fd->fd_dt;
- for (i = 0; i < dt->dt_nfiles; i++) {
- struct file *fp;
- fdfile_t *ff;
-
- if ((ff = dt->dt_ff[i]) == NULL) {
- continue;
- }
-
- if ((fp = ff->ff_file) == NULL) {
- continue;
- }
-
- fp->f_marker = 0;
- }
-
- mutex_exit(&fd->fd_lock);
- }
-}
-
-/*
- * sysctl helper routine for kern.file pseudo-subtree.
- */
-static int
-sysctl_kern_file(SYSCTLFN_ARGS)
-{
- int error;
- size_t buflen;
- struct file *fp, fbuf;
- char *start, *where;
- struct proc *p;
-
- start = where = oldp;
- buflen = *oldlenp;
-
- if (where == NULL) {
- /*
- * overestimate by 10 files
- */
- *oldlenp = sizeof(filehead) + (nfiles + 10) *
- sizeof(struct file);
- return (0);
- }
-
- /*
- * first dcopyout filehead
- */
- if (buflen < sizeof(filehead)) {
- *oldlenp = 0;
- return (0);
- }
- sysctl_unlock();
- error = dcopyout(l, &filehead, where, sizeof(filehead));
- if (error) {
- sysctl_relock();
- return error;
- }
- buflen -= sizeof(filehead);
- where += sizeof(filehead);
-
- /*
- * followed by an array of file structures
- */
- mutex_enter(&sysctl_file_marker_lock);
- mutex_enter(proc_lock);
- PROCLIST_FOREACH(p, &allproc) {
- struct filedesc *fd;
- fdtab_t *dt;
- u_int i;
-
- if (p->p_stat == SIDL) {
- /* skip embryonic processes */
- continue;
- }
- mutex_enter(p->p_lock);
- error = kauth_authorize_process(l->l_cred,
- KAUTH_PROCESS_CANSEE, p,
- KAUTH_ARG(KAUTH_REQ_PROCESS_CANSEE_OPENFILES),
- NULL, NULL);
- mutex_exit(p->p_lock);
- if (error != 0) {
- /*
- * Don't leak kauth retval if we're silently
- * skipping this entry.
- */
- error = 0;
- continue;
- }
-
- /*
- * Grab a hold on the process.
- */
- if (!rw_tryenter(&p->p_reflock, RW_READER)) {
- continue;
- }
- mutex_exit(proc_lock);
Home |
Main Index |
Thread Index |
Old Index