int do_cpu_option (skyeye_option_t * this_option, int num_params, const char *params[]) { int ret; if (skyeye_config.arch == NULL) { /* If we don't set arch, we use "arm" as default. */ char *default_arch = "arm"; int i; for (i = 0; i < MAX_SUPP_ARCH; i++) { if (skyeye_archs[i] == NULL) continue; if (!strncmp (default_arch, skyeye_archs[i]->arch_name, MAX_PARAM_NAME)) { skyeye_config.arch = skyeye_archs[i]; SKYEYE_INFO ("arch: %s\n", skyeye_archs[i]->arch_name); } } if (skyeye_config.arch == NULL) { SKYEYE_ERR ("ERROR: No arch option found! Maybe you use low version of skyeye?\n"); skyeye_exit (-1); } } ret = skyeye_config.arch->parse_cpu (params); if (ret < 0) SKYEYE_ERR ("Error: Unkonw cpu name \"%s\"\n", params[0]); return ret; }
static int ppc_parse_mach (machine_config_t * mach, const char *params[]) { int i; for (i = 0; i < (sizeof (ppc_machines) / sizeof (machine_config_t)); i++) { if (!strncmp (params[0], ppc_machines[i].machine_name, MAX_PARAM_NAME)) { skyeye_config.mach = &ppc_machines[i]; SKYEYE_INFO ("mach info: name %s, mach_init addr %p\n", skyeye_config.mach->machine_name, skyeye_config.mach->mach_init); return 0; } } SKYEYE_ERR ("Error: Unkonw mach name \"%s\"\n", params[0]); return -1; }
/** * @brief The handler of arch option * * @param this_option * @param num_params * @param params[] * * @return */ static int do_arch_option (skyeye_option_t * this_option, int num_params, const char *params[]) { int i; //arch_config_t *arch = skyeye_config.arch; skyeye_config_t* config = get_current_config(); for (i = 0; i < MAX_SUPP_ARCH; i++) { if (skyeye_archs[i] == NULL) continue; if (!strncmp (params[0], skyeye_archs[i]->arch_name, MAX_PARAM_NAME)) { config->arch = skyeye_archs[i]; SKYEYE_INFO ("arch: %s\n", skyeye_archs[i]->arch_name); return 0; } } SKYEYE_ERR ("Error: Unknowm architecture name \"%s\" or you use low version of skyeye?\n", params[0]); return -1; }
int do_log_option (skyeye_option_t * this_option, int num_params, const char *params[]) { char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME]; int i, fd, logon, memlogon; unsigned long long start, end, length; #if 0 /*2004-08-09 chy init skyeye_config.log */ skyeye_config.log.log_fd = 0; skyeye_config.log.logon = 0; skyeye_config.log.memlogon = 0; skyeye_config.log.start = 0; skyeye_config.log.end = 0; skyeye_config.log.length = 0; for (i = 0; i < num_params; i++) { if (split_param (params[i], name, value) < 0) SKYEYE_ERR ("log_info: Error: log has wrong parameter \"%s\".\n", name); if (!strncmp ("logon", name, strlen (name))) { sscanf (value, "%d", &logon); if (logon != 0 && logon != 1) SKYEYE_ERR ("log_info: Error logon value %d\n", logon); if (logon == 1) { SKYEYE_INFO ("log_info: log is on.\n"); } else { SKYEYE_INFO ("log_info: log is off.\n"); } skyeye_config.log.logon = logon; } else if (!strncmp ("memlogon", name, strlen (name))) { sscanf (value, "%d", &memlogon); if (memlogon != 0 && memlogon != 1) SKYEYE_ERR ("log_info: Error logon value %d\n", memlogon); if (memlogon == 1) { SKYEYE_INFO ("log_info: memory klog is on.\n"); } else { SKYEYE_INFO ("log_info: memory log is off.\n"); } skyeye_config.log.memlogon = memlogon; } else if (!strncmp ("logfile", name, strlen (name))) { if ((skyeye_logfd = fopen (value, "w+")) == NULL) { //SKYEYE_DBG("SkyEye Error when open log file %s\n", value); perror ("SkyEye: Error when open log file: "); skyeye_exit (-1); } skyeye_config.log.log_fd = skyeye_logfd; SKYEYE_INFO ("log_info:log file is %s, fd is 0x%x\n", value, skyeye_logfd); } else if (!strncmp ("start", name, strlen (name))) { start = strtoul (value, NULL, 0); skyeye_config.log.start = start; SKYEYE_INFO ("log_info: log start clock %llu\n", start); } else if (!strncmp ("end", name, strlen (name))) { end = strtoul (value, NULL, 0); skyeye_config.log.end = end; SKYEYE_INFO ("log_info: log end clock %llu\n", end); } else if (!strncmp ("length", name, strlen (name))) { sscanf (value, "%llu", &length); skyeye_config.log.length = length; SKYEYE_INFO ("log_info: log instr length %llu\n", length); } else SKYEYE_ERR ("Error: Unknown cpu name \"%s\"\n", params[0]); } #endif return 0; }