Nikolsky Oleg(deleted)
|
3 questions to expirienced users
|
Nikolsky Oleg(deleted)
11/21/2008 5:42 AM
post17042
|
3 questions to expirienced users
3 questions to experienced QNX developers and users.
At unsophisticated user's first glance QNX 6.4.0 has many advantages as
compared with QNX previous versions. However, some unfortunate shortcomings
was inheretied from QNX 6.3.*.
///////////////////////////////////////////////////////////////////////////
1) Vagueness with valid limits of ualarm() function arguments.
Example program in HELP includes line of code with 10 seconds argument
/*ualarm((useconds_t)(10*1000*1000),0);*/. In fact function ualarm() can't
realize large time intervals. Below is simple program and its rezults.
=========================================================================
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <time.h>
#define BILLION 1000000000L;
//-----------------------------------------------------------------------
main(int argc, char **argv)
{
sigset_t set;
siginfo_t info;
struct timespec start, stop;
double accum;
int first_alarm = atoi(argv[1]);
int subsequent_alarms = atoi(argv[2]);
int i;
printf("Process with pid %d started\n", getpid());
sigemptyset(&set);
sigaddset(&set, SIGALRM);
printf("First_alarm time=%d s, subsequent_alarms period=%d s\n",
first_alarm, subsequent_alarms);
ualarm((useconds_t) (first_alarm * 1000 * 1000), (useconds_t)
(subsequent_alarms * 1000 * 1000));
for(i=0; i<10; i++)
{
clock_gettime( CLOCK_REALTIME, &start);
sigwaitinfo(&set, &info);
clock_gettime( CLOCK_REALTIME, &stop);
accum = (stop.tv_sec - start.tv_sec) + (double)(stop.tv_nsec -
start.tv_nsec) / (double)BILLION;
printf("Received signal %d with code %d. Time elapsed %lf\n",
info.si_signo, info.si_value, accum);
}
}
/*
# qcc -oualarm_glitch2.out ualarm_glitch2.c
# ./ualarm_glitch2.out 15 2
Process with pid 753706 started
First_alarm time=15 s, subsequent_alarms period=2 s
Received signal 14 with code 0. Time elapsed 2.116676 // was set to 15 s ????
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 2.000694
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 2.000694
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 2.000694
#
# ./ualarm_glitch2.out 250 2
Process with pid 778282 started
First_alarm time=250 s, subsequent_alarms period=2 s
Received signal 14 with code 0. Time elapsed 0.893863 // was set to 250 s ????
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 2.000694
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 2.000694
Received signal 14 with code 0. Time elapsed 1.999694
Received signal 14 with code 0. Time elapsed 1.999694
#
*/
=========================================================================
If it is a bug in function ualarm() code, it must be corrected. Otherwise it
is desirable correct HELP documentaion similar to HELP on usleep() function
/*useconds The number of microseconds that you want to process to sleep for.
This must be less than 1,000,000.*/
/////////////////////////////////////////////////////////////////////////////
2) Erroneous rezults of bc utility with some sets of data. For example:
#...
View Full Message
|
|
|