ADJTIMEX

Section: 리눅스 프로그램머 매뉴얼 (2)
Updated: 1997년 6월 30일
Index
Return to Main Contents
 

이름

adjtimex - 커널 클럭을 조율한다.  

사용법

#include <sys/timex.h>

int adjtimex(struct timex *buf);  

설명

Linux 는 David L. Mills' 의 클럭 조정 알고리즘을 사용한다. adjtimex 는 이 알고리즘으로 조정 파라미터들을 읽고 설정할수 있다.

adjtimextimex 구조체에 대한 포인터를 가지고 있고 필드 값들을 가지고 커널 파라미터들을 갱신하며 현재 커널 값을 가지고 있는 같은 구조체를 반환한다. 이 구조체는 다음과 같다:

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 필드는 설정된 파라미터가 무엇인지를 결정한다. 이것은 0 이나 다음 비트들의 bitwise-or 조합을 포함한다.

#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 */

일반 유저는 mode가 0 값만으로 제한되어 있다.

슈퍼 유저만이 어떤 파라미터들도 설정할수 있다.
 

반환값

성공시, adjtimex 는 클럭 상태를 반환한다:

#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 */

실패시, adjtimex 는 -1을 반환하고 errno를 설정한다.  

에러

EFAULT
buf 가 쓰기 가능한 메모리를 가리키고 있지 않다.
EPERM
buf.mode 가 non-zero이고 사용자는 슈퍼 유저가 아니다.
EINVAL
이 함수로 인한 시도가 -131071 에서 +131071 범위외의 값으로 buf.offset 를 설정하였거나 위에 나열한 것들 외의 값으로 buf.status 를 설정하였거나 900000/HZ 에서 1100000/HZ범위 외의 값으로 buf.tick 를 설정하였다. 여기서 HZ 는 시스템 타이머 인터럽트 주기이다.
 

호환

adjtimex 는 리눅스에 의존하며 호환성을 염두에 둔 프로그램에서는 사용해서는 안된다. SVr4 에는 비슷하지만 덜 일반적인 adjtime 시스템 함수가 있다.  

관련 항목

settimeofday(2)  

역자

정강훈 <skyeyes@soback.korent.net>, 2000년 8월 7일


 

Index

이름
사용법
설명
반환값
에러
호환
관련 항목
역자

This document was created by man2html, using the manual pages.
Time: 08:06:59 GMT, March 25, 2004