Подробности

[В начало]

Проблема в стандарте № S0544

Краткое описание

После компиляции с помощью lsbcc на IA64 или s390x кода с вызовом timer_create() функции timer_getoverrun(), timer_delete(), timer_settime(), timer_gettime() падают

Подробное описание

В соответствии со стандартом POSIX, если вызов timer_create() успешен, то эта функция должна возвращать 0 и записывать по адресу, на который указывает ее параметр идентификатор. Его потом можно использовать в качестве аргумента для других функций.

Но в следующем коде все функции, относящиеся к таймерам, падают после успешного вызова timer_create().

#include 
#include 


int main (void)
{
        timer_t tm;
        printf("timer_create() result: %d\n", timer_create(CLOCK_REALTIME, NULL, &tm));
        printf("%d\n", timer_delete(tm)); // Any timer related function here

    return 0;
}

Это падение проявляется только на архитектурах IA64 и s390x при компиляции с помощью lsbcc из LSB 3.1 SDK. При компиляции с помощью gcc все работает нормально.

Раздел стандарта

Linux Standard Base Core Specification 3.1, Chapter 13. Base Libraries, 13.5. Interface Definitions for libc, description of timer_create(), timer_getoverrun(), timer_delete(), timer_settime(), timer_gettime() functions.

Статус

Исправлено в LSB 3.2

[В начало]