3

私はコードを持っています、私は秒で時間を計算したいです..私は瞬間で時間を取得していますが、どうすればそれを秒で変換できますか?

これが私のカーネルコードです:

#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]

モジュールが削除されました。

終了時刻13361588-開始時刻1336358

総経過時間[1605]

今、私は秒単位で変換された時間を取得したいです..この経過時間を秒単位で変換することはどのように可能ですか?または、1秒間にいくつの瞬間があるか教えていただけますか?

4

3 に答える 3

9

ユースケースでは、次のいずれかを使用できます。

jiffies_to_msecsまたはjiffies_to_usecs


以下のすべての変換ルーチン:

include / linux/jiffies.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);
...
于 2012-06-05T13:59:10.050 に答える
8

http://www.kernel.org/doc/man-pages/online/pages/man7/time.7.htmlから:

jiffy のサイズは、カーネル定数 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で割るだけです。

于 2012-06-04T17:54:39.863 に答える
0

で割るだけでなくHZ、この関数jiffies_to_timevalを使用することもできます。
それは秒とマイクロ秒の構造を与えます。
マイクロ秒は常にの倍数になり1000000/HZます。

于 2012-06-05T08:06:23.147 に答える