#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/timer.h>
#include <linux/kthread.h>
struct timer_list my_timer1;
static void my_timer_func(unsigned long data)
{
int i = my_timer1.data;
printk("%d\n",i);
my_timer1.data = i+1;
my_timer1.expires = jiffies + HZ;
add_timer(&my_timer1);
}
static int ICC_init(void)
{
printk("%s\n",__FUNCTION__);
init_timer(&my_timer1);
my_timer1.function = my_timer_func;
my_timer1.data = 0;
my_timer1.expires = jiffies + HZ;
add_timer(&my_timer1);
return 0;
}
static void ICC_exit(void)
{
printk("Uninstall SC device OK\n");
del_timer(&my_timer1);
return;
}
module_init(ICC_init);
module_exit(ICC_exit);
MODULE_DESCRIPTION("Contact Card Driver");
MODULE_AUTHOR("Felix Mo");
#include <linux/kernel.h>
#include <linux/timer.h>
#include <linux/kthread.h>
struct timer_list my_timer1;
static void my_timer_func(unsigned long data)
{
int i = my_timer1.data;
printk("%d\n",i);
my_timer1.data = i+1;
my_timer1.expires = jiffies + HZ;
add_timer(&my_timer1);
}
static int ICC_init(void)
{
printk("%s\n",__FUNCTION__);
init_timer(&my_timer1);
my_timer1.function = my_timer_func;
my_timer1.data = 0;
my_timer1.expires = jiffies + HZ;
add_timer(&my_timer1);
return 0;
}
static void ICC_exit(void)
{
printk("Uninstall SC device OK\n");
del_timer(&my_timer1);
return;
}
module_init(ICC_init);
module_exit(ICC_exit);
MODULE_DESCRIPTION("Contact Card Driver");
MODULE_AUTHOR("Felix Mo");
MODULE_LICENSE("GPL");
Makefile
export
CROSS_COMPILE=arm-linux-
AR=$(CROSS_COMPILE)ar
ARCH=arm
LD=$(CROSS_COMPILE)ld
CC=$(CROSS_COMPILE)gcc
obj-m := test.o
KDIR := /opt/devkit8500/linux-2.6.32-devkit8500/
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -rf $(srcdir)*.o $(srcdir)*.mod.o $(srcdir)*.ko $(srcdir)*.mod.c *.o *.mod.o *.ko *.mod.c *.symvers *.order