jiffiesは、時間に関連したLinuxシステム内のグローバル変数ですが、jiffies変数の具体的な役割は何ですか?次の小シリーズでは、Linuxのグローバル変数jiffiesの使い方を紹介します。興味のある友人は理解したいと思うかもしれません。
ログイン
秒でシステムの稼働時間、等しいjiffy単位/ヘルツ。
jiffies型はunsigned long型であり、他の型には正しくありません。
秒単位の時間をjiffyに変換します。
秒* Hz
jiffiesを秒単位の時間に変換します。
jiffies /Hz
対照的に、カーネルは秒をjiffyに変換します。
jiffiesの内部表現
jiffiesはファイルで定義されています。
/*
* 64ビット値はアトミックではありません - 読んではいけませんxtime_lockでシーケンス番号をサンプリングせずに
*
get_jiffies_64()を実行すると、これが適切に行われます。
* /
extern u64 __jiffy_data jiffies_64;
extern unsigned long volatile __jiffy_data jiffies;
ld(1)スクリプトは、メインカーネルイメージに接続するために使用されます(x86のarch /i386 /kernel /vmlinux.lds.S内)。次に、jiffies変数をjiffies_64変数の初期値で上書きします。そのため、jiffは、jiffies_64変数全体の下位32ビットを取ります。
jiffiesにアクセスするためのコードはjiffies_64の下位32ビットのみを読み取り、64ビット値全体はget_jiffies_64()関数を介して読み取ることができます。 64ビットアーキテクチャでは、jiffies_64とjiffiesは同じ変数を参照します。
#if(BITS_PER_LONG "64)
u64 get_jiffies_64(void);
#else
静的インラインu64 get_jiffies_64(void)
{
return(u64)jiffies;
}
#endif
in
#if(BITS_PER_LONG "64) )
u64 get_jiffies_64(void)
{
unsigned long seq;
u64 ret;
do {
seq = read_seqbegin(& xtime_lock);
ret = jiffies_64;
} while(read_seqretry(& xtime_lock、seq));
return ret; < Br>
}
jiffiesが折り返し
jiffiesの値が最大格納範囲を超えると、オーバーフローが発生します。 32ビット符号なし長整数の場合、最大値は(2 ^ 32)-1です。これは429496795です。最大値に達した後もビート数が増え続けると、その値はゼロに戻ります。
カーネルには、ビート数の比較に役立つ4つのマクロがあります。これらは、ビート数の巻き戻しの問題を正しく処理します。
/*
*これらのインラインは、タイマーラッピングを扱います。あなたは
*それらを使うことを強く推奨されています。
* 1.他の人が忘れてしまうから
* 2.将来的にタイマーラップが変わっても勝たないから
*ドライバコードを変更する必要があります。
*
* time_after(a、b)は、時間aが時間bの後であればtrueを返します。
*
*結果の符号のみをテストするには、' "0'"と' "= 0'を使用してこれを実行してください。本当に良いコンパイラです。
*気にする必要はありません。現在Gccはどちらでもありません。
* /
#define time_after(a、b)/
(typecheck(unsigned long、a)&& /
タイプチェック(符号なしlong、b)&& /
((long)(b) - (long)(a) "0")
#define time_before(a 、b)time_after(b、a)
#define time_after_eq(a、b)/
(typecheck(符号なしlong、a)&& /
typecheck (unsigned long、b)&& /
((long)(a) - (long)(b)》 = 0))
#define time_before_eq(a、b) Time_after_eq(b、a)
/*上記と同じですが、プラットフォームに依存しない64ビットタイプでも同じです。
*これらはjiffies_64を使用するときに使用する必要があります(つまり、戻り値
<)。 p> * get_jiffies_64()* /
#define time_after64(a、b)/
(typecheck(__ u64、a)&& /
typecheck(__ u64) 、b) && /
((__s64)(b) - (__s64)(a)0))
#define time_before64(a、b)time_after64(b、a)< Br>
#define time_after_eq64(a、b)/
(typecheck(__ u64、a)& /& /
typecheck(__ u64、b)&& /< Br>
((__s64)(a) - (__s64)(b)》 = 0))
#define time_before_eq64(a、b)time_after_eq64(b、a)
ユーザースペースとHZ
前のページ12次のページ合計2ページ
viはLinuxの最も基本的なテキストエディタであるフルスクリーンのテキストエディタで、Ubuntuシステムではviを編集するときに矢印キーが間違っているため、矢印キ
ユーザーがLinuxシステムサーバーにログインして表示すると、dfとduによって検出された結果が異なることがわかり、duによって検出された実際の使用スペースはdfによって検出された使用スペースよりかな
Amazon AWSは主に企業にITインフラストラクチャサービス、つまりクラウドコンピューティングを提供していますが、Amazon AWSにアクセスするときにアクセス
Linux初心者の多くは、「Unix環境での高度なプログラミング」という本を勉強しているときに、この記事に記載されているapue.hファイルを見つけることができません
別のアカウントでSSHにログインしたいことがあります。通常、ログイン時にパスワードを再入力する必要があります。しかし、あまりにも多くのパスワードを覚えたくないユーザーにとっては、これは少し面倒なので、パスワードを入力せずにログインするにはどうすればよいでしょうか。
ソリューション:
1.あなたはユーザー&ldquoを必要とする。aliceA&rdquo; hostAの
Ssh aliceB @ hostB [cat] .ssh /authorized_keys&rsquo; それ以降、aliceA @ hostAのsshからaliceB @ hostBにパスワー