adjtimex

Autres langues

Langue: pl

Autres versions - même langue

Version: 1997-07-30 (openSuse - 09/10/07)

Autres sections - même nom

Section: 2 (Appels système)

NAZWA

adjtimex - dopasowanie zegara w j±drze

SK£ADNIA

#include <sys/timex.h>

int adjtimex(struct timex *buf);

OPIS

Linux u¿ywa algorytmu dopasowywania Davida L. Millsa (zobacz w RFC 1305). Wywo³anie systemowe adjtimex czyta i opcjonalnie ustawia parametry steruj±ce tego algorytmu. adjtimex pobiera wska¼nik do struktury timex, poprawia parametry w j±drze na podstawie warto¶ci przekazanych w polach i zwraca tê sam± strukturê z bie¿±cymi ustawieniami j±dra. Struktura jest zadeklarowana nastêpuj±co:

struct timex {

    int modes;           /* prze³±cznik trybu */

    long offset;         /* offset czasu (usec) */

    long frequency;      /* offset czêstotliwo¶ci (skalowany ppm) */

    long maxerror;       /* maksymalny b³±d (usec) */

    long esterror;       /* obliczony b³±d (usec) */

    int status;          /* komenda/status zegara */

    long constant;       /* sta³a czasu pll */

    long precision;      /* dok³adno¶æ zegara (usec) (tylko do odczytu) */

    long tolerance;      /* tolerancja czêstotliwo¶ci zegara (ppm)

                            (tylko do odczytu) */

    struct timeval time; /* aktualny czas (tylko do odczytu) */

    long tick;           /* czas miedzy tykniêciami zegara (usec) */

};

Pole modes okre¶la, które parametry (je¶li w ogóle) ustawiæ. Mo¿e ono zawieraæ bitoweor kombinacji zera lub wiêcej spo¶ród nastêpuj±cych bitów:


#define ADJ_OFFSET            0x0001 /* offset czasu */

#define ADJ_FREQUENCY         0x0002 /* offset czêstotliwo¶ci */

#define ADJ_MAXERROR          0x0004 /* maksymalny b³±d czasu */

#define ADJ_ESTERROR          0x0008 /* obliczany b³±d czasu */

#define ADJ_STATUS            0x0010 /* status zegara */

#define ADJ_TIMECONST         0x0020 /* sta³a czasu pll */

#define ADJ_TICK              0x4000 /* warto¶æ tykniêcia */

#define ADJ_OFFSET_SINGLESHOT 0x8001 /* staromodne adjtime */

Zwyczajni u¿ytkownicy s± ograniczeni do warto¶ci zero dla mode. Jedynie superu¿ytkownik mo¿e ustawiaæ jakiekolwiek parametry.

WARTO¦Æ ZWRACANA

Po pomy¶lnym zakoñczeniu, adjtimex zwraca stan zegara z

#define TIME_OK   0 /* zegar zsynchronizowany */

#define TIME_INS  1 /* dodaj sekundê przestêpn± */

#define TIME_DEL  2 /* skasuj sekundê przestêpn± */

#define TIME_OOP  3 /* sekunda przestêpna trwa */

#define TIME_WAIT 4 /* wyst±pi³a sekunda przestêpna */

#define TIME_BAD  5 /* zegar nie zsynchronizowany */

W przypadku b³êdu, adjtimex zwraca -1 i ustawia errno.

B£ÊDY

EFAULT
buf nie wskazuje do zapisywalnej pamiêci.
EPERM
buf.mode jest niezerowe, a u¿ytkownik nie jest superu¿ytkownikiem.
EINVAL
Próbowano ustawiæ buf.offset na warto¶æ poza obszarem od -131071 do +131071, lub ustawiæ buf.status na warto¶æ inn± ni¿ te wymienione powy¿ej, lub ustawiæ buf.tick na warto¶æ spoza zakresu 900000/HZ do 1100000/HZ, gdzie HZ jest czêstotliwo¶ci± przerwania systemowego timera.

ZGODNE Z

adjtimex jest specyficzny dla Linuksa i nie powinien byæ u¿ywany w programach, które maj± byæ przeno¶ne. W SVr4 istnieje podobna, lecz mniej ogólna funkcja adjtime.

ZOBACZ TAK¯E

settimeofday(2).