Collecting all system calls in a single translation unit is not good due to the
library initialization through linker sets.

Update #4475.
---
 freebsd/sys/net/route.c                        | 18 ++++++++++++++++++
 freebsd/sys/sys/sysproto.h                     |  2 --
 .../machine/rtems-bsd-kernel-namespace.h       |  1 -
 rtemsbsd/rtems/rtems-bsd-syscall-api.c         | 14 --------------
 4 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/freebsd/sys/net/route.c b/freebsd/sys/net/route.c
index 2e9883a1..adbf91bd 100644
--- a/freebsd/sys/net/route.c
+++ b/freebsd/sys/net/route.c
@@ -407,6 +407,9 @@ struct setfib_args {
        int     fibnum;
 };
 #endif
+#ifdef __rtems__
+static
+#endif /* __rtems__ */
 int
 sys_setfib(struct thread *td, struct setfib_args *uap)
 {
@@ -420,6 +423,20 @@ sys_setfib(struct thread *td, struct setfib_args *uap)
 #endif /* __rtems__ */
        return (0);
 }
+#ifdef __rtems__
+int
+setfib(int fibnum)
+{
+       struct setfib_args ua = {
+               .fibnum = fibnum
+       };
+       int error;
+
+       error = sys_setfib(NULL, &ua);
+
+       return rtems_bsd_error_to_status_and_errno(error);
+}
+#endif /* __rtems__ */
 
 /*
  * Packet routing routines.
@@ -2285,3 +2302,4 @@ rt_newaddrmsg_fib(int cmd, struct ifaddr *ifa, int error, 
struct rtentry *rt,
                rt_addrmsg(cmd, ifa, fibnum);
        }
 }
+
diff --git a/freebsd/sys/sys/sysproto.h b/freebsd/sys/sys/sysproto.h
index a1ab7e44..1c1891de 100644
--- a/freebsd/sys/sys/sysproto.h
+++ b/freebsd/sys/sys/sysproto.h
@@ -2027,9 +2027,7 @@ int       sys_rtprio(struct thread *, struct rtprio_args 
*);
 int    sys_semsys(struct thread *, struct semsys_args *);
 int    sys_msgsys(struct thread *, struct msgsys_args *);
 int    sys_shmsys(struct thread *, struct shmsys_args *);
-#endif /* __rtems__ */
 int    sys_setfib(struct thread *, struct setfib_args *);
-#ifndef __rtems__
 int    sys_ntp_adjtime(struct thread *, struct ntp_adjtime_args *);
 int    sys_setgid(struct thread *, struct setgid_args *);
 int    sys_setegid(struct thread *, struct setegid_args *);
diff --git a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h 
b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h
index 85f66912..a83334b5 100644
--- a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h
+++ b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h
@@ -5872,7 +5872,6 @@
 #define        sys_select _bsd_sys_select
 #define        sys_sendmsg _bsd_sys_sendmsg
 #define        sys_sendto _bsd_sys_sendto
-#define        sys_setfib _bsd_sys_setfib
 #define        sys_setsockopt _bsd_sys_setsockopt
 #define        sys_shutdown _bsd_sys_shutdown
 #define        sys_socket _bsd_sys_socket
diff --git a/rtemsbsd/rtems/rtems-bsd-syscall-api.c 
b/rtemsbsd/rtems/rtems-bsd-syscall-api.c
index 76fc8ad7..1f659112 100644
--- a/rtemsbsd/rtems/rtems-bsd-syscall-api.c
+++ b/rtemsbsd/rtems/rtems-bsd-syscall-api.c
@@ -644,20 +644,6 @@ sendmsg(int socket, const struct msghdr *message, int 
flags)
        return rtems_bsd_error_to_status_and_errno(error);
 }
 
-int
-setfib(int fibnum)
-{
-       struct thread *td = rtems_bsd_get_curthread_or_null();
-       int error;
-       if (td != NULL) {
-               struct setfib_args ua = { .fibnum = fibnum };
-               error = sys_setfib(td, &ua);
-       } else {
-               error = ENOMEM;
-       }
-       return rtems_bsd_error_to_status_and_errno(error);
-}
-
 int
 setsockopt(int socket, int level, int option_name, const void *option_value,
     socklen_t option_len)
-- 
2.35.3

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to