int boinc_main_loop() { int retval; retval = initialize(); if (retval) return retval; #ifdef __APPLE__ // If we run too soon during system boot we can cause a kernel panic if (gstate.executing_as_daemon) { if (get_system_uptime() < 120) { // If system has been up for less than 2 minutes boinc_sleep(30.); } } #endif retval = gstate.init(); if (retval) { log_message_error("gstate.init() failed", retval); return retval; } log_message_startup("Initialization completed"); while (1) { if (!gstate.poll_slow_events()) { gstate.do_io_or_sleep(POLL_INTERVAL); } fflush(stderr); fflush(stdout); if (gstate.time_to_exit()) { msg_printf(NULL, MSG_INFO, "Time to exit"); break; } if (gstate.requested_exit) { if (cc_config.abort_jobs_on_exit) { if (!gstate.in_abort_sequence) { msg_printf(NULL, MSG_INFO, "Exit requested; starting abort sequence" ); gstate.start_abort_sequence(); } } else { msg_printf(NULL, MSG_INFO, "Exiting"); break; } } if (gstate.in_abort_sequence) { if (gstate.abort_sequence_done()) { msg_printf(NULL, MSG_INFO, "Abort sequence done; exiting"); break; } } } return finalize(); }
unsigned int get_process_uptime(void) { /* We need the uptime in 1/100 seconds, so we can't use sysinfo() */ static unsigned int uptime_start = 0; unsigned int uptime_now; uptime_now = get_system_uptime(); if (uptime_start == 0) { uptime_start = uptime_now; } return uptime_now - uptime_start; }
USING_NAMESPACE_STUPID_BASE void test_base_hardware(void) { { uint64_t total_size = 0; uint64_t avali_size = 0; if (get_system_memory_usage(total_size, avali_size)) { printf("memory : total - " STUPID_U64_FMT ", avali - " STUPID_U64_FMT "\n", total_size, avali_size); } else { printf("get system memory usage failed\n"); } } { #ifdef _MSC_VER const char * disk_path = "c:"; #else const char * disk_path = "/"; #endif // _MSC_VER uint64_t total_size = 0; uint64_t avali_size = 0; if (get_system_disk_usage(disk_path, total_size, avali_size)) { printf("disk (%s) : total - " STUPID_U64_FMT ", avali - " STUPID_U64_FMT "\n", disk_path, total_size, avali_size); } else { printf("get system disk usage failed\n"); } } { std::vector<size_t> cpu_usage; if (get_system_cpu_usage(cpu_usage)) { printf("cpu : "); for (std::vector<size_t>::iterator iter = cpu_usage.begin(); cpu_usage.end() != iter; ++iter) { printf("%lu ", *iter); } printf("\n"); } else { printf("get system cpu usage failed\n"); } } { size_t cpu_core_count = 0; if (get_system_cpu_core_count(cpu_core_count)) { printf("cpu core count : %u\n", cpu_core_count); } else { printf("get system cpu core count failed\n"); } } { uint64_t uptime = 0; if (get_system_uptime(uptime)) { printf("system uptime : " STUPID_U64_FMT "\n", uptime); } else { printf("get system uptime failed\n"); } } }
int ifb_getProcStatus(int type) { char *dname, *ver, fname[100], pname[PROC_NAME_LEN]; int fd, status, pid, procIndex; DIR *dirp; time_t sysuptime; struct dirent *direntp; struct stat st; #if 0 if(get_system_uptime(&sysuptime)) return -1; #endif if( (dirp = opendir(PROC_DIR)) == NULL) { fprintf(stderr, "\n opendir fail[%s]; err=%d(%s)\n\n", PROC_DIR, errno, strerror(errno)); return -1; } while( (direntp = readdir(dirp)) != NULL) { dname = direntp->d_name; if(!isdigit(*dname)) continue; pid = atoi(dname); sprintf(fname, "/proc/%d/cmdline", pid); /* get the process owner */ if( (status = stat(fname, &st)) != 0) continue; if( (fd = open(fname, O_RDONLY)) < 0) continue; else { memset(pname, 0x00, PROC_NAME_LEN); if(read(fd, pname, PROC_NAME_LEN-1) < 0) { close(fd); continue; } else { close(fd); if( (procIndex = ifb_getProcIndex (pname)) < 0) continue; if(confProcTbl[procIndex].runCnt > 0) { if(getPPID(pid) != 1) continue; } confProcTbl[procIndex].runCnt++; confProcTbl[procIndex].pid = pid; strcpy(confProcTbl[procIndex].startTime, "-"); #if 0 get_proc_starttime(pid, sysuptime, NULL, confProcTbl[procIndex].startTime); strftime (confProcTbl[procIndex].startTime, 32, "%m-%d %H:%M",localtime((time_t*)&(st.st_atime))); #endif if( (ver = get_ver_str(pname)) != NULL) { fprintf(stderr, "It fails to get version information -[%s].\n", pname); strncpy(confProcTbl[procIndex].procVersion, "UNKNOWN", 10); } else { if(strlen(ver) == 0) strncpy(confProcTbl[procIndex].procVersion, "UNKNOWN", 10); else strncpy(confProcTbl[procIndex].procVersion, ver, 10); } } } } closedir(dirp); return 1; } //----- End of ifb_getProcStatus -----//