2012-08-17 18 views
10

Linuxでカーネルモジュールを開発する場合、C標準ライブラリを使用することはできません。
しかし、私はstrcat()のようないくつかの一般的な機能を使用する必要がある場合、どこに行かなければなりませんか?Linuxカーネルのstdlib.h代替?

答えて

9

をご希望の場合は、Linuxカーネルに実装されていないものは何でも私はstrcpyを行うことができ、あなたは自分自身を実装するか、別のオープンソースのカーネルモジュールから借りる必要があります。しかし、strcatがカーネルに実装されていることがわかります。

kernel APIのマニュアルを参照してください。具体的には一般的な質問のBasic C Library Functionsセクション、具体的な質問のString Manipulationセクションはstrcatです。

linux/string.hを含めると便利です。

カーネルAPIのドキュメントが実際に関数を取得するためにインクルードする必要があるヘッダーファイルを表示しない理由はわかりません。しかし、何かを探しているなら、カーネルのさまざまな部分で共有されている関数があれば、ヘッダーファイルが移動する場所になるので、検索を/include/linuxに制限することができます。

/include/linux以外のヘッダーファイルには、ヘッダーと同じディレクトリにあるソースファイルの定義のみが含まれています。例外は/arch/.../includeであり、プラットフォームに依存しないヘッダーの代わりにアーキテクチャ固有のヘッダーが含まれます。

+0

これらの種類の機能が保持されているヘッダファイルのリストはありますか? (あなたが 'linux \ string.h'と言ったように) – Fairview

+0

@Fairview:私が見つけることができなかった、それは奇妙です。カーネルAPIで必要な機能を見つけて、それを '/ include/linux'で検索する必要があるでしょう。私は、カーネルのヘッ​​ダーファイルについての答えと、 '/ include/linux'とそのサブディレクトリに検索を制限する理由について、より詳しく説明しました。 – indiv

-1

申し訳ありません@eq - 別の機能を考えています。

なぜ

void (char *d, const char *s); 
{ 
    if (*d) 
    { 
     for (; *d; ++d) {} ; 
     --d; 
    } 
    strcpy(d, s); 
} 

あなたは

+0

@indiv - 思考は正しいです。これらの機能は、毎日習得することができます。 –

+0

文字列関数がライブラリを必要とするにもかかわらず、私たちはどれほど満足していますか? –

+0

... LinuxカーネルはC言語で書かれていますか? –

関連する問題