【Linux设备驱动程序(第三版)】----延迟:超时(wait_event_interruptible_timeout)
jit.c
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/time.h>
#include <linux/timer.h>
#include <linux/proc_fs.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
#include <asm/hardirq.h>
#include <linux/sched.h>//jiffies
#include <linux/kernel.h>
#include <linux/types.h>//u64
#include <linux/fs.h>//file_operations, file
#include <linux/completion.h>
#include <asm/uaccess.h>//copy_to_user & copy_from_user
int delay = HZ;
enum jit_files {
JIT_BUSY,
JIT_SCHED,
JIT_QUEUE,
JIT_SCHEDTO
};
int jit_fn(char *buf, char **start, off_t offset, int len, int *eof, void *data)
{
unsigned long j0, j1;
wait_queue_head_t wait;
init_waitqueue_head(&wait);
j0 = jiffies;
j1 = j0 + del