节拍 :两次时钟中断的间隔就称为节拍( tick ) 。可以看到,节拍等于节拍率分之一。
jiffies: 全局变量 jiffies 用来记录系统自启动以来产生的节拍总数 。 通过 jiffies/HZ 就可获取系统自启动以来的秒数。
/* pc下驱动, arm开发板上驱动要添加<linux/kernel.h> 等头文件*/
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/cdev.h>
#include <linux/device.h>
#include <asm/io.h>
#include <asm/system.h>
#include <asm/uaccess.h>
struct sec_dev
{
struct cdev cdev;
atomic_t count;
struct timer_list s_timer;
};
static int sec_major = 0;
static struct sec_dev *sec_devp;
static struct class *sec_class;
static struct device *sec_device;
static void sec_timer_handle(unsigned long arg)
{
mod_timer(&sec_devp->s_timer, jiffies+HZ);
atomic_inc(&sec_devp->count);
}
static int sec_open(struct inode *inode, struct file *filp)
{
struct sec_dev *devp;
devp = container_of(inode->i_cdev, struct sec_dev, cdev);
filp->private_data= devp;
init_timer(&devp->