sys_adjtimex  [kernel/time.c]


Adjusts the kernel time parameters. Linux uses David L. Mills' clock adjustment algorithm (see RFC 1305). The sys_adjtimex reads and optionally sets adjustment parameters for this algorithm.

Arguments

eax 124
ebx Pointer to a properly initialized timex structure:
struc timex
{
.modes          rd 1 ; mode selector
.offset         rd 1 ; time offset (usec)
.freq           rd 1 ; frequency offset (scaled ppm)
.maxerror       rd 1 ; maximum error (usec)
.esterror       rd 1 ; estimated error (usec)
.status         rd 1 ; clock command/status
.constant       rd 1 ; pll time constant
.precision      rd 1 ; clock precision (usec) (read only)
.tolerance      rd 1 ; clock frequency tolerance (ppm) (read only)
.time           timeval ; (read only)
.tick           rd 1 ; (modified) usecs between clock ticks
.ppsfreq        rd 1 ; pps frequency (scaled ppm) (ro)
.jitter         rd 1 ; pps jitter (us) (ro)
.shift          rd 1 ; interval duration (s) (shift) (ro)
.stabil         rd 1 ; pps stability (scaled ppm) (ro)
.jitcnt         rd 1 ; jitter limit exceeded (ro)
.calcnt         rd 1 ; calibration intervals (ro)
.errcnt         rd 1 ; calibration errors (ro)
.stbcnt         rd 1 ; stability limit exceeded (ro)
                rd 12
}

times members:

modes

Determines which parameters to set. It may contain one or a bitwise-or operation of the following values:
 ADJ_OFFSET    - time offset
 ADJ_FREQUENCY - frequency offset
 ADJ_MAXERROR  - maximum time error
 ADJ_ESTERROR  - estimated time error
 ADJ_STATUS    - clock status
 ADJ_TIMECONST - pll time constant
 ADJ_TICK      - tick value
 ADJ_OFFSET_SINGLESHOT - old-fashioned adjtime

Return values

If the system call succeeds the return value is clock state:

TIME_OK    - clock synchronized
TIME_INS   - insert leap second
TIME_DEL   - delete leap second
TIME_OOP   - leap second in progress
TIME_WAIT  - leap second has occurred
TIME_BAD   - clock not synchronized

If the system call fails the return value is one of the following errno values:

-EFAULT ebx doesn't points to writiable memory block.
-EINVAL An attempt is made to set buf.offset to a value outside 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 the range 900000/Hz to 1100000/Hz, where Hz is the system timer interrupt frequency.
-EPERM buf.mode is non-zero and the caller does not have sufficient privilege. Under Linux the CAP_SYS_TIME capability is required.

Remarks

Only a superuser may set any parameters. Ordinary users are restricted to a zero value for mode selector.

Compatibility

n/a