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/files에 추가하는 것이 좋습니다.