diff options
author | David Dykstra <dwd@samba.org> | 2000-06-06 21:13:05 +0000 |
---|---|---|
committer | David Dykstra <dwd@samba.org> | 2000-06-06 21:13:05 +0000 |
commit | ef5d23ebcd67a59d2f89fbb5004c9ece4cc4d887 (patch) | |
tree | a91e45461e7bd9eb1f877a7d8587768879f51804 /io.c | |
parent | 27b9a19be0e90919fe8be3f939f9760d53b221c0 (diff) | |
download | rsync-ef5d23ebcd67a59d2f89fbb5004c9ece4cc4d887.tar.gz rsync-ef5d23ebcd67a59d2f89fbb5004c9ece4cc4d887.tar.bz2 rsync-ef5d23ebcd67a59d2f89fbb5004c9ece4cc4d887.zip |
Add --bwlimit option contributed by Matthew Demicco and Jamie Gritton.
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -27,6 +27,8 @@ /* if no timeout is specified then use a 60 second select timeout */ #define SELECT_TIMEOUT 60 +extern int bwlimit; + static int io_multiplexing_out; static int io_multiplexing_in; static int multiplex_in_fd; @@ -388,6 +390,19 @@ static void writefd_unbuffered(int fd,char *buf,int len) exit_cleanup(RERR_STREAMIO); } + /* Sleep after writing to limit I/O bandwidth */ + if (bwlimit) + { + tv.tv_sec = 0; + tv.tv_usec = ret * 1000 / bwlimit; + while (tv.tv_usec > 1000000) + { + tv.tv_sec++; + tv.tv_usec -= 1000000; + } + select(0, NULL, NULL, NULL, &tv); + } + total += ret; if (io_timeout) |