2017-05-28 5 views
0

私はピントのソースを読み込もうとしています。 init.cファイルのmain()を呼び出した後、thread_init()が呼び出されると、mainメソッドを含むページの先頭にポインタが移動します。 thread.cファイルのinit_threadメソッドのスレッド初期化に関連するピントのスレッディング問題

memset(t、0、sizeof * t)を呼び出します。

私は、main()メソッドのコードを含むメモリの内容を明らかにする必要がありますか?

ヘルプは、私はあなたのプログラミングのスキルは、当分の間、これに取り組んで禁止怖い.....

答えて

-1

を必要としていました。特にC言語の入門コースを再訪することを強くお勧めします。

私はあなたが意味推測:だから

init_thread (initial_thread, "main", PRI_DEFAULT); 

、のはinit_threadを見てみましょう:1の場合

init_thread (struct thread *t, const char *name, int priority) 

、我々は簡単に "メイン" を参照して、スレッドの名前です。 mainという名前の関数とは関係ありません。

{ 
    enum intr_level old_level; 

    ASSERT (t != NULL); 
    ASSERT (PRI_MIN <= priority && priority <= PRI_MAX); 
    ASSERT (name != NULL); 

    memset (t, 0, sizeof *t); 

memsetは、最初のパラメータであるtが指すメモリ上にあります。起動から、initial_threadが指し示すメモリであることがわかります。

t->status = THREAD_BLOCKED; 
    strlcpy (t->name, name, sizeof t->name); 

ここで、文字列mainはstrlcpyで置き換えられます。

+0

最初に私はmemset、strlcpyなどの関数の説明を求めませんでした。私はすでに理解しています。この質問はpintosコードベースに関連していたので、質問には文脈が付いています。質問に答える前に文脈を考慮してください。 – ramasCoder

+0

おい、真剣に。ちょうど私はこれらのコードサンプルをどこから入手したと思いますか?あなたは傾いているようです。私はこれを合理的に見てみることをお勧めします。私はその質問に完全に答えました。 –

関連する問題