www.digipedia.pl - manuale

GETITIMER(2)

GETITIMER(2) Podręcznik programisty Linuksa GETITIMER(2)
Copyright 7/93 by Darren Senn <sinster@scintilla.santa-clara.ca.us> Based on a similar page Copyright 1992 by Rick Faith May be freely distributed Modified Tue Oct 22 00:22:35 EDT 1996 by Eric S. Raymond <esr@thyrsus.com> Translation (c) 1998 Przemek Borys <pborys@dione.ids.pl> Last update: A. Krzysztofowicz <ankry@mif.pg.gda.pl>, Mar 2002, manpages 1.48
 

NAZWA

getitimer, setitimer - pobranie i ustawienie wartości czasomierza

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

Uwaga! To tłumaczenie może być nieaktualne!

System zaopatruje każdy proces w trzy czasomierze, z których każdy odlicza czas się w innej domenie czasowej. Gdy upłynie czas ważności ustawiony dla któregoś z czasomierzy, do procesu wysyłany jest sygnał, a czasomierz jest (potencjalnie) restartowany.

ITIMER_REAL
odlicza czas rzeczywisty i dostarcza SIGALRM po upływie czasu ważności.
ITIMER_VIRTUAL
odlicza czas wykonywania się procesu i dostarcza SIGVTALRM po upływie czasu ważności.
ITIMER_PROF
odlicza zarówno czas wykonywania się procesu, jak i czas wykonywania przez system zlecenie procesu. W powiązaniu z ITIMER_VIRTUAL, ten czasomierz zwykle jest używany do parametryzowania czasu używanego przez aplikację zarówno w przestrzeni użytkownika, jak i jądra. Po upływie czasu ważności dostarczany jest SIGPROF.

Wartości czasomierza są zdefiniowane za pomocą następujych struktur:

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 */ };

Funkcja getitimer(2) wypełnia strukturę wskazywaną przez value aktualnym ustawieniem czasomierza wskazywanego przez which (jeden z ITIMER_REAL, ITIMER_VIRTUAL lub ITIMER_PROF). Do pola it_value jest wpisywana ilość czasu, który pozostał czasomierzowi lub zero, jeśli czasomierz jest wyłączony. Podobnie, do it_interval jest wpisywana wartość inicjalizacyjna. Funkcja setitimer(2) ustawia dla wskazanego czasomierza wartości zawarte w value. Jeśli ovalue jest niezerowe, to jest tam zapisywana stara wartość czasomierza.

Czasomierz odlicza od it_value do zera, generuje sygnał i inicjalizuje się na it_interval. Czasomierz ustawiony na zero (it_value jest zerowe, lub upłynął czasu ważności czasomierza, a it_interval jest zerowe) zatrzymuje się.

Przy określaniu czasu działania czasomierza istotne są zarówno tv_sec jak i tv_usec.

Ważność czasomierzy nigdy nie upływa przed zadanym czasem, natomiast dzieje się to o krótki, stały czas, zależny od rozdzielczości zegara systemowego (obecnie 10ms), później. W chwili upływu czasu ważności generowany jest sygnał, a czasomierz jest resetowany. Jeśli czas ważności upływa, gdy proces jest aktywny (jest to zawsze prawda dla ITIMER_VIRT), to sygnał zostanie dostarczony natychmiast po wygenerowaniu. W przeciwnym wypadku dostarczenie będzie opóźnione o krótki okres czasu, zależny od obciążenia systemu.

WARTOŚĆ ZWRACANA

Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1 i odpowiednio ustawiane 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)

USTERKI

Pod Linuksem, generowanie i dostarczanie sygnału są oddzielnymi zdarzeniami i dla każdego sygnału może być tylko jedno zaległe zdarzenie. Zatem możliwe jest, że podczas patologicznie dużego obciążenia czas ważności ITIMER_REAL może upłynąć wcześniej, niż sygnał poprzedniego przeterminowania zostanie dostarczony. Drugi sygnał w takiej sytuacji zostanie utracony.

INFORMACJE O TŁUMACZENIU

Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:
man --locale=C 2 getitimer

Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.

1993-08-05 Linux 0.99.11