MCPcopy Create free account
hub / github.com/F-Stack/f-stack / kern___sysctlbyname

Function kern___sysctlbyname

freebsd/kern/kern_sysctl.c:2297–2331  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2295#endif
2296
2297int
2298kern___sysctlbyname(struct thread *td, const char *oname, size_t namelen,
2299 void *old, size_t *oldlenp, void *new, size_t newlen, size_t *retval,
2300 int flags, bool inkernel)
2301{
2302 int oid[CTL_MAXNAME];
2303 char namebuf[16];
2304 char *name;
2305 size_t oidlen;
2306 int error;
2307
2308 if (namelen > MAXPATHLEN || namelen == 0)
2309 return (EINVAL);
2310 name = namebuf;
2311 if (namelen > sizeof(namebuf))
2312 name = malloc(namelen, M_SYSCTL, M_WAITOK);
2313 error = copyin(oname, name, namelen);
2314 if (error != 0)
2315 goto out;
2316
2317 oid[0] = CTL_SYSCTL;
2318 oid[1] = CTL_SYSCTL_NAME2OID;
2319 oidlen = sizeof(oid);
2320 error = kernel_sysctl(td, oid, 2, oid, &oidlen, (void *)name, namelen,
2321 retval, flags);
2322 if (error != 0)
2323 goto out;
2324 error = userland_sysctl(td, oid, *retval / sizeof(int), old, oldlenp,
2325 inkernel, new, newlen, retval, flags);
2326
2327out:
2328 if (namelen > sizeof(namebuf))
2329 free(name, M_SYSCTL);
2330 return (error);
2331}
2332
2333#ifndef _SYS_SYSPROTO_H_
2334struct __sysctlbyname_args {

Callers 1

sys___sysctlbynameFunction · 0.85

Calls 5

mallocFunction · 0.85
kernel_sysctlFunction · 0.85
userland_sysctlFunction · 0.85
freeFunction · 0.70
copyinFunction · 0.50

Tested by

no test coverage detected