Add support for choosing first cpuid
This commit is contained in:
parent
27a4386c3f
commit
0cacb3cddb
1 changed files with 58 additions and 29 deletions
|
@ -61,14 +61,17 @@ int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
struct timespec ts,ts1;
|
struct timespec ts,ts1;
|
||||||
int i,ncpu;
|
int i,ncpu;
|
||||||
|
int idcpu;
|
||||||
unsigned long freq[8];
|
unsigned long freq[8];
|
||||||
XEvent event;
|
XEvent event;
|
||||||
char gov[20];
|
char gov[20];
|
||||||
char drv[20],*ptr;
|
char drv[20],*ptr,*endptr;
|
||||||
char prg[LN_PATH];
|
char prg[LN_PATH];
|
||||||
ts.tv_sec=0;
|
ts.tv_sec=0;
|
||||||
ts.tv_nsec=DELAY;
|
ts.tv_nsec=DELAY;
|
||||||
prg[0]=0;
|
prg[0]=0;
|
||||||
|
idcpu=0;
|
||||||
|
|
||||||
for(i=0;i<MAX_CPU;i++)
|
for(i=0;i<MAX_CPU;i++)
|
||||||
freq[i]=0;
|
freq[i]=0;
|
||||||
if(argc >1)
|
if(argc >1)
|
||||||
|
@ -86,10 +89,25 @@ int main(int argc, char *argv[])
|
||||||
strcpy(prg,argv[i+1]);
|
strcpy(prg,argv[i+1]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
printf("only -v and -exe supported \n");
|
if (!strcmp(argv[i], "-cpuid"))
|
||||||
|
{
|
||||||
|
if(strlen(argv[i+1]) < LN_PATH )
|
||||||
|
idcpu=strtol(argv[i+1],&endptr,0);
|
||||||
|
printf("cpuid= %d \n",idcpu);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
printf("only -v, -exe, -cpuid supported \n");
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* basic checks */
|
||||||
|
if ( idcpu < 0 )
|
||||||
|
{
|
||||||
|
printf("cpuid < 0 \n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
/* get driver name (guess all cpu have the same driver) */
|
/* get driver name (guess all cpu have the same driver) */
|
||||||
ptr=cpufreq_get_driver(cpu);
|
ptr=cpufreq_get_driver(cpu);
|
||||||
if(!ptr)
|
if(!ptr)
|
||||||
|
@ -99,36 +117,47 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
strcpy(drv,ptr);
|
strcpy(drv,ptr);
|
||||||
cpufreq_put_driver(ptr);
|
cpufreq_put_driver(ptr);
|
||||||
|
|
||||||
|
|
||||||
/* get number of cpu (0=cpu0, 1=cpu1 ...) */
|
/* get number of cpu (0=cpu0, 1=cpu1 ...) */
|
||||||
ncpu=3;
|
|
||||||
if( cpufreq_cpu_exists(ncpu) ==0)
|
ncpu=-1;
|
||||||
|
|
||||||
|
for(i=0;i<MAX_CPU;i++)
|
||||||
{
|
{
|
||||||
/* 4 cpu at least */
|
if( cpufreq_cpu_exists(idcpu+i) ==0)
|
||||||
printf("4cpu\n");
|
{
|
||||||
wm_xpm=wmcpufreq_master_3;
|
printf("cpuid %d found\n",idcpu+i);
|
||||||
wm_bits=wmcpufreq_mask_3_bits;
|
ncpu=i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (cpufreq_cpu_exists(ncpu-1) ==0)
|
|
||||||
{
|
switch ( ncpu ) {
|
||||||
printf("3cpu\n");
|
case -1:
|
||||||
wm_xpm=wmcpufreq_master_3;
|
printf("no cpuid found \n");
|
||||||
wm_bits=wmcpufreq_mask_3_bits;
|
exit(-1);
|
||||||
ncpu=2;
|
case 0:
|
||||||
}
|
wm_xpm=wmcpufreq_master_xpm_1;
|
||||||
else if (cpufreq_cpu_exists(ncpu-2) ==0)
|
wm_bits=wmcpufreq_mask_bits_1;
|
||||||
{
|
break;
|
||||||
printf("2cpu\n");
|
case 1:
|
||||||
wm_xpm=wmcpufreq_master_xpm_2;
|
wm_xpm=wmcpufreq_master_xpm_2;
|
||||||
wm_bits=wmcpufreq_mask_bits_2;
|
wm_bits=wmcpufreq_mask_bits_2;
|
||||||
ncpu=1;
|
break;
|
||||||
}
|
case 2:
|
||||||
else
|
wm_xpm=wmcpufreq_master_3;
|
||||||
{
|
wm_bits=wmcpufreq_mask_3_bits;
|
||||||
printf("1cpu\n");
|
break;
|
||||||
wm_xpm=wmcpufreq_master_xpm_1;
|
case 3:
|
||||||
wm_bits=wmcpufreq_mask_bits_1;
|
wm_xpm=wmcpufreq_master_3;
|
||||||
ncpu=0;
|
wm_bits=wmcpufreq_mask_3_bits;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("no yet implemented: cpuid %d \n",ncpu);
|
||||||
|
exit(-1);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* guess every cpu has the same limits */
|
/* guess every cpu has the same limits */
|
||||||
if(cpufreq_get_hardware_limits(cpu, &f_min, &f_max))
|
if(cpufreq_get_hardware_limits(cpu, &f_min, &f_max))
|
||||||
{
|
{
|
||||||
|
@ -162,7 +191,7 @@ int main(int argc, char *argv[])
|
||||||
RedrawWindow();
|
RedrawWindow();
|
||||||
/* get info */
|
/* get info */
|
||||||
for(i=0;i<=ncpu;i++)
|
for(i=0;i<=ncpu;i++)
|
||||||
freq[i]=cpufreq_get_freq_kernel(i);
|
freq[i]=cpufreq_get_freq_kernel(i+idcpu);
|
||||||
policy=cpufreq_get_policy(cpu);
|
policy=cpufreq_get_policy(cpu);
|
||||||
strcpy(gov,policy->governor);
|
strcpy(gov,policy->governor);
|
||||||
max=policy->max;
|
max=policy->max;
|
||||||
|
|
Loading…
Reference in a new issue