Mihai Sprinceana
Un forum de programare cu de toate. Va astept sa va inscrieti si sa deveniti moderatori. Oricine este binevenit aici sa se inscrie si sa aiba acces la informatie free! Fiecare este liber sa adauge proiecte programe free etc. Ajutati acest forum sa devina o comunitate puternica unde fiecare invata de la fiecare! Tot ce trebuie sa faceti este sa va inregistrati si fiecare contributie se poate dovedi utila in timp! Forumul este free informatia free dk aveti timp liber ajutati si pe ceilalti si invatati si voi in acelasi timp! Haideti sa facem ceva pt.a ne ajuta intre noi! Cititi regulament postare forum inainte de a posta!
Lista Forumurilor Pe Tematici
Mihai Sprinceana | Inregistrare | Login

POZE MIHAI SPRINCEANA

Nu sunteti logat.
Nou pe simpatie:
blacksilk din Buzau
Femeie
23 ani
Buzau
cauta Barbat
23 - 45 ani
Mihai Sprinceana / SO Linux&Unix / Functiile getitimer,setitimer (apeluri sistem) Moderat de Cristy89, Houssey, cr3us, fireratbat, profu.info, sade5000
Autor
Mesaj Pagini: 1
Cristy89
Moderator

Inregistrat: acum 15 ani
Postari: 26
getitimer, setitimer - preia sau seteaza valoarea unui interval  pt.un timer 

Este necesar sa aveti inclus fisierul header(biblioteca):

#include <sys/time.h>

Forma generala:

int getitimer(int which, struct itimerval *value);
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);


Sistemul furnizeaza fiecarui proces 3 intervale de timp ,decrementand intr-un domeniu de timp distinct. Cand orice timer expira , un semnal este trimis procesului si timer-ul se restarteaza.


Exemple:

    ITIMER_REAL - decrementeaza in timp real, si trimite semnalul SIGALRM dupa expirare

    ITIMER_VIRTUAL - decrementeaza doar cand procesul se executa si trimite semnalul SIGVTALRM dupa expirare
       
    ITIMER_PROF - decrementeaza atunci cand procesul se executa dar si cand sistemul executa jumatate din procesul respectiv. Cuplat cu ITIMER_VIRTUAL, acest timer este folosit de obicei pt. a vedea timpul trecut al aplicatiei in spatiul user-ului si al nucleului sistemului de operare (numit kernel). Semnalul SIGPROF este trimis dupa expirare.
 

Pentru mai multe detalii vezi comunicare intre procese folosind semnale.

    Valorile pt.timer sunt definite de urmatoarele structuri:

        struct itimerval {
            struct timeval it_interval; /* next value */
            struct timeval it_value;    /* current value */
        };
        struct timeval {
            long tv_sec;                /* seconds */
            long tv_usec;               /* microseconds */
        };

Functia getitimer completeaza structura indicata de valoare cu setarea curenta pt.tipul de timer indicat de which(ITIMER_REAL, ITIMER_VIRTUAL, sau ITIMER_PROF).   

Elementul it_value este setat la timpul ramas al timer-ului, sau 0 daca timer-ul este in starea disabled.

In mod similar it_interval este setat la valoarea de reset.

Functia setitimer seteaza timer-ul indicat la valoarea din value. Daca o valoare este diferita de 0 (!=0) vechea valoare a timer-ului este stocata aici.

Concluzie:

Timer-ele decrementeaza de la it_value la 0, genereaza un semnal si reseteaza la it_interval. Un timer este setat la 0 (it_value este 0 sau timer-ul expira si it_interval este 0) si se opreste.

tv_sec si tv_usec sunt semnificative pentru determinarea duratei unui timer.

Timer-ele nu vor expira niciodata dupa timpul cerut.

In caz de succes valoarea 0 este intoarsa.

In caz de eroare este intoarsa valoarea -1 sau este setat un mesaj de eroare corespunzator.
     
Erori:

    EFAULT -valoarea nu este un pointer valid
        value or ovalue are not valid pointers.
    EINVAL - nu este un tip de timer permis/cunoscut (tipurile de timer-e permise sunt: ITIMER_REAL, ITIMER_VIRT, or ITIMER_PROF)


pus acum 15 ani
   
shezi
Membru nou

Inregistrat: acum 11 ani
Postari: 1
I like this forum, amazing and very informative,

_______________________________________
shezi

pus acum 11 ani
   
Pagini: 1  

Mergi la