Details
[Home]
Issue of the Implementation # S0558
Brief
Call to timer_create() with clock_id received from clock_getcpuclockid() cause an error EINVAL
Detailed Description
The timer_create() function shall create a per-process timer using the specified clock, clock_id, as the timing base. But call to timer_create with clock_id received from clock_getcpuclockid() cause an error EINVAL.
Problem location(s) in the standard
Linux Standard Base Core Specification 3.1, Chapter 13. Base Libraries, 13.17. Interfaces for librt, timer_create() function.
Example
#include <stdio.h> #include <errno.h> #include <string.h> #include <signal.h> #include <time.h> int printResAndErrno( int res, const char * funcName, const char * funcArgs ) { int savedErrno = errno; printf( "%s%s is %d\n", funcName, funcArgs, res ); printf( "after %s( ... ) errno is %d ( %s )\n", funcName, savedErrno, strerror( savedErrno ) ); return savedErrno; } #define callPrintResAndErrno( func, pars ) printResAndErrno( ( errno = 0, func pars ), #func, #pars ) int main( int argc, char ** argv ) { clockid_t clockId; timer_t timerId; // prepare clockId callPrintResAndErrno( clock_getcpuclockid, ( 0, & clockId ) ); // find error if ( callPrintResAndErrno( timer_create, ( clockId, NULL, & timerId ) ) == EINVAL ) { // error found printf( "error : after timer_create( ... ) errno can not be %d ( %s )\n", EINVAL, strerror( EINVAL ) ); } else { // error not found printf( "no error\n" ); } return 0; }
Component
glibc 2.3.6 or earlier
Status
Fixed in glibc 2.4
[Home]
»