pmu: add ihk_mc_perfctr_value function

Change-Id: I88d25586dd470737a3eac4c3a4f1955ae6e41d64
This commit is contained in:
TOIDA,Suguru
2019-04-09 16:20:33 +09:00
parent 0f434288e1
commit b945367c90
4 changed files with 19 additions and 2 deletions

View File

@ -198,6 +198,14 @@ unsigned long ihk_mc_perfctr_read(int counter)
return count;
}
unsigned long ihk_mc_perfctr_value(int counter, unsigned long correction)
{
unsigned long count = ihk_mc_perfctr_read(counter) + correction;
count &= ((1UL << 32) - 1);
return count;
}
int ihk_mc_perfctr_alloc_counter(unsigned int *type, unsigned long *config,
unsigned long pmc_status)
{

View File

@ -421,6 +421,14 @@ unsigned long ihk_mc_perfctr_read(int counter)
return retval;
}
unsigned long ihk_mc_perfctr_value(int counter, unsigned long correction)
{
unsigned long count = ihk_mc_perfctr_read(counter) + correction;
count &= 0x000000ffffffffffL;
return count;
}
// read by rdmsr
unsigned long ihk_mc_perfctr_read_msr(int counter)
{

View File

@ -3723,8 +3723,8 @@ unsigned long perf_event_read_value(struct mc_perf_event *event)
int counter_id = event->counter_id;
if(event->pid == 0) {
pmc_count = ihk_mc_perfctr_read(counter_id) + event->attr.sample_freq;
pmc_count &= 0x000000ffffffffffL; // 40bit MASK
pmc_count = ihk_mc_perfctr_value(counter_id,
event->attr.sample_freq);
}
rtn_count += event->count + pmc_count;

View File

@ -70,6 +70,7 @@ int ihk_mc_perfctr_reset(int counter);
int ihk_mc_perfctr_set(int counter, long value);
int ihk_mc_perfctr_read_mask(unsigned long counter_mask, unsigned long *value);
unsigned long ihk_mc_perfctr_read(int counter);
unsigned long ihk_mc_perfctr_value(int counter, unsigned long correction);
unsigned long ihk_mc_perfctr_read_msr(int counter);
int ihk_mc_perfctr_alloc_counter(unsigned int *type, unsigned long *config, unsigned long pmc_status);
int ihk_mc_perfctr_alloc(struct thread *thread, struct mc_perf_event *event);