From f75616019cb37a9890e38f579598b283ee8a7dc2 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Wed, 16 May 2012 11:56:27 -0700 Subject: [PATCH] refresh --- meta | 7 +-- patches/refresh-temp | 125 --------------------------------------- patches/rstream-spinpoll | 119 ++++++++++++++++++++++++++++++++++++- 3 files changed, 120 insertions(+), 131 deletions(-) delete mode 100644 patches/refresh-temp diff --git a/meta b/meta index f1fd629e..d5cc7f51 100644 --- a/meta +++ b/meta @@ -1,13 +1,12 @@ Version: 1 -Previous: f77778a3c9588e59833243dab4cce61b227d8b2a -Head: 391de150082d1c7bcd36e24484258b51b2462504 +Previous: 74515c7284c913723122d1326d19bc6b1b4aa145 +Head: 58bbcd14e382aefddb02772cd116d5903e01ecb4 Applied: rs-locking: ec6a8efe211b0dc98548443c2e0d67e2c355351f reuseaddr: 5ce7d9c48d082fd1959918e9134f4bdd85c402d9 rstream-delay: 8f0437ec677c4752126de8667e093667dd681d56 rstream-async-opt: 0ee1dfc9ad50f07fd3708ebb04cb92e0fb2f41d5 - rstream-spinpoll: 1c469eecaadfb6365366dcce29ef2a2d76197cd7 - refresh-temp: 391de150082d1c7bcd36e24484258b51b2462504 + rstream-spinpoll: 58bbcd14e382aefddb02772cd116d5903e01ecb4 Unapplied: comp_locks: b89aab130b4619806557e11e6b9c10964f00743f preload: 5dfe7abc07064485c5100e04e5412279244c2bc3 diff --git a/patches/refresh-temp b/patches/refresh-temp deleted file mode 100644 index 7224398b..00000000 --- a/patches/refresh-temp +++ /dev/null @@ -1,125 +0,0 @@ -Bottom: fb3f150e6146757e6bdb884182c4b19457bd6b6b -Top: ed3c9123d122743be28892d7fce45407ab240329 -Author: Sean Hefty -Date: 2012-05-16 11:56:27 -0700 - -Refresh of rstream-spinpoll - ---- - -diff --git a/examples/rstream.c b/examples/rstream.c -index decb204..b7c33f6 100644 ---- a/examples/rstream.c -+++ b/examples/rstream.c -@@ -55,6 +55,7 @@ static int test_size[] = { - - static int use_rs = 1; - static int use_async; -+static int poll_timeout = -1; - static int verify; - static int flags = MSG_DONTWAIT; - static int no_delay = 1; -@@ -191,6 +192,17 @@ static int verify_buf(void *buf, int size) - return 0; - } - -+static int do_poll(struct pollfd *fds) -+{ -+ int ret; -+ -+ do { -+ ret = rs_poll(&fds, 1, poll_timeout); -+ } while (ret < 0 && (errno == EAGAIN || errno == EWOULDBLOCK)); -+ -+ return ret; -+} -+ - static int send_xfer(int rs, int size) - { - struct pollfd fds; -@@ -206,7 +218,7 @@ static int send_xfer(int rs, int size) - - for (offset = 0; offset < size; ) { - if (use_async) { -- ret = rs_poll(&fds, 1, -1); -+ ret = do_poll(&fds); - if (ret != 1) - return ret; - } -@@ -235,7 +247,7 @@ static int recv_xfer(int rs, int size) - - for (offset = 0; offset < size; ) { - if (use_async) { -- ret = rs_poll(&fds, 1, -1); -+ ret = do_poll(&fds); - if (ret != 1) - return ret; - } -@@ -380,7 +392,7 @@ static int server_connect(void) - fds.fd = lrs; - fds.events = POLLIN; - -- ret = rs_poll(&fds, 1, -1); -+ ret = do_poll(&fds); - if (ret != 1) { - perror("rpoll"); - goto close; -@@ -424,21 +436,26 @@ static int client_connect(void) - ret = rs_connect(rs, res->ai_addr, res->ai_addrlen); - if (ret && (errno != EINPROGRESS)) { - perror("rconnect"); -- rs_close(rs); -- rs = ret; -+ goto err; - } - - if (errno == EINPROGRESS) { - fds.fd = rs; - fds.events = POLLOUT; -- do { -- ret = rs_poll(&fds, 1, -1); -- } while (!ret); -+ ret = do_poll(&fds); -+ if (ret != 1) { -+ perror("rpoll"); -+ goto err; -+ } - } - - free: - freeaddrinfo(res); - return rs; -+err: -+ freeaddrinfo(res); -+ rs_close(rs); -+ return -1; - } - - static int run(void) -@@ -494,6 +511,9 @@ static int set_test_opt(char *optarg) - flags |= MSG_DONTWAIT; - no_delay = 1; - break; -+ case 'p': -+ poll_timeout = 0; -+ break; - case 'v': - verify = 1; - break; -@@ -511,6 +531,8 @@ static int set_test_opt(char *optarg) - } else if (!strncasecmp("nonblock", optarg, 8)) { - flags |= MSG_DONTWAIT; - no_delay = 1; -+ } else if (!strncasecmp("poll", optarg, 4)) { -+ poll_timeout = 0; - } else if (!strncasecmp("verify", optarg, 6)) { - verify = 1; - } else { -@@ -564,6 +586,7 @@ int main(int argc, char **argv) - printf("\t a|async - asynchronous operation (use poll)\n"); - printf("\t b|blocking - use blocking calls\n"); - printf("\t n|nonblocking - use nonblocking calls\n"); -+ printf("\t p|poll - poll on asynchronous operations\n") - printf("\t v|verify - verify data\n"); - exit(1); - } diff --git a/patches/rstream-spinpoll b/patches/rstream-spinpoll index d71abc6b..50ae7edc 100644 --- a/patches/rstream-spinpoll +++ b/patches/rstream-spinpoll @@ -1,5 +1,5 @@ Bottom: fb3f150e6146757e6bdb884182c4b19457bd6b6b -Top: fb3f150e6146757e6bdb884182c4b19457bd6b6b +Top: ed3c9123d122743be28892d7fce45407ab240329 Author: Sean Hefty Date: 2012-05-16 11:26:33 -0700 @@ -13,4 +13,119 @@ Signed-off-by: Sean Hefty --- - +diff --git a/examples/rstream.c b/examples/rstream.c +index decb204..b7c33f6 100644 +--- a/examples/rstream.c ++++ b/examples/rstream.c +@@ -55,6 +55,7 @@ static int test_size[] = { + + static int use_rs = 1; + static int use_async; ++static int poll_timeout = -1; + static int verify; + static int flags = MSG_DONTWAIT; + static int no_delay = 1; +@@ -191,6 +192,17 @@ static int verify_buf(void *buf, int size) + return 0; + } + ++static int do_poll(struct pollfd *fds) ++{ ++ int ret; ++ ++ do { ++ ret = rs_poll(&fds, 1, poll_timeout); ++ } while (ret < 0 && (errno == EAGAIN || errno == EWOULDBLOCK)); ++ ++ return ret; ++} ++ + static int send_xfer(int rs, int size) + { + struct pollfd fds; +@@ -206,7 +218,7 @@ static int send_xfer(int rs, int size) + + for (offset = 0; offset < size; ) { + if (use_async) { +- ret = rs_poll(&fds, 1, -1); ++ ret = do_poll(&fds); + if (ret != 1) + return ret; + } +@@ -235,7 +247,7 @@ static int recv_xfer(int rs, int size) + + for (offset = 0; offset < size; ) { + if (use_async) { +- ret = rs_poll(&fds, 1, -1); ++ ret = do_poll(&fds); + if (ret != 1) + return ret; + } +@@ -380,7 +392,7 @@ static int server_connect(void) + fds.fd = lrs; + fds.events = POLLIN; + +- ret = rs_poll(&fds, 1, -1); ++ ret = do_poll(&fds); + if (ret != 1) { + perror("rpoll"); + goto close; +@@ -424,21 +436,26 @@ static int client_connect(void) + ret = rs_connect(rs, res->ai_addr, res->ai_addrlen); + if (ret && (errno != EINPROGRESS)) { + perror("rconnect"); +- rs_close(rs); +- rs = ret; ++ goto err; + } + + if (errno == EINPROGRESS) { + fds.fd = rs; + fds.events = POLLOUT; +- do { +- ret = rs_poll(&fds, 1, -1); +- } while (!ret); ++ ret = do_poll(&fds); ++ if (ret != 1) { ++ perror("rpoll"); ++ goto err; ++ } + } + + free: + freeaddrinfo(res); + return rs; ++err: ++ freeaddrinfo(res); ++ rs_close(rs); ++ return -1; + } + + static int run(void) +@@ -494,6 +511,9 @@ static int set_test_opt(char *optarg) + flags |= MSG_DONTWAIT; + no_delay = 1; + break; ++ case 'p': ++ poll_timeout = 0; ++ break; + case 'v': + verify = 1; + break; +@@ -511,6 +531,8 @@ static int set_test_opt(char *optarg) + } else if (!strncasecmp("nonblock", optarg, 8)) { + flags |= MSG_DONTWAIT; + no_delay = 1; ++ } else if (!strncasecmp("poll", optarg, 4)) { ++ poll_timeout = 0; + } else if (!strncasecmp("verify", optarg, 6)) { + verify = 1; + } else { +@@ -564,6 +586,7 @@ int main(int argc, char **argv) + printf("\t a|async - asynchronous operation (use poll)\n"); + printf("\t b|blocking - use blocking calls\n"); + printf("\t n|nonblocking - use nonblocking calls\n"); ++ printf("\t p|poll - poll on asynchronous operations\n") + printf("\t v|verify - verify data\n"); + exit(1); + } -- 2.41.0