close
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/sheratea/1453604545-3428869332_n.png)
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/sheratea/1453604620-1134967622_n.png)
step:1. #vi task_let.c
#include <linux/kernel.h>
#include <linux/module.h>
#include <asm/uaccess.h> /* for put_user */
#include <linux/interrupt.h>
#define DEVICE_NAME "taskQ"
void mytl_fun (unsigned long t)
{
// To do: implement your defered codes
if(in_interrupt())
printk("in interrupt context\n");
printk("i am in mytq_fun,jiffies=%ld\n",jiffies);
}
DECLARE_TASKLET(my_tasklet, mytl_fun, 0);
int init_module(void)
{
printk ("queued task at jiffies = %ld\n", jiffies );
// To do : schedule a tasklet
tasklet_schedule(&my_tasklet);
printk("TL schedule jiffies =%ld\n",jiffies);
return 0;
}
void cleanup_module(void)
{
printk ("I cleaned up, jiffies = %ld\n", jiffies );
}
在PuTTY上
step:2. #make
在VM上
step:3.#echo 7 > /proc/sys/kernel/printk
在PuTTY上
step:4. #insmod ./task_let.ko
文章標籤
全站熱搜