Rechercher une page de manuel
getitimer
Langue: pl
Version: 1993-08-05 (openSuse - 09/10/07)
Section: 2 (Appels système)
NAZWA
getitimer, setitimer - pobranie i ustawienie warto¶ci czasomierzaSK£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 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.Contenus ©2006-2023 Benjamin Poulain
Design ©2006-2023 Maxime Vantorre