Linux Standard Base Specification 2.1 | ||
---|---|---|
<<< Previous | Next >>> |
The adjtimex() function is deprecated from the LSB and is expected to disappear from a future version of the LSB.
Note: The LSB generally does not include interfaces unlikely to be used by software applications.
Linux uses David L. Mills' clock adjustment algorithm (see RFC 1305). adjtimex() reads and optionally sets adjustment parameters for this algorithm. adjtimex() takes a pointer to a timex structure, updates kernel parameters from field values, and returns the same structure with current kernel values. This structure is declared as follows:
struct timex { int modes; /* mode selector */ long offset; /* time offset (usec) */ long freq; /* frequency offset (scaled ppm) */ long maxerror; /* maximum error (usec) */ long esterror; /* estimated error (usec) */ int status; /* clock command/status */ long constant; /* pll time constant */ long precision; /* clock precision (usec) (read only) */ long tolerance; /* clock frequency tolerance (ppm) (read only) */ struct timeval time; /* current time (read only) */ long tick; /* usecs between clock ticks */ }; |
modes
determines which parameters, if any,
to set. modes
may contain a bitwise-or
combination of zero or more of the following bits:
#define ADJ_OFFSET 0x0001 /* time offset */ #define ADJ_FREQUENCY 0x0002 /* frequency offset */ #define ADJ_MAXERROR 0x0004 /* maximum time error */ #define ADJ_ESTERROR 0x0008 /* estimated time error */ #define ADJ_STATUS 0x0010 /* clock status */ #define ADJ_TIMECONST 0x0020 /* pll time constant */ #define ADJ_TICK 0x4000 /* tick value */ #define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime */ |
Ordinary users are restricted to a 0 value for
modes
. Only the superuser may set any
parameters.
On success, adjtimex() returns the clock state:
#define TIME_OK 0 /* clock synchronized */ #define TIME_INS 1 /* insert leap second */ #define TIME_DEL 2 /* delete leap second */ #define TIME_OOP 3 /* leap second in progress */ #define TIME_WAIT 4 /* leap second has occurred */ #define TIME_BAD 5 /* clock not synchronized */ |
On error, the global variable errno
is set to
-1.
buf does not point to writable memory.
buf.mode
is nonzero
and the user is not super-user.
An attempt is made to set buf.offset
to a value outside of the range -131071 to
+131071, or to set buf.status
to a value other than those listed above, or to set
buf.tick
to a value outside of the range
900000/HZ
to
1100000/HZ
, where
HZ
is the system timer interrupt frequency.
<<< Previous | Home | Next >>> |
adjtime | Up | asprintf |