시스템의 클럭 소스를 확인하는 방법은 무엇입니까?

시스템의 클럭 소스를 확인하는 방법은 무엇입니까?

커널 코드에 따라 타이밍은 클록 소스를 jiffies로 초기화합니다.

/*
 * timekeeping_init - Initializes the clocksource and common timekeeping values
 */
void __init timekeeping_init(void)
{
...
clock = clocksource_default_clock();
...
}

struct clocksource * __init __weak clocksource_default_clock(void)
{
    return &clocksource_jiffies;
}

그러나 새로운 클럭 소스가 감지되면 타이밍이 이를 대체할 것이라고도 말합니다.

/**
 * timekeeping_notify - Install a new clock source
 * @clock:      pointer to the clock source
 *
 * This function is called from clocksource.c after a new, better clock
 * source has been registered. The caller holds the clocksource_mutex.
 */

이제 "date" 명령을 입력하면 결국 시계 소스에서 시스템 시간을 가져오게 된다는 것을 알았습니다. 내가 사용하고 있는 클럭 소스가 무엇인지 알고 싶습니다. 너무 빠른가요?

답변1

찾았어요.

클럭 소스는 다음 경로에서 찾을 수 있습니다.

/sys/devices/system/clocksource/clocksource0

그림과 같이:

-r--r--r--. 1 root root 4096 Jul 30 16:24 available_clocksource
-rw-r--r--. 1 root root 4096 Jul 30 16:32 current_clocksource
drwxr-xr-x. 2 root root    0 Jul 30 16:24 power
lrwxrwxrwx. 1 root root    0 Jul 28 11:40 subsystem -> ../../../../bus/clocksource
-rw-r--r--. 1 root root 4096 Jul 28 11:40 uevent
--w-------. 1 root root 4096 Jul 30 16:24 unbind_clocksource

available_clocksource사용 가능한 모든 클럭 소스를 표시합니다.

current_clocksource현재 시스템에서 사용 중인 클럭 소스를 표시합니다.

echo xxx > current_clocksource현재 클럭 소스를 변경하는 데 사용합니다 ( jiffies기본 클럭 소스이며 에는 없지만 available_clocksource설정할 수 없습니다. 시스템에서 고해상도가 아닌 클럭 소스 설정을 허용하지 않는 것 같습니다).

관련 정보