sched clock
2016-06-12 17:15
253 查看
从各自的CNTPCT_EL0
中获取。
CNTPCT_EL0 : PhysicalTimer Count register.
kernel-3.18/arch/arm64/include/asm/arch_timer.h
107static inline u64arch_counter_get_cntpct(void)
108{
109 u64 cval;
110
111 isb();
112 asm volatile("mrs %0, cntpct_el0" :"=r" (cval));
113
114 return cval;
115}
kernel-3.18/kernel/time/sched_clock.c
unsigned long longnotrace sched_clock(void)
{
u64 epoch_ns;
u64 epoch_cyc;
u64 cyc;
unsigned long seq;
if (cd.suspended)
return cd.epoch_ns;
do {
seq =raw_read_seqcount_begin(&cd.seq);
epoch_cyc = cd.epoch_cyc;
epoch_ns = cd.epoch_ns;
} while (read_seqcount_retry(&cd.seq, seq));
cyc =
read_sched_clock();
cyc = (cyc - epoch_cyc) & sched_clock_mask;
return epoch_ns + cyc_to_ns(cyc, cd.mult, cd.shift);
}
crash-arm64-odm> pread_sched_clock
read_sched_clock = $4 =(u64 (*)(void)) 0xffffffc000843600 <arch_counter_get_cntpct>
u64 sched_clock_cpu(intcpu)
{
if (unlikely(!sched_clock_running))
return 0;
return sched_clock();
}
u64 cpu_clock(int cpu)
{
return sched_clock();
}
u64 local_clock(void)
{
return sched_clock();
}
相关文章推荐
- MIPS指令集
- RabbitMQ安装与使用
- 非关系型的数据库NoSQL
- JAVA 中线程队列BlockingQueue的使用
- libuv学习笔记(7)
- Ext Js MVC系列一 环境搭建和MVC框架整体认识
- 时间复杂度为O(N*logN)的排序算法——归并排序、快速排序、堆排序
- jQuery ajax json 数据的遍历代码
- 实用的C++代码片段(1)-- 规范化通过getline获取的输入
- leetcode 24. Swap Nodes in Pairs
- 我的牙齿到底出了什么问题?
- Ejabberd作为推送服务的优化手段
- android 焦点控制及运用
- 用Golang实现基于时间轮算法的定时器
- 因incarnation导致恢复时出现RMAN-06026错误
- deep learning---MatConvent框架的简单介绍(一)
- Apache CarbonData
- Java 程序开机自启
- Leetcode-44. Wildcard Matching
- css 3d