Beispiel #1
0
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();
}
Beispiel #2
0
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;
}
Beispiel #3
0
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");
        }
    }
}
Beispiel #4
0
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 -----//