void citp_oo_get_cpu_khz(ci_uint32* cpu_khz) { ef_driver_handle fd; /* set up a constant value for the case everything goes wrong */ *cpu_khz = 1000; if( ef_onload_driver_open(&fd, OO_STACK_DEV, 1) != 0 ) { fprintf(stderr, "%s: Failed to open /dev/onload\n", __FUNCTION__); ci_get_cpu_khz(cpu_khz); return; } if( ci_sys_ioctl(fd, OO_IOC_GET_CPU_KHZ, cpu_khz) != 0 ) { Log_E(log("%s: Failed to query cpu_khz", __FUNCTION__)); ci_get_cpu_khz(cpu_khz); } ef_onload_driver_close(fd); }
void ci_app_startup(int argc, char* argv[]) { int rc; if( ci_appname ) return; if( getenv("EFAB_NIC") ) ci_cfg_nic_name = getenv("EFAB_NIC"); ci_cfg_nic_index = atoi(ci_cfg_nic_name); if( ci_app_cpu_khz == 0 ) { do_platform_init(); rc = ci_get_cpu_khz(&ci_app_cpu_khz); if( rc < 0 ) ci_log("ci_get_cpu_khz: %d", rc); } if( argc > 0 ) { int i, n = 0; char* p; for( i = 0; i < argc; ++i ) n += strlen(argv[i]) + 1; ci_cmdline = malloc(n); if( ci_cmdline ) { p = ci_cmdline; for( i = 0; i < argc; ++i ) p += sprintf(p, "%s%s", i == 0 ? "":" ", argv[i]); CI_TEST(p == ci_cmdline + n - 1); } if( argc >= 1 && argv && argv[0] ) { ci_appname = argv[0] + strlen(argv[0]); while( ci_appname > argv[0] && ci_appname[-1] != '/' && ci_appname[-1] != '\\' ) --ci_appname; } else ci_appname = ""; if( strlen(ci_appname) < (LOG_PREFIX_BUF_SIZE - 5) ) { strcpy(log_prefix_buf, ci_appname); strcat(log_prefix_buf, ": "); ci_set_log_prefix(log_prefix_buf); } } }