Linux/Linux Device Driver

디바이스 드라이버 / 매개변수 지정

최재국 2020. 9. 1. 12:39

pi@raspberrypi:~/Documents/param $ nano param.c

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/moduleparam.h>

static short param1 = 0;
static unsigned short param2 = 0;
static int param3 = 0;
static unsigned int param4 = 0;
static long param5 = 0;
static unsigned long param6 = 0;
static char* param7 = NULL;

module_param(param1, short, 0);
module_param(param2, ushort, 0);
module_param(param3, int, 0);
module_param(param4, uint, 0);
module_param(param5, long, 0);
module_param(param6, ulong, 0);
module_param(param7, charp, 0);

static int hello_init(void)
{
   printk("Hello, world\n");
   printk("param1=%d\n", param1);
   printk("param2=%d\n", param2);
   printk("param3=%d\n", param3);
   printk("param4=%d\n", param4);
   printk("param5=%ld\n", param5);
   printk("param6=%ld\n", param6);
   printk("param7=%s\n", param7);

   return 0;
}

staitic void hello_exit(void)
{
   printk("Goodbye, world\n");
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_AUTHOR("icjk1003@gmail.com");
MODULE_LICENSE("GPL")

 

 

pi@raspberrypi:~/Documents/param $ nano Makefile

obj-m := param.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)

default:
       make -C $(KDIR) M=$(PWD) modules
clean:
       make -C $(KDIR) M=$(PWD) clean

 

pi@raspberrypi:~/Documents/param $ make

pi@raspberrypi:~/Documents/param $ lsmod

pi@raspberrypi:~/Documents/param $ sudo insmod param.ko param5=7777 param7="KOOK"

pi@raspberrypi:~/Documents/param $ lsmod

pi@raspberrypi:~/Documents/param $ dmesg

pi@raspberrypi:~/Documents/param $ sudo rmmod param.ko

pi@raspberrypi:~/Documents/param $ dmesg

 

성공..

 

매개변수를 넣지 않은 파라미터는 기존 초기화 값이 나온다.