cc_newreno.c
(にあります/usr/src/sys/netinet/cc
)というソースファイルのコピーを作成し、それを変更してcc_newreno_mod.c
FreeBSD(NewReno)のデフォルトの輻輳制御アルゴリズムを変更しようとしています。
私がいくつかの修正を行ったとしましょう。どうやってテストしますか?cc_newreno_mod.c
組み込みのCコンパイラを使用して直接コンパイルすると、いくつかのエラーが発生しますnetinet/cc/cc_module.h file not found
。
新しいカーネルを構築する必要がありますか?変更されたファイルのモジュールは自動的に生成されますか?それとも私が完全に間違っているので、別のアプローチを取るべきですか?
答え1
カーネルモジュールをコンパイルするには、Makefile
カーネルモジュールmakefileを作成して含める必要があります/usr/src/share/mk/bsd.kmod.mk
。たとえば、次のようになります。
# Note: It is important to make sure you include the <bsd.kmod.mk> makefile after declaring the KMOD and SRCS variables.
# Declare Name of kernel module
KMOD = module
# Enumerate Source files for kernel module
SRCS = module.c
# Include kernel module makefile
.include <bsd.kmod.mk>
最後に、makeを実行してコンパイルすると、正しくコンパイルされているかどうかをテストできます。
カーネルモジュール()には表示されませんが、リストされている/boot/kernel/*.ko
ため、sys/conf/files
変更を適用するにはカーネルを再コンパイルする必要があるようです。詳細については、次を参照してください。ページ。コピーなので、cc_newreno.c
元のコピーの名前を/usr/src/sys/netinet/cc/cc_newreno.c
別の名前に変更して保存し、そこに新しいコピーをコピーして再コンパイルできます。
答え2
netinetは現在カーネルモジュールではないため、変更されたファイルをsys / conf /ファイルに追加することをお勧めします。