void delay(int ns) { set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(ns*HZ/1000); } long time_count(long usge1[],long usge2[]) { //printk("this is time_count speaking\n"); long time_spec=1000*(usge2[0]-usge1[0])+(usge2[1]-usge1[1])/1000000; printk("the time_spec is %d ms\n",time_spec); return time_spec;
} int cpu_uage(long usge1[],long usge2[]) { //printk("this is cpu_uage speaking\n"); int cpu_freerate=100*(usge2[3]-usge1[3])/((usge2[0]+usge2[1]+usge2[2]+usge2[3]+usge2[4]+usge2[5]+usge2[6])-(usge1[0]+usge1[1]+usge1[2]+usge1[3]+usge1[4]+usge1[5]+usge1[6])); printk("the cup freeage is %d%% now\n",cpu_freerate); return cpu_freerate;
}
int mem_uage(long usge1[]) { //printk("this is mem_uage speaking\n"); //printk("usg11%d usg10 %d\n",usge1[1],usge1[0]); //printk("this is mem_uage speaking\n"); int mem_freerate=100*usge1[1]/usge1[0]; printk("the mem freeage is %d%% now\n",mem_freerate); return mem_freerate; }
int net_uage(long usge1[],long usge2[],long timesp) { //printk("this is net_uage speaking\n");
//long net_freerate=100-((usge2[17]+usge2[25])-(usge1[17]+usge1[25]))/(netablity*timepect);//500ms?1000ms? //printk("usge2[17] %d\nusge1[17] %d\nusge2[25] %d\nusge1[25] %d\n\n",usage2[17],usage1[17],usage2[25],usge1[25]); int net_usage=(100*500*((usge2[17]-usge1[17])+(usge2[25]-usge1[25]))/timesp)/NETLINKRATE;//0.5s if 1s,yao chu 2 printk("the net has been taken is %d %% \n",net_usage); return net_usage;
}
long formatnum(int count,char temp[],long usage[]) { int i=0; int j=1; int k=0;
usage[k]=simple_strtoul(&temp,NULL,10); i=i+j; //if chao jie j=1;
//printk("#%d##%d\n",k,usage[k]); //wei shu k++;//jia wei shu } } /* if(type==1) cpu_uage(usage); if(type==2) mem_uage(); if(type==3) net_uage(); */ }
static int __init getinfo_init(void) { printk("Welcome!!!\n"); creatproctime();//creat the "clock" file in /proc
int count=0;
long cpu_usgae_temp=0; long mem_usgae_temp=0; long net_usgae_temp=0; char bu[20];
int sample_time=10; int measure_time=0; while(measure_time<10) { for(count=0;count {
readmem("/proc/stat",50,cputmp1); //no need to read meminfo twice readmem("/proc/net/dev",600,nettmp1); readmem("/proc/clock",30,timetmp1);//the fist data is not accurate. delay(DELAYTIME); printk("the NO. %d time begin #########\n",count);
formatnum(600,nettmp1,usage1); formatnum(600,nettmp2,usage2); net_usgae_temp=net_uage(usage1,usage2,timespec); //printk("the NO. %d time end %%%%%%%#########\n",count); if(cpu_usgae_temp>usagetemp[0]) usagetemp[0]=cpu_usgae_temp; if(mem_usgae_temp>usagetemp[1]) usagetemp[1]=mem_usgae_temp; if(net_usgae_temp>usagetemp[2]) usagetemp[2]=net_usgae_temp; delay(DELAYTIME);
} // printk("the cpu is %d\n",usagetemp[0]); // printk("the mem is %d\n",usagetemp[1]); // printk("the net is %d\n",usagetemp[2]);
if ((usagetemp[0]<10||usagetemp[1]<10||usagetemp[2]<10)&&sample_time<15) sample_time++; if ((usagetemp[0]>90||usagetemp[1]>90||usagetemp[2]>90)&&sample_time>5) sample_time--; if ((usagetemp[0]>10&&usagetemp[0]<90)&&(usagetemp[1]>10&&usagetemp[1]<90)&&(usagetemp[2]>10&&usagetemp[2]<90)) sample_time=10; printk("the samep_time is %d\n",sample_time); sprintf(bu,"%d %d %d,%d,%d\n",measure_time,sample_time,usagetemp[0],usagetemp[1],usagetemp[2]);
Jun 29 15:43:20 local000c291f1f43 tpvmlpd[5763]: device read timed out Jun 29 15:43:56 local000c291f1f43 scim-bridge: The lockfile is destroied Jun 29 15:43:56 local000c291f1f43 scim-bridge: Cleanup, done. Exitting... Jun 29 15:44:07 local000c291f1f43 scim-bridge: The lockfile is destroied Jun 29 15:44:07 local000c291f1f43 scim-bridge: Cleanup, done. Exitting...