Re: [PATCH v2 3/3] oslat: Allow for arch specific counter frequency measurements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Mon, 13 Sep 2021, Nicolas Saenz Julienne wrote:

> Some architectures have special purpose registers to query the system
> counter's frequency. Let's use that when available.
> 
> Signed-off-by: Nicolas Saenz Julienne <nsaenzju@xxxxxxxxxx>
> --
> 
> Changes since v1:
>  - Use cleaner method to have generic and arch functions to measure
>    couter's freq
> 
>  src/oslat/oslat.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/src/oslat/oslat.c b/src/oslat/oslat.c
> index c90ec1a..5fce223 100644
> --- a/src/oslat/oslat.c
> +++ b/src/oslat/oslat.c
> @@ -74,6 +74,16 @@ static inline void frc(uint64_t *pval)
>  # elif defined(__aarch64__)
>  #  define relax()          __asm__ __volatile("yield" : : : "memory")
>  
> +#define arch_measure_counter_mhz
> +static unsigned int measure_counter_mhz(void)
> +{
> +	unsigned int val;
> +
> +	__asm__ __volatile__("mrs %0, cntfrq_el0" : "=r" (val));
> +
> +	return val / 1e6;
> +}
> +
>  static inline void frc(uint64_t *pval)
>  {
>  	/*
> @@ -241,6 +251,7 @@ static int move_to_core(int core_i)
>  	return sched_setaffinity(0, sizeof(cpus), &cpus);
>  }
>  
> +#ifndef arch_measure_counter_mhz
>  static cycles_t __measure_counter_hz(void)
>  {
>  	struct timeval tvs, tve;
> @@ -273,6 +284,7 @@ static unsigned int measure_counter_mhz(void)
>  
>  	return (unsigned int) (m / 1000000);
>  }
> +#endif
>  
>  static void thread_init(struct thread *t)
>  {
> -- 
> 2.31.1
> 
> 
Reviewed-by: Peter Xu <peterx@xxxxxxxxxx>
Signed-off-by: John Kacur <jkacur@xxxxxxxxxx>




[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux