A1:
MODULE_NAME := common
$(MODULE_NAME)-objs := debug.o init.o //source code
obj-m:=$(MODULE_NAME).o // module name
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
.PHONY:clean
clean:
rm -f *.o *.ko Module.markers Module.symvers $(modulename).mod.c *~;
debug.h (debug.c)
#ifndef DEBUG_H
#define DEBUG_H
#include <linux/kernel.h>
#ifdef MY_DEBUG
#define my_debug(fmt, args...) printk(KERN_DEBUG "%s: " fmt, __func__, ## args)
#define my_warning(fmt, args...) printk(KERN_ERR "%s: " fmt, __func__, ## args)
#else
#define my_debug(fmt, args...)
#define my_warning(fmt, args...)
#endif
#define my_error(fmt, args...) printk(KERN_ERR "%s: " fmt, __func__, ## args)
#endif
init.c#include <linux/init.h>
#include <linux/module.h>
#include "debug.h"
MODULE_LICENSE("GPL");
static int common_init(void){
return 0;
}
static void common_exit(void){
}
module_init(common_init);
module_exit(common_exit);