HomeFreeBSD

Make poll() and kqueue() on CloudABI work.

Description

Make poll() and kqueue() on CloudABI work.

This change implements two functions, cloudabi64_kevent_copyin() and
cloudabi64_kevent_copyout(), that convert CloudABI structures to
FreeBSD's struct kevent. CloudABI uses two structures: subscription_t
and event_t. The former is used for input, whereas the latter is used
for output. Unlike struct kevent, fields aren't overloaded for multiple
purposes or for separate event types.

For poll() we call into the newly introduced kern_kevent_anonymous()
function that allows us to poll without a file descriptor. This function
is not only used by poll(), but also by functions such as
sleep() and clock_nanosleep().

Reviewed by: jmg
Obtained from: https://github.com/NuxiNL/freebsd
Differential Revision: https://reviews.freebsd.org/D3308

Details

Provenance
edAuthored on
Reviewer
jmg
Differential Revision
D3308: Make poll() and kqueue() on CloudABI work.
Parents
rS286653: Use bus_alloc_resource_any(), rather than bus_alloc_resource()
Branches
Unknown
Tags
Unknown