svn commit: r217271 - stable/8/sys/kern
Matthew D Fleming
mdf at FreeBSD.org
Tue Jan 11 17:31:59 UTC 2011
Author: mdf
Date: Tue Jan 11 17:31:59 2011
New Revision: 217271
URL: http://svn.freebsd.org/changeset/base/217271
Log:
MFC r216058 and r216059:
r216058:
Use the SYSCTL_CHILDREN macro in kern_sysctl.c to help de-obfuscate the
code.
r216059:
Slightly modify the logic in sysctl_find_oid to reduce the indentation.
There should be no functional change.
Modified:
stable/8/sys/kern/kern_sysctl.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
Modified: stable/8/sys/kern/kern_sysctl.c
==============================================================================
--- stable/8/sys/kern/kern_sysctl.c Tue Jan 11 17:29:34 2011 (r217270)
+++ stable/8/sys/kern/kern_sysctl.c Tue Jan 11 17:31:59 2011 (r217271)
@@ -675,7 +675,7 @@ sysctl_sysctl_name(SYSCTL_HANDLER_ARGS)
if (oid->oid_handler)
break;
- lsp2 = (struct sysctl_oid_list *)oid->oid_arg1;
+ lsp2 = SYSCTL_CHILDREN(oid);
break;
}
lsp = lsp2;
@@ -706,7 +706,7 @@ sysctl_sysctl_next_ls(struct sysctl_oid_
if (oidp->oid_handler)
/* We really should call the handler here...*/
return (0);
- lsp = (struct sysctl_oid_list *)oidp->oid_arg1;
+ lsp = SYSCTL_CHILDREN(oidp);
if (!sysctl_sysctl_next_ls(lsp, 0, 0, next+1,
len, level+1, oidpp))
return (0);
@@ -721,7 +721,7 @@ sysctl_sysctl_next_ls(struct sysctl_oid_
return (0);
if (oidp->oid_handler)
return (0);
- lsp = (struct sysctl_oid_list *)oidp->oid_arg1;
+ lsp = SYSCTL_CHILDREN(oidp);
if (!sysctl_sysctl_next_ls(lsp, name+1, namelen-1,
next+1, len, level+1, oidpp))
return (0);
@@ -733,7 +733,7 @@ sysctl_sysctl_next_ls(struct sysctl_oid_
if (oidp->oid_handler)
continue;
- lsp = (struct sysctl_oid_list *)oidp->oid_arg1;
+ lsp = SYSCTL_CHILDREN(oidp);
if (!sysctl_sysctl_next_ls(lsp, name+1, namelen-1, next+1,
len, level+1, oidpp))
return (0);
@@ -811,7 +811,7 @@ name2oid(char *name, int *oid, int *len,
if (oidp->oid_handler)
break;
- lsp = (struct sysctl_oid_list *)oidp->oid_arg1;
+ lsp = SYSCTL_CHILDREN(oidp);
oidp = SLIST_FIRST(lsp);
name = p+1;
for (p = name; *p && *p != '.'; p++)
@@ -1302,37 +1302,39 @@ int
sysctl_find_oid(int *name, u_int namelen, struct sysctl_oid **noid,
int *nindx, struct sysctl_req *req)
{
+ struct sysctl_oid_list *lsp;
struct sysctl_oid *oid;
int indx;
SYSCTL_ASSERT_LOCKED();
- oid = SLIST_FIRST(&sysctl__children);
+ lsp = &sysctl__children;
indx = 0;
- while (oid && indx < CTL_MAXNAME) {
- if (oid->oid_number == name[indx]) {
- indx++;
- if (oid->oid_kind & CTLFLAG_NOLOCK)
- req->lock = REQ_UNLOCKED;
- if ((oid->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
- if (oid->oid_handler != NULL ||
- indx == namelen) {
- *noid = oid;
- if (nindx != NULL)
- *nindx = indx;
- return (0);
- }
- oid = SLIST_FIRST(
- (struct sysctl_oid_list *)oid->oid_arg1);
- } else if (indx == namelen) {
+ while (indx < CTL_MAXNAME) {
+ SLIST_FOREACH(oid, lsp, oid_link) {
+ if (oid->oid_number == name[indx])
+ break;
+ }
+ if (oid == NULL)
+ return (ENOENT);
+
+ indx++;
+ if (oid->oid_kind & CTLFLAG_NOLOCK)
+ req->lock = REQ_UNLOCKED;
+ if ((oid->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
+ if (oid->oid_handler != NULL || indx == namelen) {
*noid = oid;
if (nindx != NULL)
*nindx = indx;
return (0);
- } else {
- return (ENOTDIR);
}
+ lsp = SYSCTL_CHILDREN(oid);
+ } else if (indx == namelen) {
+ *noid = oid;
+ if (nindx != NULL)
+ *nindx = indx;
+ return (0);
} else {
- oid = SLIST_NEXT(oid, oid_link);
+ return (ENOTDIR);
}
}
return (ENOENT);
More information about the svn-src-stable-8
mailing list