Hello Chris,
sorry, this slipped through may review list.
On 02/09/2021 04:43, Chris Johns wrote:
@@ -1232,9 +993,6 @@ osendmsg(struct thread *td, struct osendmsg_args *uap)
#endif
#endif /* __rtems__ */
-#ifdef __rtems__
-static
-#endif /* __rtems__ */
int
sys_sendmsg(struct thread *td, struct sendmsg_args *uap)
{
@@ -1257,35 +1015,7 @@ sys_sendmsg(struct thread *td, struct sendmsg_args *uap)
free(iov, M_IOV);
return (error);
}
-#ifdef __rtems__
-ssize_t
-sendmsg(int socket, const struct msghdr *message, int flags)
-{
- struct thread *td = rtems_bsd_get_curthread_or_null();
- struct sendmsg_args ua = {
- .s = socket,
- .msg = message,
- .flags = flags
- };
- int error;
-
- if (td != NULL) {
- error = sys_sendmsg(td, &ua);
- } else {
- error = ENOMEM;
- }
-
- if (error == 0) {
- return td->td_retval[0];
- } else {
- rtems_set_errno_and_return_minus_one(error);
- }
-}
-#endif /* __rtems__ */
Why did you move all these system call implementations for RTEMS into a
separate file? The sys_sendmsg() was a static function so the compiler
was able to optimize the use of struct sendmsg_args away and there was
no function call overhead. In the successful case the return value was
determined by td->td_retval[0]. I don't think this now the case?
ssize_t
sendmsg(int socket, const struct msghdr *message, int flags)
{
struct thread *td = rtems_bsd_get_curthread_or_null();
struct sendmsg_args ua;
int ffd;
int error;
if (RTEMS_BSD_SYSCALL_TRACE) {
printf("bsd: sys: sendmsg: %d\n", socket);
}
if (td == NULL) {
return rtems_bsd_error_to_status_and_errno(ENOMEM);
}
ffd = rtems_bsd_libio_iop_hold(socket, NULL);
if (ffd < 0) {
return rtems_bsd_error_to_status_and_errno(EBADF);
}
ua.s = ffd;
ua.msg = message;
ua.flags = flags;
error = sys_sendmsg(td, &ua);
rtems_bsd_libio_iop_drop(socket);
return rtems_bsd_error_to_status_and_errno(error);
}
Unfortunately syscalls01 only tests error conditions and not a good case.
It seems that the commit is not present in the master branch. This means
all the work will be lost when we update to a newer FreeBSD baseline.
--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax: +49-89-18 94 741 - 08
Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel