3 Stimmen

Übergabe von Benutzerdaten mit timer_create

Ich verwende timer_create um einen Timer in Linux zu erstellen. Der Prototyp des Rückrufs ist:

static void TimerHandlerCB(int sig, siginfo_t *extra, void *cruft)

Wie kann ich Benutzerdaten übergeben, so dass ich das gleiche in den Rückruf nach Timer-Ablauf aufgerufen erhalten kann.

Hier ist mein Beispielcode:

int RegisterTimer(iDiffInTime)
{
    struct sigaction sa; 
    sigemptyset(&sa.sa_mask);
    sa.sa_flags = SA_SIGINFO;   /*call our handler*/
    sa.sa_sigaction = TimerHandlerCB;/*Event handler to be called after timer expires*/ 
    if(sigaction(SIGRTMAX, &sa, NULL) < 0)
    {
        perror("sigaction");
        return 1;
    }
    // Setup the timer
    sigevent sigev;
    timer_t timerid = 0;

    memset(&sigev, 0, sizeof(sigev));

    sigev.sigev_notify          = SIGEV_SIGNAL;
    sigev.sigev_signo           = SIGRTMAX;
    sigev.sigev_value.sival_ptr = &timerid;

    timer_t timerid;

    if (timer_create(CLOCK_REALTIME, &sigev, &timerid) == 0)
    {
        printf("Timer created\n");
        struct itimerspec itval, oitval;

        itval.it_value.tv_sec = iDiffInTime * 1000;
        itval.it_value.tv_nsec = 0;
        itval.it_interval.tv_sec = 0;
        itval.it_interval.tv_nsec = 0;

              //Populate handles required in TimerCallback
              Display_Handle hDisplay = ......//
              Buffer_Handle hBuf = .....//
        if (timer_settime(timerid, 0, &itval, &oitval) != 0)
        {
            perror("time_settime error!");
            return 1;
        }
    } 
    else 
    {
        perror("timer_create error!");
    }
    return 0
}

Wo muss ich passieren? hDisplay & hBuf damit ich sie zurückerhalten kann in TimerHandlerCB ?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X