jiffies的含义为记录系统的当前时间。内核中定义了jiffies变量来记录从系统启动到当前时刻系统时钟所产生的tick数。
jiffies变量是一个无符号整型数值
文件在读取/proc/jiffies文件时报告jiffies的当前值
ssize_t proc_read(struct file* file, char* usr_buf,
size_t count, loff_t* pos)
{
int rv = 0;
char buffer[BUFFER_SIZE];
static int completed = 0;
if (completed) {
completed = 0;
return 0;
}
completed = 1;
rv = sprintf(buffer, "%lu\n", jiffies);
/* copies kernel space buffer to user space usr buf */
raw_copy_to_user(usr_buf, buffer, rv);
return rv;
}
文件报告自加载内核模块以来经过的秒数。这将涉及使用jiffies值以及HZ频率
ssize_t proc_read(struct file* file, char* usr_buf,
size_t count, loff_t* pos)
{
int rv = 0;
int seconds = 0;
int old_jiffies = jiffies;
seconds = (jiffies - old_jiffies)/hz;
char buffer[BUFFER_SIZE];
static int completed = 0;
if (completed) {
completed = 0;
return 0;
}
completed = 1;
rv = sprintf(buffer, "%lu\n", seconds);
/* copies kernel space buffer to user space usr buf */
raw_copy_to_user(usr_buf, buffer, rv);
return rv;
}
%p输出指针
%d输出有符号的10进制整型
%u输出无符号10进制整型
%ld输出有符号的长整型
%lu输出无符号的长整型
用错输出类型导致长时间无响应,Contro + c强制停止当前运行线程。