7.7. 快速参考.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.7. 快速参考

7.7. 快速参考 7.7. 快速参考 本章介绍了下⾯的符号. 7.7.1. 时间管理 #include linux/param.h HZ HZ 符号指定了每秒产⽣的时钟嘀哒的数⽬. #include linux/jiffies.h volatile unsigned long jiffies; u64 jiffies 64; jiffies_64 变量每个时钟嘀哒时被递增; 因此, 它 每秒递增 HZ 次. 内核代码⼏乎常常 引⽤ jiffies, 它在 64-位平台和 jiffies_64 相同并且在 32-位平台 它低有效的⼀半. int time after(unsigned long a, unsigned long b); int time before(unsigned long a, unsigned long b); int time after eq(unsigned long a, unsigned long b); int time before eq(unsigned long a, unsigned long b); 这些布尔表达式以⼀种安全的⽅式⽐较 jiffies, 没有万⼀计数器溢出的问题和不需要存 取 jiffies_64 . u64 get jiffies 64(void); 获取 jiffies_64 ⽽没有竞争条件. #include linux/time.h unsigned long timespec to jiffies(struct timespec *value); void jiffies to timespec(unsigned long jiffies, struct timespec *v unsigned long timeval to jiffies(struct timeval *value); void jiffies to timeval(unsigned long jiffies, struct timeval *val 在 jiffies 和其他表⽰之间转换时间表⽰. #include asm/msr.h rdtsc(low32,high32); rdtscl(low32); rdtscll(var32); x86-特定的宏定义来读取时戳计数器. 它们作为 2 半 32-位来读取, 只读低⼀半, 或者全 部读到⼀个 long long 变量. #include linux/timex .h cycles t get cycles(void); 以平台独⽴的⽅式返回时戳计数器. 如果 CPU 没提供时戳特性, 返回 0 . #include linux/time.h unsigned long mktime(year, mon, day, h, m, s); 返回⾃ Epoch 以来的秒数, 基于 6 个 nsigned int 参数. void do gettimeofday(struct timeval *tv); 返回当前时间, 作为⾃ Epoch 以来的秒数和微秒数, ⽤硬件能提供的最好的精度. 在⼤ 部分的平台这个解决⽅法 ⼀个微秒或者更好, 尽管⼀些平台只提供 jiffies 精度. struct timespec current kernel time(void); 返回当前时间, 以⼀个 jiffy 的精度. 7.7.2. 延迟 #include linux/wait.h long wait event interruptible timeout(wait queue head t *q, condit 使当前进程在等待队列进⼊睡眠, 安装⼀个以 jiffies 表达的超时值. 使⽤ sched le_timeo t( 下⾯) 给不可中断睡眠. #include linux/sched.h signed long schedule timeout(signed long timeout); 调⽤调度器, 在确保当前进程在超时到的时候被唤醒后. 调⽤者⾸先必须调⽤ set_c rret_state 来使⾃⼰进⼊⼀个可中断的或者不可中断的睡眠状态. #include linux/delay .h void ndelay(unsigned long nsecs); void udelay(unsigned long usecs); void mdelay(unsigned long msecs); 引⼊⼀个整数纳秒, 微秒和毫秒的延迟. 获得的

文档评论(0)

ayangjiayu4 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档