カーネルとユーザー空間の共通コード

カーネルとユーザー空間の共通コード

私は Linux プロジェクトに取り組んでいます。カーネルとユーザー空間の両方に共通するコード (具体的には構造体) とヘッダー ファイル (独自の実装) を用意したいと考えています。これを実装する方法を教えていただけますか?

答え1

簡単な答えは、プロジェクトの両方の(別々にコンパイルされた)部分にヘッダーを含めることです。これは好きなように行うことができます。明らかなディレクトリ階層は次のようになります。

project/
    userspace_stuff/
    kernal_stuff/
    inc/
       project_namespace/

inc/project_namespaceオプションです。ヘッダーをトップレベルに配置し、2 つのサブディレクトリのソース ファイルで使用することもできます。個人的には、インクルードで相対パスを使用すると煩雑になる可能性があるため、ディレクトリと絶対パス ( )#include "../myheader.h"を使用することをお勧めします。これは、トップレベルの makefile を次のように構成することで実現できます。inc#include <project_namespace/myheader.h>

INC = -Iinc
CFLAGS += $(INC)

関連情報