-
Notifications
You must be signed in to change notification settings - Fork 19
Allow clock to be configured in Uring.wait #59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow clock to be configured in Uring.wait #59
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the wait API should match the C library. You should be able to add io_uring_prep_timeout
as a separate operation, like the other jobs.
Does that mean we need another version of
AFAIK there is no corresponding |
There shouldn't be any need to change anything about val timeout : 'a t -> [`Clock_mono |`Clock_sys | `Clock_default] -> int64 -> 'a -> 'a job option Then users can submit (and cancel) timeout operations just like any other job. |
@talex5 created a new function |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs a test-case added to tests/main.md
.
@talex5 EDIT: Aargh, just realized changing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me, once the flag(s) are added.
CHANGES: New features: - Add `Uring.timeout` (@bikallem ocaml-multicore/ocaml-uring#59). - Add `Uring.read` and `Uring.write` (@haesbaert ocaml-multicore/ocaml-uring#62). These are simple wrappers for read(2) and write(2). - Add `Uring.unlink` (@talex5 ocaml-multicore/ocaml-uring#65). This uses unlinkat(2), and so can also be used to remove directories. - Add support for uring probes (@talex5 ocaml-multicore/ocaml-uring#70). Allows checking whether a feature is supported by the kernel at runtime. - Rename `peek` to `get_cqe_nonblocking` (@talex5 ocaml-multicore/ocaml-uring#67). The old name was confusing because it does remove the item from the ring. - Update to liburing 2.2 (@talex5 ocaml-multicore/ocaml-uring#56). - Add `Uring.active_ops` (@talex5 ocaml-multicore/ocaml-uring#68). Avoids needing to track the value returned by `submit`, which is important as it is sometimes called automatically. - Add `Uring.iov_max` constant (@talex5 ocaml-multicore/ocaml-uring#76). - Add `Uring.get_debug_stats` (@talex5 ocaml-multicore/ocaml-uring#64). This should make it easier to check that the uring is behaving as expected. Performance: - Introduce a Sketch buffer per Uring (@haesbaert ocaml-multicore/ocaml-uring#63). The main motivation of this change is to avoid having one malloc per packet in readv(2), writev(2) and friends. - Use `submit_and_wait` where appropriate (@haesbaert ocaml-multicore/ocaml-uring#69). - Add a `readv` benchmark (@talex5 ocaml-multicore/ocaml-uring#64). - Avoid unnecessary use of `CAMLparam` in the C stubs (@haesbaert ocaml-multicore/ocaml-uring#61). Bug fixes: - Prevent ring from being used after exit (@talex5 ocaml-multicore/ocaml-uring#78). Build changes: - Remove use of notty for formatting benchmark results (@talex5 ocaml-multicore/ocaml-uring#71). It prevented uring from being tested on OCaml 5. - Use MDX for README (@talex5 ocaml-multicore/ocaml-uring#57). - Convert tests to MDX (@talex5 ocaml-multicore/ocaml-uring#58 ocaml-multicore/ocaml-uring#73). - Use opam-repository syntax for license (@kit-ty-kate ocaml-multicore/ocaml-uring#72). - Remove internal `is_dirty` flag (@talex5 ocaml-multicore/ocaml-uring#77).
This PR allows specifying clocks for timeout (as timeout is relative to a clock) when waiting for
cqe
events; specificallyUring.wait
now accepts clock argument along with thetimeout
value in nanoseconds.Summary:
Clock_mono
,Clock_sys
andClock_default
toUring.wait
Required by ocaml-multicore/eio#249