2012-01-10 2 views
0

が返された場合のカーネルの関数は、do_gettimeofdayから「1/1/1900」の秒数に「64ビットの符号なし固定「ポイント番号」をRFC 1305に記載されていますか?01/1/1900から秒数を返す関数

+0

私は冗談を言っていますが、実際には**あなたのプロジェクトを**あなたのために段階的にビルドすることを期待していますか?あなたの最後の質問は、あなたにUnix Epoch時間に変換する答えを与えました。確かに2つの数字を加算/減算することはあなたの知的能力の範囲内ですか? (また、参照してください:http://stackoverflow.com/questions/8805832/number-of-seconds-from-1st-january-1900-to-start-of-unix-epoch) – Piskvor

+0

もちろん、私は期待していません誰も私のために何かを構築する!しかし、これは質疑応答サイトであり、私は知っている限り、2つの関連する質問をすばやく連続して質問することに反対するルールはありません。私が間違っているなら、私を修正してください。 – grifaton

+0

それは、それ自体が間違っているわけではありませんが、まず問題を自分で解決しようとするのが良いマナーです。そして、あなたが試したこと、働いたこと、しなかったこと、そして方法を示しています。 「#1」で何の努力もせずに、一歩一歩一歩一歩一歩一歩一歩もどると助けを求めるのは、一口大きさの塊に分かれて「コードを込めてください」と非常によく似ています。私はこれがあなたのケースだと言っているわけではありませんが、#2がなければ、コピーアンドパターの大群から離れては分かりません。 – Piskvor

答えて

0

いくつかの問題があります。しかし、あなたのカーネルが、このような検索を試してみてください やっているかを見るために:

http://www.google.com/codesearch#search/&q=adjtimex%20lang:%5Ec$&type=cs 

これは直接カーネルの内部時間あなたのボックスのデータを保持を読み取り、SETINGためのコードを返す必要があります。多くのリスティングをスクロールする必要があります。

nptは、1900年1月1日以降、2つの32ビット符号なし整数2つを秒単位で使用します。トラップされる割合は、ntpとtimeval構造体で異なります。

問題の1つは、32ビットまたは64ビットの時間を使用していますか?& date api's?開始時刻と終了時刻注

#include <time.h> 
#include <stdio.h> 
void ptime(char *dest, time_t *lt) 
{ 
    strftime(dest, 80, "%c", localtime(lt)); 
    printf("%08x(%010u): %s\n", *lt, *lt, dest); 
} 

int main(void) 
{ 
    char tmp[80]={0x0}; 
    time_t lt[8]={1, 0xffffffff, 0x7fffffff, 0x80000000, 0}, *p=lt; 
    while(*p) ptime(tmp, p++); 
    return 1; 
} 
output: 
00000001(0000000001): Thu Jan 1 00:00:01 1970 
ffffffff(4294967295): Wed Dec 31 23:59:59 1969 
7fffffff(2147483647): Tue Jan 19 03:14:07 2038 
80000000(2147483648): Fri Dec 13 20:45:52 1901 

(これはTZ = UTCを使用して、32ビットLinux出力)1900は32ビットAPIに表現できないことに注意してください。彼らは1900年とは関係がありません.64ビットAPIも1900年を別の方法で見逃しています。

ntpプロトコルは、独自のドラムのビートに移動します。それは0秒で始まり、2037年のどこかで(Y2K問題のような)時間が「使い果たされる」でしょう。

私はCコードxntpまたはntpを検索し、それらの表現を使用しますが、あなたのLinuxタイムを使って何でもする& date api。あなたは、あなたが信頼できるものを得るためにntpサーバに問い合わせる必要があります。