X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=ucw%2Fmain-block.c;h=9efd8a27549a7e8d0faced887421f168a95f2f55;hb=b8667492cf36a609939ee35ac42900ff0b0cc80f;hp=98c558e6acc671f6270d8339eaa45722e69f2105;hpb=035b3e0b5db8be1444c6bc1cfc929d03c0fb5196;p=libucw.git diff --git a/ucw/main-block.c b/ucw/main-block.c index 98c558e6..9efd8a27 100644 --- a/ucw/main-block.c +++ b/ucw/main-block.c @@ -9,8 +9,8 @@ #undef LOCAL_DEBUG -#include "ucw/lib.h" -#include "ucw/mainloop.h" +#include +#include #include #include @@ -56,7 +56,7 @@ block_io_read_handler(struct main_file *fi) { if (errno != EINTR && errno != EAGAIN && bio->error_handler) bio->error_handler(bio, BIO_ERR_READ); - return 0; + return HOOK_IDLE; } else if (!l) break; @@ -66,7 +66,7 @@ block_io_read_handler(struct main_file *fi) fi->read_handler = NULL; file_chg(fi); bio->read_done(bio); - return 1; + return HOOK_RETRY; } static int @@ -82,7 +82,7 @@ block_io_write_handler(struct main_file *fi) { if (errno != EINTR && errno != EAGAIN && bio->error_handler) bio->error_handler(bio, BIO_ERR_WRITE); - return 0; + return HOOK_IDLE; } bio->wpos += l; } @@ -90,11 +90,11 @@ block_io_write_handler(struct main_file *fi) fi->write_handler = NULL; file_chg(fi); bio->write_done(bio); - return 1; + return HOOK_RETRY; } void -block_io_read(struct main_block_io *bio, void *buf, uns len) +block_io_read(struct main_block_io *bio, void *buf, uint len) { ASSERT(bio->file.n.next); if (len) @@ -114,7 +114,7 @@ block_io_read(struct main_block_io *bio, void *buf, uns len) } void -block_io_write(struct main_block_io *bio, void *buf, uns len) +block_io_write(struct main_block_io *bio, void *buf, uint len) { ASSERT(bio->file.n.next); if (len) @@ -132,3 +132,12 @@ block_io_write(struct main_block_io *bio, void *buf, uns len) } file_chg(&bio->file); } + +void +block_io_set_timeout(struct main_block_io *bio, timestamp_t expires_delta) +{ + if (!expires_delta) + timer_del(&bio->timer); + else + timer_add_rel(&bio->timer, expires_delta); +}