2012-06-04 5 views
2

코드 조각이 있습니다. 시간을 초 단위로 계산하고 싶습니다. jiffies에서 시간을 얻지 만 어떻게 초 단위로 변환 할 수 있습니까? 내가 얻고Jiffies - 초를 계산하는 방법?

#include <linux/module.h> 
#include <linux/kernel.h> 
#include <linux/jiffies.h> 
#include <linux/timer.h> 
unsigned long js, je, tet; 
int netblock_init_module(void){ 
    js = jiffies; 
    printk("\n[Jiffies start Time : %lu]\nModule Started.\n", js); 
    return 0; 
} 

void netblock_cleanup_module(void) { 
    je = jiffies; 
    printk("\n[Jiffies End Time : %lu]\nModule Removed.\n", je); 
    tet = je - js; 
    printk("\nEnd Time [%lu] - Start Time [%lu]: \nTotlal elapsed Time [%lu]\n",js,je, tet); 

} 

module_init(netblock_init_module); 
module_exit(netblock_cleanup_module); 

MODULE_LICENSE("GPL"); 
MODULE_DESCRIPTION("JIFFIES EXAMPLE"); 
MODULE_AUTHOR("RAHEEL"); 

출력이 좋아입니다 : 여기

내 커널 코드

$ insmod 명령 jiffexample.ko

[jiffies로 시작 시간 : 13363583]를

모듈 시작

$의 rmmod를 jiffexample.ko

[jiffies를 종료 시간 : 13361588]

모듈 제거되었습니다.

종료 시간 13,361,588 - 시작 시간 1,336,358

[1605]

지금 내가 초에서이 경과 시간 1605 변환하는 방법의 수 .. 초 단위로 변환 된 시간을 얻으려면 총 경과 시간? 또는 양자 택일로 jiffies가 얼마나 많은지 말해 줄 수 있습니까? http://www.kernel.org/doc/man-pages/online/pages/man7/time.7.html 가입일

답변

8

:

순식간의 크기는 커널 HZ 상수 값에 의해 결정된다.

HZ 값은 커널 버전 및 하드웨어 플랫폼에 따라 다릅니다. i386에서 상황은 다음과 같습니다 : 2.4.x까지의 커널에서 HZ는 100이었고 jiffy 값은 0.01 초였습니다. 2.6.0부터 HZ를 1000으로 올려서 0.001 초를 기록했습니다. 커널 2.6.13부터 HZ 값은 커널 구성 매개 변수이며 100, 250 (기본값) 또는 1000 일 수 있으며 각각 0.01, 0.004 또는 0.001 초의 jiffies 값을 생성 할 수 있습니다. 커널 2.6.20부터 추가 주파수를 사용할 수 있습니다 : 300, 일반적인 비디오 프레임 속도 (PAL, 25 HZ, NTSC, 30 HZ)에 대해 균등하게 나눕니다.

그냥 HZ로 나누십시오.

0

HZ으로 나누는 것 외에도, jiffies_to_timeval 함수를 사용할 수 있습니다.
초 및 초 단위의 구조를 제공합니다.
마이크로 초는 항상 1000000/HZ의 배수입니다.

jiffies_to_msecs 또는 jiffies_to_usecs


아래의 모든 변환 루틴 :에서

은/리눅스/jiffies를 포함하여 사용 사례를 들어

8

, 당신도 사용할 수 있습니다.h

... 
/* 
* Convert various time units to each other: 
*/ 
extern unsigned int jiffies_to_msecs(const unsigned long j); 
extern unsigned int jiffies_to_usecs(const unsigned long j); 
extern unsigned long msecs_to_jiffies(const unsigned int m); 
extern unsigned long usecs_to_jiffies(const unsigned int u); 
extern unsigned long timespec_to_jiffies(const struct timespec *value); 
extern void jiffies_to_timespec(const unsigned long jiffies, 
          struct timespec *value); 
extern unsigned long timeval_to_jiffies(const struct timeval *value); 
extern void jiffies_to_timeval(const unsigned long jiffies, 
          struct timeval *value); 
extern clock_t jiffies_to_clock_t(unsigned long x); 
extern unsigned long clock_t_to_jiffies(unsigned long x); 
extern u64 jiffies_64_to_clock_t(u64 x); 
extern u64 nsec_to_clock_t(u64 x); 
extern u64 nsecs_to_jiffies64(u64 n); 
extern unsigned long nsecs_to_jiffies(u64 n); 
... 
관련 문제