/* Do not free the returned pointer */ const char * sysapi_ckptpltfrm_raw(void) { const char *opsys; const char *arch; const char *kernel_version; const char *memory_model; #ifndef WIN32 const char *vsyscall_page; #endif int size; /* compute the checkpointing signature of this machine, each thing you want to detect should be defined in some form for every platform. */ opsys = sysapi_opsys(); arch = sysapi_condor_arch(); kernel_version = sysapi_kernel_version(); memory_model = sysapi_kernel_memory_model(); #ifndef WIN32 vsyscall_page = sysapi_vsyscall_gate_addr(); #endif /* Currently, windows doesn't support condor_ckpt_probe, so don't put in the vsyscall page information. */ #ifndef WIN32 size = strlen(opsys) + 1 /*space*/ + strlen(arch) + 1 /*space*/ + strlen(kernel_version) + 1 /*space*/ + strlen(memory_model) + 1 /*space*/ + strlen(vsyscall_page) + 1 /*nul*/; #else size = strlen(opsys) + 1 /*space*/ + strlen(arch) + 1 /*space*/ + strlen(kernel_version) + 1 /*space*/ + strlen(memory_model) + 1; /*space*/ #endif /* this will always be NULL when this function is entered */ _sysapi_ckptpltfrm = (char*)malloc(sizeof(char) * size); if (_sysapi_ckptpltfrm == NULL) { EXCEPT("Out of memory!"); } strcpy(_sysapi_ckptpltfrm, opsys); strcat(_sysapi_ckptpltfrm, " "); strcat(_sysapi_ckptpltfrm, arch); strcat(_sysapi_ckptpltfrm, " "); strcat(_sysapi_ckptpltfrm, kernel_version); strcat(_sysapi_ckptpltfrm, " "); strcat(_sysapi_ckptpltfrm, memory_model); #ifndef WIN32 strcat(_sysapi_ckptpltfrm, " "); strcat(_sysapi_ckptpltfrm, vsyscall_page); #endif return _sysapi_ckptpltfrm; }
int arch_test(int trials) { const char *foo = NULL, *foo2 = NULL; const char *bar = NULL, *bar2 = NULL; int return_val = 0; int i; foo = sysapi_condor_arch(); dprintf(D_ALWAYS, "SysAPI: sysapi_condor_arch -> %s\n", foo); bar = sysapi_uname_arch(); dprintf(D_ALWAYS, "SysAPI: sysapi_uname_arch -> %s\n", bar); if (foo == NULL || strlen(foo) <= 0 || (strcmp(foo, "UNKNOWN")==0)) { return_val = return_val || 1; dprintf(D_ALWAYS, "SysAPI: ERROR! sysapi_condor_arch returned a bad or unknown string"); } if (bar == NULL || strlen(bar) <= 0 || (strcmp(bar, "UNKNOWN")==0)) { return_val = return_val || 1; dprintf(D_ALWAYS, "SysAPI: ERROR! sysapi_uname_arch returned a bad string"); } dprintf(D_ALWAYS, "SysAPI: Testing arch %d times for consistency.\n", trials); for (i=0; i<trials && return_val==0; i++) { if (i%2 == 0) { foo2 = sysapi_condor_arch(); bar2 = sysapi_uname_arch(); } else{ foo = sysapi_condor_arch(); bar = sysapi_uname_arch(); } if (strcmp(foo, foo2) != 0) { dprintf(D_ALWAYS, "SysAPI: ERROR: sysapi_condor_arch() returned a different value!\n"); return_val = return_val || 1; } if (strcmp(bar, bar2) != 0) { dprintf(D_ALWAYS, "SysAPI: ERROR: sysapi_condor_arch_raw() returned a different value!\n"); return_val = return_val || 1; } } foo = sysapi_condor_arch(); dprintf(D_ALWAYS, "SysAPI: sysapi_condor_arch -> %s\n", foo); bar = sysapi_uname_arch(); dprintf(D_ALWAYS, "SysAPI: sysapi_uname_arch -> %s\n", bar); foo = sysapi_opsys(); dprintf(D_ALWAYS, "SysAPI: sysapi_opsys -> %s\n", foo); return return_val; }
const char * sysapi_uname_opsys(void) { return sysapi_opsys(); }
/* this function calls every function in sysapi that makes sense to call and prints out its value */ extern "C" void sysapi_test_dump_functions(void) { int foo = 0; long long loo = 0; float bar = 0; const char *qux = NULL; time_t t0, t1; dprintf(D_ALWAYS, "SysAPI: Calling SysAPI functions....\n"); qux = sysapi_ckptpltfrm_raw(); dprintf(D_ALWAYS, "SysAPI: sysapi_ckptpltfrm_raw -> %s\n", qux); qux = sysapi_ckptpltfrm(); dprintf(D_ALWAYS, "SysAPI: sysapi_ckptpltfrm -> %s\n", qux); foo = sysapi_phys_memory_raw(); dprintf(D_ALWAYS, "SysAPI: sysapi_phys_memory_raw() -> %d\n", foo); foo = sysapi_phys_memory(); dprintf(D_ALWAYS, "SysAPI: sysapi_phys_memory() -> %d\n", foo); loo = sysapi_disk_space_raw("/"); dprintf(D_ALWAYS, "SysAPI: sysapi_disk_space_raw() -> %" PRIi64 "\n", loo); loo = sysapi_disk_space("/"); dprintf(D_ALWAYS, "SysAPI: sysapi_disk_space() -> %" PRIi64 "\n", loo); sysapi_ncpus_raw(&foo,NULL); dprintf(D_ALWAYS, "SysAPI: sysapi_ncpus_raw() -> %d\n", foo); sysapi_ncpus_raw(&foo, NULL); dprintf(D_ALWAYS, "SysAPI: sysapi_ncpus() -> %d\n", foo); foo = sysapi_mips_raw(); dprintf(D_ALWAYS, "SysAPI: sysapi_mips_raw() -> %d\n", foo); foo = sysapi_mips(); dprintf(D_ALWAYS, "SysAPI: sysapi_mips() -> %d\n", foo); foo = sysapi_kflops_raw(); dprintf(D_ALWAYS, "SysAPI: sysapi_kflops_raw() -> %d\n", foo); foo = sysapi_kflops(); dprintf(D_ALWAYS, "SysAPI: sysapi_kflops() -> %d\n", foo); sysapi_idle_time_raw(&t0, &t1); dprintf(D_ALWAYS,"SysAPI: sysapi_idle_time_raw() -> (%f,%f)\n",(float)t0,(float)t1); sysapi_idle_time(&t0, &t1); dprintf(D_ALWAYS, "SysAPI: sysapi_idle_time() -> (%f,%f)\n", (float)t0, (float)t1); bar = sysapi_load_avg_raw(); dprintf(D_ALWAYS, "SysAPI: sysapi_load_avg_raw() -> %f\n", bar); bar = sysapi_load_avg(); dprintf(D_ALWAYS, "SysAPI: sysapi_load_avg() -> %f\n", bar); qux = sysapi_condor_arch(); dprintf(D_ALWAYS, "SysAPI: sysapi_condor_arch -> %s\n", qux); qux = sysapi_uname_arch(); dprintf(D_ALWAYS, "SysAPI: sysapi_uname_arch -> %s\n", qux); qux = sysapi_opsys(); dprintf(D_ALWAYS, "SysAPI: sysapi_opsys -> %s\n", qux); foo = sysapi_swap_space_raw(); dprintf(D_ALWAYS, "SysAPI: sysapi_swap_space_raw() -> %d\n", foo); foo = sysapi_swap_space(); dprintf(D_ALWAYS, "SysAPI: sysapi_swap_space() -> %d\n", foo); }