GETITIMER(2)    Podręcznik programisty linuxowego    GETITIMER(2)


NAZWA
       getitimer,   setitimer   -   pobierz   lub  ustaw  wartość
       wewnętrznego timera

SKŁADNIA
       #include <sys/time.h>

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

OPIS
       System  zaopatrza każdy proces trzema timerami interwałów,
       z których każdy inkrementuje się w innej domenie czasowej.
       Gdy  któryś  z  timerów ekspiruje, wysyłany jest sygnał do
       procesu, a timer (potencjalnie) restartuje.

       ITIMER_REAL    dekrementuje  w   czasie   rzeczywistym   i
                      dostarcza SIGALRM podczas ekspiracji.

       ITIMER_VIRTUAL dekrementuje   tylko   kiedy   proces   się
                      wykonuje  i  dostarcza  SIGVTALRM   podczas
                      ekspiracji.

       ITIMER_PROF    dekrementuje   zarówno   gdy   proces   się
                      wykonuje i kiedy  system  się  wykonuje  na
                      zlecenie    procesu.    W    powiązaniu   z
                      ITIMER_VIRTUAL,  ten  timer   zwykle   jest
                      używany  do  profilowania  czasu  używanego
                      przez aplikację w przestrzeni użytkownika i
                      kernela.   SIGPROF jest dostarczany podczas
                      ekspiracji.

       Wartości timera są zdefiniowane następującymi strukturami:
            struct itimerval {
                struct timeval it_interval; /* następna wartość */
                struct timeval it_value;    /* obecna wartość */
            };
            struct timeval {
                long tv_sec;                /* sekundy */
                long tv_usec;               /* mikrosekundy */
            };

       Getitimer(2)  wypełnia  strukturę  wskazywaną  przez value
       obecnym wskazaniem timera wskazywanego przez which  (jeden
       z  ITIMER_REAL, ITIMER_VIRTUAL, lub ITIMER_PROF).  Element
       it_value  jest  ustawiony  na  ilość  czasu  pozostającego
       timerowi,  lub  zero jeśli timer jest wyłączony. Podobnie,
       it_interval   jest   ustawiany   na   wartość    resetową.
       Setitimer(2)  ustawia  wskazany  timer na wartość w value.
       Jeśli ovalue jest niezerowe, stara wartość timera jest tam
       zapisywana.

       Timer  dekrementuje  z it_value do zera, generuje sygnał i



Linux 0.99.11             5 August 1993                         1





GETITIMER(2)    Podręcznik programisty linuxowego    GETITIMER(2)


       resetuje do it_interval.  Timer, który jest  ustawiony  na
       zero   (it_value  jest  zerowe,  lub  timer  ekspiruje,  a
       it_interval jest zerowe) zatrzymuje się.

       Zarówno tv_sec jak i  tv_usec  są  znaczące  w  określaniu
       czasu trwania timera.

       Timery  nigdy  nie ekspirują przed zadanym czasem, zamiast
       tego  ekspirują  w  krótkich,  stałych   okresach   czasu,
       zależnie  od  rozdzielczości  timera  systemowego (obecnie
       10ms). Podczas  ekspirowania  generowany  jest  sygnał,  a
       timer  jest resetowany. Jeśli timer ekspiruje podczas, gdy
       proces  jest  aktywny   (zawsze   jest   to   prawda   dla
       ITIMER_VIRT)  sygnał  zostanie  dostarczony natychmiast po
       wygenerowaniu. W przeciwnym  wypadku  dostarczenie  będzie
       wydłużone o krótki czas, zależny od obciążenia systemu.


WARTOŚĆ ZWRACANA
       Po sukcesie zwracane jest zero. Po błedzie, -1 i ustawiane
       jest errno .

BŁĘDY
       EFAULT         value  lub  ovalue  nie  jest   prawidłowym
                      wskaźnikiem.

       EINVAL         which   nie   jest  jednym  z  ITIMER_REAL,
                      ITIMER_VIRT, lub ITIMER_PROF.

ZGODNE Z
       SVr4,  4.4BSD  (Ta  funkcja  pierwotnie  pojawiła  się   w
       4.2BSD).

ZOBACZ TAKŻE
       gettimeofday(2), sigaction(2), signal(2).

BŁĘDY
       Pod linuxem, generowanie i dostarczanie sygnału są odległe
       i każdy sygnał może być tylko jednym naraz.  Dlatego  pod­
       czas  patologicznie  dużego  obciążenia  ITIMER_REAL  może
       ekspirować wcześniej, niż  sygnał  poprzedniej  ekspiracji
       zostanie  dostarczony.  Drugi  sygnał zostanie wtedy utra­
       cony.














Linux 0.99.11             5 August 1993                         2