tests: add xetitimer.test
* tests/xetitimer.c: New file. * tests/xetitimer.test: New test. * tests/Makefile.am (check_PROGRAMS): Add xetitimer. (TESTS): Add xetitimer.test. * tests/.gitignore: Add xetitimer.
This commit is contained in:
parent
2206085929
commit
12431f76be
1
tests/.gitignore
vendored
1
tests/.gitignore
vendored
@ -66,6 +66,7 @@ utimensat
|
||||
wait
|
||||
xattr
|
||||
xet_robust_list
|
||||
xetitimer
|
||||
*.log
|
||||
*.log.*
|
||||
*.o
|
||||
|
@ -79,6 +79,7 @@ check_PROGRAMS = \
|
||||
wait \
|
||||
xattr \
|
||||
xet_robust_list \
|
||||
xetitimer \
|
||||
# end of check_PROGRAMS
|
||||
|
||||
filter_unavailable_LDADD = -lpthread
|
||||
@ -165,6 +166,7 @@ TESTS = \
|
||||
wait.test \
|
||||
xattr.test \
|
||||
xet_robust_list.test \
|
||||
xetitimer.test \
|
||||
count.test \
|
||||
detach-sleeping.test \
|
||||
detach-stopped.test \
|
||||
|
75
tests/xetitimer.c
Normal file
75
tests/xetitimer.c
Normal file
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
struct {
|
||||
struct itimerval itv;
|
||||
uint32_t pad[4];
|
||||
} old = {
|
||||
.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
|
||||
}, new = {
|
||||
.itv = {
|
||||
.it_interval = { 0xc0de1, 0xc0de2 },
|
||||
.it_value = { 0xc0de3, 0xc0de4 }
|
||||
},
|
||||
.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
|
||||
};
|
||||
|
||||
if (setitimer(ITIMER_REAL, &new.itv, &old.itv))
|
||||
return 77;
|
||||
printf("setitimer(ITIMER_REAL"
|
||||
", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
|
||||
", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
|
||||
") = 0\n",
|
||||
(intmax_t) new.itv.it_interval.tv_sec,
|
||||
(intmax_t) new.itv.it_interval.tv_usec,
|
||||
(intmax_t) new.itv.it_value.tv_sec,
|
||||
(intmax_t) new.itv.it_value.tv_usec,
|
||||
(intmax_t) old.itv.it_interval.tv_sec,
|
||||
(intmax_t) old.itv.it_interval.tv_usec,
|
||||
(intmax_t) old.itv.it_value.tv_sec,
|
||||
(intmax_t) old.itv.it_value.tv_usec);
|
||||
|
||||
if (getitimer(ITIMER_REAL, &old.itv))
|
||||
return 77;
|
||||
printf("getitimer(ITIMER_REAL"
|
||||
", {it_interval={%jd, %jd}, it_value={%jd, %jd}}"
|
||||
") = 0\n",
|
||||
(intmax_t) old.itv.it_interval.tv_sec,
|
||||
(intmax_t) old.itv.it_interval.tv_usec,
|
||||
(intmax_t) old.itv.it_value.tv_sec,
|
||||
(intmax_t) old.itv.it_value.tv_usec);
|
||||
|
||||
puts("+++ exited with 0 +++");
|
||||
return 0;
|
||||
}
|
14
tests/xetitimer.test
Executable file
14
tests/xetitimer.test
Executable file
@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Check setitimer and getitimer syscalls decoding.
|
||||
|
||||
. "${srcdir=.}/init.sh"
|
||||
|
||||
run_prog > /dev/null
|
||||
OUT="$LOG.out"
|
||||
syscalls=setitimer,getitimer
|
||||
run_strace -e trace=$syscalls $args > "$OUT"
|
||||
match_diff "$OUT" "$LOG"
|
||||
rm -f "$OUT"
|
||||
|
||||
exit 0
|
Loading…
x
Reference in New Issue
Block a user