summaryrefslogtreecommitdiffstats
path: root/testsuites/psxtests/psxtimer01
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-10-11 14:44:00 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-10-11 14:44:00 +0000
commit157354e9aa6385f2923ca635bf5e5e2f267fc46d (patch)
tree86092ebe51ec6ce3c2a0b90f85580d0499be274b /testsuites/psxtests/psxtimer01
parent2009-10-11 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-157354e9aa6385f2923ca635bf5e5e2f267fc46d.tar.bz2
2009-10-11 Joel Sherrill <joel.sherrill@oarcorp.com>
* psxtimer01/psxtimer.c: Make sure we have null and not-null as return parameter to timer_settime().
Diffstat (limited to 'testsuites/psxtests/psxtimer01')
-rw-r--r--testsuites/psxtests/psxtimer01/psxtimer.c54
1 files changed, 31 insertions, 23 deletions
diff --git a/testsuites/psxtests/psxtimer01/psxtimer.c b/testsuites/psxtests/psxtimer01/psxtimer.c
index ac4617e6da..ed237ebbaa 100644
--- a/testsuites/psxtests/psxtimer01/psxtimer.c
+++ b/testsuites/psxtests/psxtimer01/psxtimer.c
@@ -63,16 +63,23 @@ void StopTimer(
struct itimerspec *timerdata
)
{
- /*
- * We do not care about the old value. And this is a path
- * that needs to be exercised anyway.
- */
- timerdata->it_value.tv_sec = 0;
- timerdata->it_value.tv_nsec = 0;
- if (timer_settime(timer_id,POSIX_TIMER_RELATIVE,timerdata,NULL) == -1) {
- perror ("Error in timer setting\n");
- pthread_exit ((void *) -1);
- }
+ static int firstTime = 1;
+ struct itimerspec *pOld;
+ struct itimerspec odata;
+
+ /*
+ * We do not care about the old value. But we need to exercise
+ * getting and not getting the return value back.
+ */
+ pOld = (firstTime == 1) ? NULL : &odata;
+ firstTime = 0;
+
+ timerdata->it_value.tv_sec = 0;
+ timerdata->it_value.tv_nsec = 0;
+ if (timer_settime(timer_id,POSIX_TIMER_RELATIVE,timerdata,NULL) == -1) {
+ perror ("Error in timer setting\n");
+ rtems_test_exit(0);
+ }
}
/* task A */
@@ -97,7 +104,7 @@ void * task_a (void *arg)
event.sigev_signo = my_sig;
if (timer_create (CLOCK_REALTIME, &event, &timer_id) == -1) {
perror ("Error in timer creation\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
/* block the timer signal */
@@ -111,7 +118,7 @@ void * task_a (void *arg)
timerdata.it_value.tv_sec *= 2;
if (timer_settime(timer_id,POSIX_TIMER_RELATIVE,&timerdata,&timergetdata) == -1) {
perror ("Error in timer setting\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
printf(
"task A: timer_settime - value=%d:%d interval=%d:%d\n",
@@ -127,7 +134,7 @@ void * task_a (void *arg)
}
if (timer_gettime(timer_id, &timerdata) == -1) {
perror ("Error in timer_gettime\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
if (! _Timespec_Equal_to( &timerdata.it_value, &my_period )){
perror ("Error in Task A timer_gettime\n");
@@ -165,7 +172,7 @@ void * task_b (void *arg)
event.sigev_signo = my_sig;
if (timer_create (CLOCK_REALTIME, &event, &timer_id) == -1) {
perror ("Error in timer creation\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
/* block the timer signal */
@@ -180,22 +187,23 @@ void * task_b (void *arg)
_Timespec_Add_to( &timerdata.it_value, &my_period );
if (timer_settime(timer_id,TIMER_ABSTIME,&timerdata,NULL) == -1) {
perror ("Error in timer setting\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
/* periodic activity */
while(1) {
if (sigwait(&set,&received_sig) == -1) {
perror ("Error in sigwait\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
if (timer_gettime(timer_id, &timerdata) == -1) {
perror ("Error in timer_gettime\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
- if (! _Timespec_Equal_to( &timerdata.it_value, &my_period) ){
+ if ( !_Timespec_Equal_to( &timerdata.it_value, &my_period) ){
perror ("Error in Task B timer_gettime\n");
+ rtems_test_exit(0);
}
pthread_mutex_lock (&data.mutex);
@@ -237,7 +245,7 @@ void * task_c (void *arg)
event.sigev_signo = my_sig;
if (timer_create (CLOCK_REALTIME, &event, &timer_id) == -1) {
perror ("Error in timer creation\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
/* block the timer signal */
@@ -251,18 +259,18 @@ void * task_c (void *arg)
timerdata.it_value.tv_sec *= 2;
if (timer_settime(timer_id,POSIX_TIMER_RELATIVE,&timerdata,NULL) == -1) {
perror ("Error in timer setting\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
/* periodic activity */
for (count=0 ; ; count++) {
if (sigwait(&set,&received_sig) == -1) {
perror ("Error in sigwait\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
if (timer_gettime(timer_id, &timerdata) == -1) {
perror ("Error in timer_gettime\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
if (! _Timespec_Equal_to( &timerdata.it_value, &my_period) ){
perror ("Error in Task C timer_gettime\n");
@@ -284,7 +292,7 @@ void * task_c (void *arg)
if (timer_gettime(timer_id, &timergetdata) == -1) {
perror ("Error in timer setting\n");
- pthread_exit ((void *) -1);
+ rtems_test_exit(0);
}
printf(
"task C: timer_gettime - %d:%d remaining from %d:%d\n",