Sang Woo Kim commented: 
https://gitlab.rtems.org/rtems/pkg/rtems-libbsd/-/work_items/39#note_155673


`sys_pipe.c` is compiled in with a working `pipe_poll()` and `pipe_kqfilter()`, 
and `kern_pipe()` is exported, but no POSIX entry point references it, so the 
linker keeps the IMFS FIFO. That is the `POLLHUP`, and the `EINVAL` from 
`kevent` `EV_ADD` on the same descriptor.

Missing is `pipe()`/`pipe2()` in `rtemsbsd/rtems/rtems-bsd-syscall-api.c`: 
allocate both libio descriptors, call `kern_pipe()`, install. On `7-freebsd-14` 
and `6-freebsd-14` two `chgpipecnt()` calls left on the shared path in 
`sys_pipe.c` also have to go, since `kern_resource.c` keeps `chglimit()` under 
`#ifndef __rtems__`.

It reaches past pipes: libevent's poll backend uses a pipe or a socketpair as 
its own notify descriptor, so `POLLERR` on it makes the backend treat itself as 
permanently ready and spin — EPICS pvxs wedges before `iocInit` at 94 % host 
CPU, and reaches `iocRun` with these entry points in place.

[7-freebsd-14](https://github.com/physwkim/rtems-libbsd/commit/0198e7f05f55d1b9ca55b847c95bd6b223b58b4c)
 · 
[6-freebsd-14](https://github.com/physwkim/rtems-libbsd/commit/34dce963c8a6350b13341f389ef10f046a9c9d0c)
 · 
[6-freebsd-12](https://github.com/physwkim/rtems-libbsd/commit/97fcebdd47347a957c272f6c97644caf90e8b4fb)

-- 
View it on GitLab: 
https://gitlab.rtems.org/rtems/pkg/rtems-libbsd/-/work_items/39#note_155673
You're receiving this email because of your account on gitlab.rtems.org. 
Unsubscribe from this thread: 
https://gitlab.rtems.org/-/sent_notifications/4-26edi9kfa3ioq18yb3xc0ai8v-k/unsubscribe
 | Manage all notifications: https://gitlab.rtems.org/-/profile/notifications | 
Help: https://gitlab.rtems.org/help


_______________________________________________
bugs mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/bugs

Reply via email to