[linux] jiffies를 밀리 초로 변환


Answers

Jiffies는 Linux 2.4에서 하드 코딩되어 있습니다. 아키텍처 특정 param.h 정의 된 HZ 의 정의를 확인하십시오. 이것은 종종 100Hz입니다. 매 10ms마다 1 틱 (1 초 / 100 틱 * 1000 ms / 초)입니다.

이것은 i386에 해당하며 HZ는 include/asm-i386/param.h 정의됩니다.

include/linux/time.h timespec_to_jiffiesjiffies_to_timespec 이라는 include/linux/time.h 가 있습니다. timespec_to_jiffiesjiffies_to_timespecstruct timespecjiffies 사이에서 앞뒤로 변환 할 수 있습니다.

    #define MAX_JIFFY_OFFSET ((~0UL >> 1)-1)

    static __inline__ unsigned long
    timespec_to_jiffies(struct timespec *value)
    {
            unsigned long sec = value->tv_sec;
            long nsec = value->tv_nsec;

            if (sec >= (MAX_JIFFY_OFFSET / HZ))
                    return MAX_JIFFY_OFFSET;
            nsec += 1000000000L / HZ - 1;
            nsec /= 1000000000L / HZ;
            return HZ * sec + nsec;
    }

    static __inline__ void
    jiffies_to_timespec(unsigned long jiffies, struct timespec *value)
    {
            value->tv_nsec = (jiffies % HZ) * (1000000000L / HZ);
            value->tv_sec = jiffies / HZ;
    }

참고 : 이 정보는 버전 2.4.22에서 확인했습니다.

Question

Linux에서 수동으로 jiffies를 밀리 초 또는 그 반대로 변환하는 방법은 무엇입니까? 나는 커널 2.6이이 기능을 가지고 있지만 2.4 (숙제)에 대해 연구 중이다. 그리고 코드에서 2.4를 정의했는지 전혀 알 수없는 많은 매크로 상수를 사용한다.







Related