SystemInfo model_reader::LoadSystemInfo() { LinuxCPULoadReader cpu_reader; auto cpu_util = cpu_reader.read_util(); struct sysinfo s_info; sysinfo (&s_info); vector<long> cpu_loads(s_info.loads, s_info.loads + 3); MemoryInfo memory_info(s_info.totalram, s_info.freeram); CPUInfo cpu_load(cpu_util); return SystemInfo(cpu_load, memory_info); };
int main(void) { cpu_interval = 0; int mem_load; int display_mode = mode_CPU; char tmp_value[20]; mem_tot = mem_total()/1024; lcd_line(" RPi i2c test"); lcd_line(" Copyright (C)"); lcd_line(" 2013"); lcd_line("Jesper Stockenstrand"); usleep(5000000); for(;;) { int cpu_l; switch (display_mode) { case mode_CPU: cpu_l = cpu_load(); sprintf(tmp_value," %d%%",cpu_l); lcd_line(" CPU LOAD "); lcd_line(tmp_value); lcd_line(" "); lcd_line(">CPU<[MEM][NET][UPT]"); break; case mode_MEM: mem_load = (int)(((double)mem_used()/(double)mem_tot)*100); lcd_line(" MEM USAGE "); sprintf(tmp_value," %d/%dMb",mem_used(),mem_tot); lcd_line(tmp_value); sprintf(tmp_value," %d%%",mem_load); lcd_line(tmp_value); lcd_line("[CPU]>MEM<[NET][UPT]"); break; case mode_NET: lcd_line(" IP ADDRESS "); sprintf(tmp_value," %s", net_address()); lcd_line(tmp_value); lcd_line(" "); lcd_line("[CPU][MEM]>NET<[UPT]"); break; case mode_UPT: lcd_line(" UP TIME "); sprintf(tmp_value," %d sec",uptime()); lcd_line(tmp_value); lcd_line(" "); lcd_line("[CPU][MEM][NET]>UPT<"); break; default: display_mode = mode_CPU; } switch (checkButton()) { case 1: display_mode = mode_CPU; break; case 2: display_mode = mode_MEM; break; case 3: display_mode = mode_NET; break; case 4: display_mode = mode_UPT; break; } usleep(10000); } return(0); }
static double cpu_load_15min (void) { return cpu_load (2); }
static double cpu_load_5min (void) { return cpu_load (1); }
static double cpu_load_1min (void) { return cpu_load (0); }
int parse_para(int argc, char **argv) { // parse the monitor agent parameters int c, index; char *optstring = "i:l:m:n:s:p:dtvh"; char *version, *help; char *disk, *cpu_seq, *interface, *loadlevel, *processid; char *mproc, *mused, *mpri, *mvir, *mpri_ipcs; char *mswap_used, *mswap_total, *pgpgin; char *pgpgout, *pswpin, *pswpout, *svctm, *await, *aveq, *avgrq_sz, *util; char *net_byte_in, *net_byte_out, *net_pack_in, *net_pack_out; char *passiveopens, *currestab, *indatagrams, *outdatagrams; char *hard_proc, *hard_mem, *hard_temp, *hard_disk, *hard_pwr, *hard_batt, *hard_nics, *hard_fans; char * para[40] ; int i = 0; for ( i = 0; i<40; i++ ) { para[i] = NULL; } struct option longopts[] = { /* 0 */ {"help", no_argument, NULL, 'h'}, /* 1 */ {"version", no_argument, NULL, 'v'}, /* 2 */ {"daemon", no_argument, NULL, 'd'}, /* 3 */ {"url_post", required_argument, NULL, 'd'}, /* 4 */ {"rul_server", required_argument, NULL, 0}, /* 5 */ {"url_config", required_argument, NULL, 0}, /* 6 */ {"url_report", required_argument, NULL, 0}, /* 7 */ {"processid", required_argument, NULL, 0}, /* 8 */ {"mproc", no_argument, NULL, 0}, /* 9 */ {"mused", no_argument, NULL, 0}, /* 10 */ {"mpri", no_argument, NULL, 0}, /* 11 */ {"mvir", no_argument, NULL, 0}, /* 12 */ {"mpri_ipcs", no_argument, NULL, 0}, /* 13 */ {"mswap_used", no_argument, NULL, 0}, /* 14 */ {"mswap_total", no_argument, NULL, 0}, /* 15 */ {"pgpgin", no_argument, NULL, 0}, /* 16 */ {"pgpgout", no_argument, NULL, 0}, /* 17 */ {"pswpin", no_argument, NULL, 0}, /* 18 */ {"pswpout", no_argument, NULL, 0}, /* 19 */ {"svctm", no_argument, NULL, 0}, /* 20 */ {"await", no_argument, NULL, 0}, /* 21 */ {"aveq", no_argument, NULL, 0}, /* 22 */ {"avgrq_sz", no_argument, NULL, 0}, /* 23 */ {"util", no_argument, NULL, 0}, /* 24 */ {"net_byte_in", no_argument, NULL, 0}, /* 25 */ {"net_byte_out", no_argument, NULL, 0}, /* 26 */ {"net_pack_in", no_argument, NULL, 0}, /* 27 */ {"net_pack_out", no_argument, NULL, 0}, /* 28 */ {"passiveopens", no_argument, NULL, 0}, /* 29 */ {"currestab", no_argument, NULL, 0}, /* 30 */ {"indatagrams", no_argument, NULL, 0}, /* 31 */ {"outdatagrams", no_argument, NULL, 0}, /* 32 */ {"hard_proc", no_argument, NULL, 0}, /* 33 */ {"hard_mem", no_argument, NULL, 0}, /* 34 */ {"hard_temps", no_argument, NULL, 0}, /* 35 */ {"hard_disk", no_argument, NULL, 0}, /* 36 */ {"hard_pwr", no_argument, NULL, 0}, /* 37 */ {"hard_batt", no_argument, NULL, 0}, /* 38 */ {"hard_nics", no_argument, NULL, 0}, /* 39 */ {"hard_fans", no_argument, NULL, 0}, /* end */ {NULL, no_argument, NULL, 0}, }; while ((c = getopt_long(argc, argv, optstring, longopts, &index)) != -1) { switch (c) { case 'h': para[0]=""; break; case 'v': para[1]=""; break; case 'd': para[2]=""; break; case 'i': para[5]=optarg; break; case 'l': loadlevel = optarg; break; case '?': c = (char)optopt; printf("parameters is not correct! \n"); break; case ':': printf("1111111111111111111\n"); break; } switch(index){ case 0: para[0] = ""; break; case 1: para[1] = ""; break; case 2: para[2] = ""; break; case 3: para[3] = optarg; break; case 4: para[4] = optarg; break; case 5: para[5] = optarg; break; case 6: para[6] = optarg; break; case 7: para[7] = optarg; break; case 8: para[8] = ""; break; case 9: para[9] = ""; break; case 10: para[10] = ""; break; case 11: para[11] = ""; break; case 12: para[12] = ""; break; case 13: para[13] = ""; break; case 14: para[14] = ""; break; case 15: para[15] = ""; break; case 16: para[16] = ""; break; case 17: para[17] = ""; break; case 18: para[18] = ""; break; case 19: para[19] = ""; break; case 20: para[20] = ""; break; case 21: para[21] = ""; break; case 22: para[22] = ""; break; case 23: para[23] = ""; break; case 24: para[24] = ""; break; case 25: para[25] = ""; break; case 26: para[26] = ""; break; case 27: para[27] = ""; break; case 28: para[28] = ""; break; case 29: para[29] = ""; break; case 30: para[30] = ""; break; case 31: para[31] = ""; break; case 32: para[32] = ""; break; case 33: para[33] = ""; break; case 34: para[34] = ""; break; case 35: para[35] = ""; break; case 36: para[36] = ""; break; case 37: para[37] = ""; break; case 38: para[38] = ""; break; case 39: para[39] = ""; break; case 40: para[40] = ""; break; } // printf("the swich finished!\n"); } /* 0 */ if( para[0] != NULL ) { print_help(); } /* 1 */ if( para[1] != NULL ) { print_version(); } /* 2 */ if( para[2] != NULL ) { run_daemon(); } /* 3 */ if( para[3] != NULL ) { disk = para[3]; } /* 4 */ if( para[4] != NULL ) { cpu_seq = para[4]; collect_cpu(cpu_seq); } /* 5 */ if( para[5] != NULL ) { interface = para[5]; } /* 6 */ if( para[6] != NULL ) { loadlevel = para[6]; cpu_load(loadlevel); } /* 7 */ if( para[7] != NULL ) { processid = para[7]; } /* 8 */ if( para[8] != NULL ) { collect_mem_proc( "mem_proc" ); } /* 9 */ if( para[9] != NULL ) { collect_mem_proc( "mem_used" ); } /* 10 */ if( para[10] != NULL ) { collect_mem_pri(); } /* 11 */ if( para[11] != NULL ) { collect_mem_vir(); } /* 12 */ if( para[12] != NULL ) { collect_mem_pri_ipcs(); } /* 13 */ if( para[13] != NULL ) { collect_mem_proc( "mswap_used" ); } /* 14 */ if( para[14] != NULL ) { collect_mem_proc( "mswap_total" ); } /* 15 */ if( para[15] != NULL ) { collect_disk_vmstat( "pgpgin"); } /* 16 */ if( para[16] != NULL ) { collect_disk_vmstat( "pgpgout"); } /* 17 */ if( para[17] != NULL ) { collect_disk_vmstat( "pswpin"); } /* 18 */ if( para[18] != NULL ) { collect_disk_vmstat( "pswpout"); } /* 19 */ if( para[19] != NULL ) { collect_diskstats( disk, "svctm" ); } /* 20 */ if( para[20] != NULL ) { collect_diskstats( disk, "await" ); } /* 21 */ if( para[21] != NULL ) { collect_diskstats( disk, "aveq" ); } /* 22 */ if( para[22] != NULL ) { collect_diskstats( disk, "avgrq_sz" ); } /* 23 */ if( para[23] != NULL ) { collect_diskstats( disk, "util" ); } /* 24 */ if( para[24] != NULL ) { collect_net_dev ( interface, "net_byte_in" ); } /* 25 */ if( para[25] != NULL ) { collect_net_dev ( interface, "net_byte_out" ); } /* 26 */ if( para[26] != NULL ) { collect_net_dev ( interface, "net_pack_in" ); } /* 27 */ if( para[27] != NULL ) { collect_net_dev ( interface, "net_pack_out" ); } /* 28 */ if( para[28] != NULL ) { collect_net_snmp( "passiveopens" ); } /* 29 */ if( para[29] != NULL ) { collect_net_snmp( "currestab" ); } /* 30 */ if( para[30] != NULL ) { collect_net_snmp( "indatagrams" ); } /* 31 */ if( para[31] != NULL ) { collect_net_snmp( "outdatagrams" ); } /* 32 */ if( para[32] != NULL ) { collect_hardinfo ( "hard_proc" ); } /* 33 */ if( para[33] != NULL ) { collect_hardinfo ( "hard_mem" ); } /* 34 */ if( para[34] != NULL ) { collect_hardinfo ( "hard_temp" ); } /* 35 */ if( para[35] != NULL ) { collect_hardinfo ( "hard_disk" ); } /* 36 */ if( para[36] != NULL ) { collect_hardinfo ( "hard_pwr" ); } /* 37 */ if( para[37] != NULL ) { collect_hardinfo ( "hard_batt" ); } /* 38 */ if( para[38] != NULL ) { collect_hardinfo ( "hard_nics" ); } /* 39 */ if( para[39] != NULL ) { collect_hardinfo ( "hard_fans" ); } // printf("the while loop finished\n"); return 0; }