]> granicus.if.org Git - strace/commitdiff
tests: add more tests for ched_rr_get_interval decoding
authorEugene Syromyatnikov <evgsyr@gmail.com>
Mon, 5 Sep 2016 01:32:02 +0000 (04:32 +0300)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 5 Sep 2016 15:58:35 +0000 (15:58 +0000)
* tests/sched_rr_get_interval.c (main): Check decoding of invalid
timespec pointer and successful syscall invocation.

tests/sched_rr_get_interval.c

index 73e2d39adec7bfb6a7552af0b06ba3c66dd1fb88..99943e7bed9240ff0a7ac27d88c934e2978669f1 100644 (file)
@@ -3,6 +3,7 @@
 
 #ifdef __NR_sched_rr_get_interval
 
+# include <stdint.h>
 # include <stdio.h>
 # include <sched.h>
 # include <unistd.h>
@@ -11,8 +12,24 @@ int
 main(void)
 {
        struct timespec *const tp = tail_alloc(sizeof(struct timespec));
-       long rc = syscall(__NR_sched_rr_get_interval, -1, tp);
-       printf("sched_rr_get_interval(-1, %p) = %s\n", sprintrc(rc));
+       long rc;
+
+       rc = syscall(__NR_sched_rr_get_interval, 0, NULL);
+       printf("sched_rr_get_interval(0, NULL) = %s\n", sprintrc(rc));
+
+       rc = syscall(__NR_sched_rr_get_interval, 0, tp + 1);
+       printf("sched_rr_get_interval(0, %p) = %s\n", tp + 1, sprintrc(rc));
+
+       rc = syscall(__NR_sched_rr_get_interval, -1, tp);
+       printf("sched_rr_get_interval(-1, %p) = %s\n", tp, sprintrc(rc));
+
+       rc = syscall(__NR_sched_rr_get_interval, 0, tp);
+       if (rc == 0)
+               printf("sched_rr_get_interval(0, {%jd, %jd}) = 0\n",
+                       (intmax_t)tp->tv_sec, (intmax_t)tp->tv_nsec);
+       else
+               printf("sched_rr_get_interval(-1, %p) = %s\n", tp,
+                       sprintrc(rc));
 
        puts("+++ exited with 0 +++");
        return 0;