/* hello.c */
#include <linux/init.h>(3)
#include <linux/module.h>
#include <linux/kernel.h>
static int __init(1) Hello_init(void)
{
pr_alert("Good morrow to this fair assembly.\n");
return 0 ;
}
static void __exit(2) hello_exit(void)
{
pr_alert("Alas, poor world, what treasure hast thou lost!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTIION("Greeting module");
MODULE_AUTHOR("William Shakespeare"); (4)
(1) __init : 커널 프로그래밍에서 초기와 함수에 써준다.
초기화 함수에서 "함수명 _init()" 로 해주는게 규칙
module_init()에 의해 실행된다.
__initdata : 커널 프로그래밍에서 변수 초기화에 써준다.
(2) __exit : 커널 프로그래밍에서 커널에 정적으로 컴파일 되거나 사용하지 않도록 unload 될때 불리는 함수에 써준다.
이 함수는 module_exit()에 의해 실행된다.
(3) #include <linux/000.h> : 커널 프로그래밍에서 사용하는 라이브러리가 있는 해더 파일. 일반적인 C라이브러리는 사용할 수 없다.
(4) MODULE_LICENSE() - 라이센스
MODULE_DESCRIPTION() - 설명
MODULE_AUTHOR() - 작성자
를 표기하는 데 사용한다.
'개발 > Linux' 카테고리의 다른 글
bash_profile bashrc 차이 (0) | 2021.03.22 |
---|---|
vi/vim의 유용한 기능 - html 문서로 변환하기 (0) | 2015.02.17 |
커널 관리 (0) | 2015.02.11 |
커널 모듈 (0) | 2015.02.11 |
파이프 - 프로세스 파이프, popen/pclose (0) | 2014.11.28 |