Kernel Module Programming
Module 기본 구조
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void)
{
printk("<1>Hello world\n");
return 0;
}
void cleanup_module(void)
{
printk(KERN_ALERT "Bye World\n");
}
※ init_module()은 모듈 추가(insmod) 시, cleanup_module()은 모듈 삭제(rmmod) 시 호출 됨
아래와 같이 헤더로 linux/init.h 를 포함하고, module_init/module_exit 함수를 통해 init_module()/cleanup_module() 함수의 이름을 자유롭게 설정할 수 있다.
#include <linux/module.h>
#include <linux/kernel.h>
#inlcude <linux/init.h>
int my_init(void)
{
printk(KERN_ALERT"Hello World\n");
return 0;
}
void my_exit(void)
{
printk(KERN_ALERT"Bye World\n");
}
module_init(my_init);
module_exit(my_exit);
Device 를 시스템에서 사용하기 위해서는 우선 디바이스 노드를 만들어야 한다.
$ sudo mknod /dev/<device_name> <major_num> <minor_num>
$ sudo chmod 666 /dev<device_name>
참조: https://www.joinc.co.kr/w/Site/Embedded/Documents/LinuxKernelModuleProg
'Programming > Linux Kernel' 카테고리의 다른 글
cross kernel debugging (0) | 2020.06.19 |
---|---|
Linux kernel module compile from linux source (0) | 2019.01.17 |
Kernel Version Check (0) | 2018.05.23 |
Kernel 프로그래밍 - printk (0) | 2017.06.20 |