sched clock


看看各CPU使用哪个clock作为调度时钟?

 

从各自的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();

}

 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值