X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=splice-test4c.c;h=fc5617a7d9d9bed63df2b9ae1daeebff0d3db384;hb=refs%2Fheads%2Fmaster;hp=3d1a867ddfc035e974df5842859c477ec82badd8;hpb=000b72a837c7c9c6c82b7c9099049fea3db1a7e8;p=splice.git diff --git a/splice-test4c.c b/splice-test4c.c index 3d1a867..fc5617a 100644 --- a/splice-test4c.c +++ b/splice-test4c.c @@ -146,8 +146,10 @@ static int child(void) return error("connect"); start_timing("Empty buffer"); - for (i = 0; i < NR; i++) - write(sk, buffer, BUFSIZE); + for (i = 0; i < NR; i++) { + if (write(sk, buffer, BUFSIZE) != BUFSIZE) + return error("empty buffer write"); + } end_timing(NR*BUFSIZE, &r1); fd = open("largefile", O_RDONLY); @@ -158,7 +160,8 @@ static int child(void) for (i = 0; i < NR; i++) { if (read(fd, buffer, BUFSIZE) != BUFSIZE) return error("largefile read"); - write(sk, buffer, BUFSIZE); + if (write(sk, buffer, BUFSIZE) != BUFSIZE) + return error("largefile write"); } end_timing(NR*BUFSIZE, &r2); close(fd); @@ -201,13 +204,13 @@ splice_pipe_again: i = NR*BUFSIZE; off = 0; do { - int ret = splice(fd, &off, pipefd[1], NULL, min(i, BUFSIZE), SPLICE_F_NONBLOCK); + int ret = ssplice(fd, &off, pipefd[1], NULL, min(i, BUFSIZE), SPLICE_F_NONBLOCK); if (ret <= 0) return error("splice-pipe-in"); i -= ret; while (ret > 0) { int flags = i ? SPLICE_F_MORE : 0; - int written = splice(pipefd[0], NULL, sk, NULL, ret, flags); + int written = ssplice(pipefd[0], NULL, sk, NULL, ret, flags); if (written <= 0) return error("splice-pipe-out"); ret -= written; @@ -243,7 +246,7 @@ splice_again: int flags = BUFSIZE < i ? SPLICE_F_MORE : 0; int ret; - ret = splice(fd, &off, sk, NULL, min(i, BUFSIZE), flags); + ret = ssplice(fd, &off, sk, NULL, min(i, BUFSIZE), flags); if (ret <= 0) return error("splice"); @@ -297,7 +300,7 @@ static void setup_shared_var(void) BUG_ON(fd == -1); close(fd); - fd = open(".tmp_mmap", O_RDWR|O_CREAT|O_TRUNC); + fd = open(".tmp_mmap", O_RDWR|O_CREAT|O_TRUNC, 0644); BUG_ON(fd == -1); ret = write(fd, zerobuff, 4096); BUG_ON(ret != 4096); @@ -315,6 +318,13 @@ static void setup_shared_var(void) do { \ __asm__ __volatile__("rdtsc" : "=A" (val)); \ } while (0) +#elif defined(__x86_64__) +#define rdtscll(val) \ +do { \ + uint64_t lo, hi; \ + __asm__ __volatile__("rdtsc" : "=a" (lo), "=d" (hi)); \ + (val) = (hi << 32) | lo; \ +} while (0) #if 0 #elif defined(__ia64__) #define rdtscll(val) \ @@ -342,7 +352,8 @@ static void lowprio_cycle_soak_loop(void) * We are a nice +19 SCHED_BATCH task: */ BUG_ON(sched_setscheduler(0, SCHED_BATCH, &p) != 0); - nice(40); + if (nice(40) < 0) + perror("nice"); rdtscll(t0); while (cycles >= 0) { @@ -368,7 +379,9 @@ int main(__attribute__((__unused__)) int argc, __attribute__((__unused__)) char exit(0); } - nice(-20); + if (nice(-20) < 0) + perror("nice"); + child(); kill(pid, SIGHUP); exit(0);