X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fio%2Fbenchmarks%2Frun-loop.c;h=b0e6b02c804fec579ed2d6019b3d266f993aeb7e;hp=a2898e13e255f6b76e647df1d10aa603a1dfac6e;hb=57d9d1be33905691ec756b14b066181ca6850ced;hpb=737705f0c2ec60ea5b51ca55299488d86db37b5d diff --git a/ccan/io/benchmarks/run-loop.c b/ccan/io/benchmarks/run-loop.c index a2898e13..b0e6b02c 100644 --- a/ccan/io/benchmarks/run-loop.c +++ b/ccan/io/benchmarks/run-loop.c @@ -16,23 +16,8 @@ struct buffer { char buf[32]; }; -static struct io_plan poke_writer(struct io_conn *conn, struct buffer *buf); static struct io_plan poke_reader(struct io_conn *conn, struct buffer *buf); -static struct io_plan do_read(struct io_conn *conn, struct buffer *buf) -{ - assert(conn == buf->reader); - - return io_read(conn, &buf->buf, sizeof(buf->buf), poke_writer, buf); -} - -static struct io_plan do_write(struct io_conn *conn, struct buffer *buf) -{ - assert(conn == buf->writer); - - return io_write(conn, &buf->buf, sizeof(buf->buf), poke_reader, buf); -} - static struct io_plan poke_writer(struct io_conn *conn, struct buffer *buf) { assert(conn == buf->reader); @@ -41,31 +26,25 @@ static struct io_plan poke_writer(struct io_conn *conn, struct buffer *buf) return io_close(conn, NULL); /* You write. */ - io_wake(buf->writer, do_write, buf); + io_wake(buf->writer, + io_write(&buf->buf, sizeof(buf->buf), poke_reader, buf)); /* I'll wait until you wake me. */ - return io_idle(conn); + return io_idle(); } static struct io_plan poke_reader(struct io_conn *conn, struct buffer *buf) { assert(conn == buf->writer); /* You read. */ - io_wake(buf->reader, do_read, buf); + io_wake(buf->reader, + io_read(&buf->buf, sizeof(buf->buf), poke_writer, buf)); if (++buf->iters == NUM_ITERS) return io_close(conn, NULL); /* I'll wait until you tell me to write. */ - return io_idle(conn); -} - -static struct io_plan reader(struct io_conn *conn, struct buffer *buf) -{ - assert(conn == buf->reader); - - /* Wait for writer to tell us to read. */ - return io_idle(conn); + return io_idle(); } int main(void) @@ -87,10 +66,14 @@ int main(void) memset(buf[i].buf, i, sizeof(buf[i].buf)); sprintf(buf[i].buf, "%i-%i", i, i); - buf[i].reader = io_new_conn(last_read, reader, NULL, &buf[i]); + buf[i].reader = io_new_conn(last_read, io_idle(), NULL, NULL); if (!buf[i].reader) err(1, "Creating reader %i", i); - buf[i].writer = io_new_conn(fds[1], do_write, NULL, &buf[i]); + buf[i].writer = io_new_conn(fds[1], + io_write(&buf[i].buf, + sizeof(buf[i].buf), + poke_reader, &buf[i]), + NULL, NULL); if (!buf[i].writer) err(1, "Creating writer %i", i); last_read = fds[0]; @@ -100,10 +83,13 @@ int main(void) i = 0; buf[i].iters = 0; sprintf(buf[i].buf, "%i-%i", i, i); - buf[i].reader = io_new_conn(last_read, reader, NULL, &buf[i]); + buf[i].reader = io_new_conn(last_read, io_idle(), NULL, NULL); if (!buf[i].reader) err(1, "Creating reader %i", i); - buf[i].writer = io_new_conn(last_write, do_write, NULL, &buf[i]); + buf[i].writer = io_new_conn(last_write, io_write(&buf[i].buf, + sizeof(buf[i].buf), + poke_reader, &buf[i]), + NULL, NULL); if (!buf[i].writer) err(1, "Creating writer %i", i);