From a86a73321c7d2436f0a3baa4616dd7e2a6a54050 Mon Sep 17 00:00:00 2001 From: Eyal Sawady Date: Tue, 07 Dec 2021 11:12:09 +0000 Subject: [PATCH] hare::parse::expr: update match binding syntax And update the rest of the stdlib for the new syntax Signed-off-by: Eyal Sawady --- io_uring/cqe.ha | 8 ++++---- io_uring/queue.ha | 6 +++--- io_uring/register.ha | 24 ++++++++++++------------ io_uring/setup.ha | 16 ++++++++-------- io_uring/uring.ha | 2 +- diff --git a/io_uring/cqe.ha b/io_uring/cqe.ha index b14d21bf89fa818f1992057ffaf91719d754afba..bf34d8bd4a5839047d9d036912ed568cdb815080 100644 --- a/io_uring/cqe.ha +++ b/io_uring/cqe.ha @@ -14,9 +14,9 @@ // Waits until a CQE is available, then returns it. The caller must pass the // returned CQE to [[cqe_seen]] to advance the queue. export fn wait(ring: *io_uring) (*cqe | error) = { match (get_cqe(ring, 0, 1)) { - case err: error => + case let err: error => return err; - case cq: nullable *cqe => + case let cq: nullable *cqe => assert(cq != null); // XXX: Correct? return cq: *cqe; }; @@ -101,9 +101,9 @@ }; match (rt::io_uring_enter(ring.fd, submit, wait, flags: uint, null)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); - case n: uint => + case let n: uint => submit -= n; }; }; diff --git a/io_uring/queue.ha b/io_uring/queue.ha index 19b696a605a2cf530eca9a16b6fbf3d603325b7e..52aed61f477a27b4e35aa164f5864c31cbb0ab42 100644 --- a/io_uring/queue.ha +++ b/io_uring/queue.ha @@ -22,7 +22,7 @@ export fn must_get_sqe(ring: *io_uring) *sqe = { match (get_sqe(ring)) { case null => abort("I/O queue full"); - case sq: *sqe => + case let sq: *sqe => return sq; }; }; @@ -85,9 +85,9 @@ let flags = enter_flags::GETEVENTS; if (needs_enter(ring, &flags) || wait != 0) { match (rt::io_uring_enter(ring.fd, submitted, wait, flags, null)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); - case n: uint => + case let n: uint => return n; }; } else { diff --git a/io_uring/register.ha b/io_uring/register.ha index 52e0c6dcc8dfb63f7c92391db031b7fadf28b04d..0a9d49895c03c5dffd4bfa9157d5c4e93bc487c6 100644 --- a/io_uring/register.ha +++ b/io_uring/register.ha @@ -11,7 +11,7 @@ export fn register_buffers(ring: *io_uring, iov: []rt::iovec) (void | error) = { assert(len(iov) <= types::UINT_MAX); match (rt::io_uring_register(ring.fd, regop::REGISTER_BUFFERS, iov: *[*]rt::iovec, len(iov): uint)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); case int => void; }; @@ -21,7 +21,7 @@ // Unregisters all fixed buffers associated with an [[io_uring]]. export fn unregister_buffers(ring: *io_uring) (void | error) = { match (rt::io_uring_register(ring.fd, regop::UNREGISTER_BUFFERS, null, 0)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); case int => void; }; @@ -34,7 +34,7 @@ export fn register_files(ring: *io_uring, files: []int) (void | error) = { assert(len(files) <= types::UINT_MAX); match (rt::io_uring_register(ring.fd, regop::REGISTER_FILES, files: *[*]int, len(files): uint)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); case int => void; }; @@ -49,7 +49,7 @@ ) (void | error) = { assert(len(updates) <= types::UINT_MAX); match (rt::io_uring_register(ring.fd, regop::REGISTER_FILES_UPDATE, updates: *[*]files_update, len(updates): uint)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); case int => void; }; @@ -59,7 +59,7 @@ // Unregisters all files associated with an [[io_uring]]. export fn unregister_files(ring: *io_uring) (void | error) = { match (rt::io_uring_register(ring.fd, regop::UNREGISTER_FILES, null, 0)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); case int => void; }; @@ -70,7 +70,7 @@ // events. export fn register_eventfd(ring: *io_uring, fd: int) (void | error) = { match (rt::io_uring_register(ring.fd, regop::REGISTER_EVENTFD, &fd, 1)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); case int => void; }; @@ -81,7 +81,7 @@ // asyncronously. export fn register_eventfd_async(ring: *io_uring, fd: int) (void | error) = { match (rt::io_uring_register(ring.fd, regop::REGISTER_EVENTFD_ASYNC, &fd, 1)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); case int => void; }; @@ -91,7 +91,7 @@ // Unregisters the eventfd(2) associated with this [[io_uring]]. export fn unregister_eventfd(ring: *io_uring) (void | error) = { match (rt::io_uring_register(ring.fd, regop::UNREGISTER_EVENTFD, null, 0)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); case int => void; }; @@ -116,7 +116,7 @@ match (rt::io_uring_register(ring.fd, regop::REGISTER_PERSONALITY, null, 0)) { case rt::errno => abort("Unexpected io_uring REGISTER_PERSONALITY error"); - case i: int => + case let i: int => return i; }; }; @@ -126,7 +126,7 @@ // [[register_personality]]. export fn unregister_personality(ring: *io_uring, id: int) (void | error) = { match (rt::io_uring_register(ring.fd, regop::UNREGISTER_PERSONALITY, null, id: uint)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); case int => void; }; @@ -138,7 +138,7 @@ // subject to any configured restrictions. export fn register_enable_rings(ring: *io_uring) (void | error) = { match (rt::io_uring_register(ring.fd, regop::REGISTER_ENABLE_RINGS, null, 0)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); case int => void; }; @@ -152,7 +152,7 @@ export fn register_restrictions(ring: *io_uring, res: []restriction) (void | error) = { assert(len(res) < types::UINT_MAX); match (rt::io_uring_register(ring.fd, regop::REGISTER_RESTRICTIONS, res: *[*]restriction, len(res): uint)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); case int => void; }; diff --git a/io_uring/setup.ha b/io_uring/setup.ha index a60e433e9079e0b31a0057cd879cd7b384252d88..70b36edf909e2d81a1d76ce430eb7322f0de336c 100644 --- a/io_uring/setup.ha +++ b/io_uring/setup.ha @@ -6,9 +6,9 @@ // desired flags, sq_thread_cpu, and sq_thread_idle parameters; the remaining // fields are initialized by the kernel. export fn setup(entries: u32, params: *params) (io_uring | error) = { const fd = match (rt::io_uring_setup(entries, params)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); - case fd: int => + case let fd: int => yield fd; }; @@ -36,9 +36,9 @@ params.sq_off.array + entries * size(u32), rt::PROT_READ | rt::PROT_WRITE, rt::MAP_SHARED | rt::MAP_POPULATE, fd, OFF_SQ_RING)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); - case ptr: *void => + case let ptr: *void => yield ptr; }; @@ -48,9 +48,9 @@ } else match (rt::mmap(null, cq.ring_sz, rt::PROT_READ | rt::PROT_WRITE, rt::MAP_SHARED | rt::MAP_POPULATE, fd, OFF_CQ_RING)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); - case ptr: *void => + case let ptr: *void => yield ptr; }; @@ -67,9 +67,9 @@ params.sq_entries * size(sqe), rt::PROT_READ | rt::PROT_WRITE, rt::MAP_SHARED | rt::MAP_POPULATE, fd, OFF_SQES)) { - case err: rt::errno => + case let err: rt::errno => return errors::errno(err); - case ptr: *void => + case let ptr: *void => yield ptr: *[*]sqe; }; diff --git a/io_uring/uring.ha b/io_uring/uring.ha index f7da7e6e92ef73cf9da3a0bddecb219b5141eff0..fb02fb59d20bed8023ab56252f776d51003d8d06 100644 --- a/io_uring/uring.ha +++ b/io_uring/uring.ha @@ -12,7 +12,7 @@ export fn strerror(err: error) const str = { match (err) { case nobuffers => return "Buffer pool exhausted"; - case err: errors::error => + case let err: errors::error => return errors::strerror(err); }; }; -- 2.48.1