[libbsd 05/22] Remove duplicate sysctl(), etc. definitions
Sebastian Huber
sebastian.huber at embedded-brains.de
Fri Jun 24 06:33:33 UTC 2022
Collecting all system calls in a single translation unit is not good due to the
library initialization through linker sets.
Update #4475.
---
freebsd/sys/kern/kern_sysctl.c | 4 ++
freebsd/sys/sys/sysctl.h | 8 ++++
rtemsbsd/rtems/rtems-bsd-syscall-api.c | 64 --------------------------
3 files changed, 12 insertions(+), 64 deletions(-)
diff --git a/freebsd/sys/kern/kern_sysctl.c b/freebsd/sys/kern/kern_sysctl.c
index 71cbd2d8..f529704a 100644
--- a/freebsd/sys/kern/kern_sysctl.c
+++ b/freebsd/sys/kern/kern_sysctl.c
@@ -1773,7 +1773,11 @@ sysctl_new_kernel(struct sysctl_req *req, void *p, size_t l)
int
kernel_sysctl(struct thread *td, int *name, u_int namelen, void *old,
+#ifndef __rtems__
size_t *oldlenp, void *new, size_t newlen, size_t *retval, int flags)
+#else /* __rtems__ */
+ size_t *oldlenp, const void *new, size_t newlen, size_t *retval, int flags)
+#endif /* __rtems__ */
{
int error = 0;
struct sysctl_req req;
diff --git a/freebsd/sys/sys/sysctl.h b/freebsd/sys/sys/sysctl.h
index fa9779f3..c21f19d3 100644
--- a/freebsd/sys/sys/sysctl.h
+++ b/freebsd/sys/sys/sysctl.h
@@ -1129,10 +1129,18 @@ int sysctl_ctx_entry_del(struct sysctl_ctx_list *clist,
struct sysctl_oid *oidp);
int kernel_sysctl(struct thread *td, int *name, u_int namelen, void *old,
+#ifndef __rtems__
size_t *oldlenp, void *new, size_t newlen, size_t *retval,
+#else /* __rtems__ */
+ size_t *oldlenp, const void *newp, size_t newlen, size_t *retval,
+#endif /* __rtems__ */
int flags);
int kernel_sysctlbyname(struct thread *td, char *name, void *old,
+#ifndef __rtems__
size_t *oldlenp, void *new, size_t newlen, size_t *retval,
+#else /* __rtems__ */
+ size_t *oldlenp, const void *newp, size_t newlen, size_t *retval,
+#endif /* __rtems__ */
int flags);
#ifndef __rtems__
int userland_sysctl(struct thread *td, int *name, u_int namelen, void *old,
diff --git a/rtemsbsd/rtems/rtems-bsd-syscall-api.c b/rtemsbsd/rtems/rtems-bsd-syscall-api.c
index 1f659112..5c45d88a 100644
--- a/rtemsbsd/rtems/rtems-bsd-syscall-api.c
+++ b/rtemsbsd/rtems/rtems-bsd-syscall-api.c
@@ -4,8 +4,6 @@
* @ingroup rtems_bsd_rtems
*
* @brief TODO.
- *
- * File origin from FreeBSD 'lib/libc/gen/sysctlnametomib.c'.
*/
/*
@@ -794,68 +792,6 @@ out:
return rtems_bsd_error_to_status_and_errno(error);
}
-int
-sysctl(const int *name, u_int namelen, void *oldp, size_t *oldlenp,
- const void *newp, size_t newlen)
-{
- int error = EINVAL;
- if (namelen <= CTL_MAXNAME) {
- int namedup[CTL_MAXNAME];
- memcpy(namedup, name, namelen * sizeof(*name));
- error = kernel_sysctl(NULL, namedup, namelen, oldp, oldlenp,
- RTEMS_DECONST(void *, newp), newlen, oldlenp, 0);
- }
- return rtems_bsd_error_to_status_and_errno(error);
-}
-
-/*
- * File origin from FreeBSD 'lib/libc/gen/sysctlbyname.c'.
- *
- * ----------------------------------------------------------------------------
- * "THE BEER-WARE LICENSE" (Revision 42):
- * <phk at FreeBSD.org> wrote this file. As long as you retain this notice you
- * can do whatever you want with this stuff. If we meet some day, and you think
- * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
- * ----------------------------------------------------------------------------
- *
- */
-int
-sysctlbyname(const char *name, void *oldp, size_t *oldlenp, const void *newp,
- size_t newlen)
-{
- int real_oid[CTL_MAXNAME + 2];
- int error;
- size_t oidlen;
- oidlen = sizeof(real_oid) / sizeof(int);
- error = sysctlnametomib(name, real_oid, &oidlen);
- if (error < 0)
- return (error);
- error = sysctl(real_oid, oidlen, oldp, oldlenp, newp, newlen);
- return rtems_bsd_error_to_status_and_errno(error);
-}
-
-/*
- * File origin from FreeBSD 'lib/libc/gen/sysctlnametomib.c'.
- *
- * This function uses a presently undocumented interface to the kernel
- * to walk the tree and get the type so it can print the value.
- * This interface is under work and consideration, and should probably
- * be killed with a big axe by the first person who can find the time.
- * (be aware though, that the proper interface isn't as obvious as it
- * may seem, there are various conflicting requirements.
- */
-int
-sysctlnametomib(const char *name, int *mibp, size_t *sizep)
-{
- int oid[2];
- int error;
- oid[0] = 0;
- oid[1] = 3;
- *sizep *= sizeof(int);
- error = sysctl(oid, 2, mibp, sizep, name, strlen(name));
- *sizep /= sizeof(int);
- return (error);
-}
static int
rtems_bsd_sysgen_open_error(
--
2.35.3
More information about the devel
mailing list