void xae::release_core() { if(NULL == m_pHGE) create_core(); m_pHGE->Release(); m_pHGE = 0; }
/** Initalizes the scheduler. Assumptions: - You may assume this will be the first scheduler function called. - You may assume this function will be called only once. - You may assume that cores is a positive, non-zero number. - You may assume that scheme is a valid scheduling scheme. @param num_cores the number of cores that is available by the scheduler. These cores will be known as core(id=0), core(id=1), ..., core(id=cores-1). @param scheme the scheduling scheme that should be used. This value will be one of the six enum values of scheme_t */ void scheduler_start_up(int num_cores, scheme_t scheme) { jobs = (priqueue_t*)malloc(sizeof(priqueue_t)); sch_type = scheme; priqueue_init(jobs,&sch_time); inc_time(0); create_core(&cores,num_cores); }//scheduler_start_up
void xae::shutdown_core() { if(NULL == m_pHGE) create_core(); /** 场景管理器释放 */ xaeSceneMgr::Instance().release(); /** 资源管理器释放 */ SAFEDEL(m_pResMgr); m_pHGE->System_Shutdown(); }
INT32 EnableCore(UINT32 core_id) { if(check_Enable_Core_parm(core_id)) { printf("check_Enable_Core_parm fail\n"); return API_RTN_ERROR; } Core* pCore_temp = create_core(core_id); if(insert_core(pCore_temp)) { printf("insert_core fail\n"); return API_RTN_ERROR; } return API_RTN_OK; }
void xae::set_core(const char* title /* = "XAEngine" */, float width /* = 800.0f */, float height /* = 600.0f */, int fps /* = 100 */, int bpp /* = 32 */, bool windowed /* = true *//**, bool hidemouse /* = false */, const char* logfile /* = "" */, bool splash /* = false */) { if(NULL == m_pHGE) create_core(); m_pHGE->System_SetState(HGE_TITLE, title); m_pHGE->System_SetState(HGE_SCREENWIDTH, width); m_pHGE->System_SetState(HGE_SCREENHEIGHT, height); m_pHGE->System_SetState(HGE_FPS, fps); m_pHGE->System_SetState(HGE_SCREENBPP, bpp); m_pHGE->System_SetState(HGE_WINDOWED, windowed); m_pHGE->System_SetState(HGE_HIDEMOUSE, false); m_pHGE->System_SetState(HGE_SHOWSPLASH, splash); m_pHGE->System_SetState(HGE_DONTSUSPEND, true); m_pHGE->System_SetState(HGE_USESOUND, true); if(strcmp(logfile, "")) { m_pHGE->System_SetState(HGE_LOGFILE, logfile); } }
static int create_chip(topo_mod_t *mod, tnode_t *pnode, topo_instance_t min, topo_instance_t max, nvlist_t *cpu, nvlist_t *auth, int mc_offchip) { tnode_t *chip; nvlist_t *fmri = NULL; int err, perr, nerr = 0; int32_t chipid, procnodeid, procnodes_per_pkg; const char *vendor; int32_t family, model; boolean_t create_mc = B_FALSE; uint16_t smbios_id; /* * /dev/fm will export the chipid based on SMBIOS' ordering * of Type-4 structures, if SMBIOS meets FMA needs */ err = nvlist_lookup_pairs(cpu, 0, FM_PHYSCPU_INFO_CHIP_ID, DATA_TYPE_INT32, &chipid, FM_PHYSCPU_INFO_NPROCNODES, DATA_TYPE_INT32, &procnodes_per_pkg, FM_PHYSCPU_INFO_PROCNODE_ID, DATA_TYPE_INT32, &procnodeid, FM_PHYSCPU_INFO_VENDOR_ID, DATA_TYPE_STRING, &vendor, FM_PHYSCPU_INFO_FAMILY, DATA_TYPE_INT32, &family, FM_PHYSCPU_INFO_MODEL, DATA_TYPE_INT32, &model, NULL); if (err) { whinge(mod, NULL, "create_chip: lookup failed: %s\n", strerror(err)); return (-1); } if (chipid < min || chipid > max) return (-1); if (FM_AWARE_SMBIOS(mod)) { if ((err = nvlist_lookup_uint16(cpu, FM_PHYSCPU_INFO_SMBIOS_ID, &smbios_id)) != 0) { whinge(mod, NULL, "create_chip: lookup smbios_id failed" ": enumerating x86pi & chip topology, but" " no Chip properties from SMBIOS" " - err msg : %s\n", strerror(err)); /* * Lets reset the module specific * data to NULL, overriding any * SMBIOS capability encoded earlier. * This will fail all subsequent * FM_AWARE_SMBIOS checks. */ topo_mod_setspecific(mod, NULL); } } if ((chip = topo_node_lookup(pnode, CHIP_NODE_NAME, chipid)) == NULL) { if ((chip = create_node(mod, pnode, auth, CHIP_NODE_NAME, chipid, smbios_id)) == NULL) return (-1); /* * Do not register XML map methods if SMBIOS can provide * serial, part, revision & label */ if (!FM_AWARE_SMBIOS(mod)) { if (topo_method_register(mod, chip, chip_methods) < 0) whinge(mod, &nerr, "create_chip: " "topo_method_register failed\n"); } (void) topo_pgroup_create(chip, &chip_pgroup, &err); nerr -= add_nvlist_strprop(mod, chip, cpu, PGNAME(CHIP), CHIP_VENDOR_ID, NULL); nerr -= add_nvlist_longprops(mod, chip, cpu, PGNAME(CHIP), NULL, CHIP_FAMILY, CHIP_MODEL, CHIP_STEPPING, NULL); if (FM_AWARE_SMBIOS(mod)) { int fru = 0; char *serial = NULL; char *part = NULL; char *rev = NULL; char *label; fru = chip_fru_smbios_get(mod, smbios_id); /* * Chip is not a FRU, set the FRU fmri of parent node */ if (topo_node_resource(chip, &fmri, &perr) != 0) whinge(mod, &nerr, "create_chip: " "topo_node_resource failed\n"); if (!fru) { (void) topo_node_fru_set(chip, NULL, 0, &perr); label = NULL; } else { label = (char *)chip_label_smbios_get(mod, pnode, smbios_id, NULL); if (topo_node_fru_set(chip, fmri, 0, &perr) != 0) { whinge(mod, NULL, "create_chip: " "topo_node_fru_set failed\n"); perr = 0; } } perr += nvlist_lookup_string(fmri, FM_FMRI_HC_SERIAL_ID, &serial); perr += nvlist_lookup_string(fmri, FM_FMRI_HC_PART, &part); perr += nvlist_lookup_string(fmri, FM_FMRI_HC_REVISION, &rev); if (perr != 0) { whinge(mod, NULL, "create_chip: nvlist_lookup_string" "failed\n"); perr = 0; } perr += topo_prop_set_string(chip, PGNAME(CHIP), FM_FMRI_HC_SERIAL_ID, TOPO_PROP_IMMUTABLE, serial, &perr); perr += topo_prop_set_string(chip, PGNAME(CHIP), FM_FMRI_HC_PART, TOPO_PROP_IMMUTABLE, part, &perr); perr += topo_prop_set_string(chip, PGNAME(CHIP), FM_FMRI_HC_REVISION, TOPO_PROP_IMMUTABLE, rev, &perr); if (perr != 0) whinge(mod, NULL, "create_chip: topo_prop_set_string" "failed\n"); nvlist_free(fmri); if (topo_node_label_set(chip, label, &perr) == -1) { whinge(mod, NULL, "create_chip: " "topo_node_label_set failed\n"); } topo_mod_strfree(mod, label); } else { if (topo_node_resource(chip, &fmri, &err) == -1) { whinge(mod, &nerr, "create_chip: " "topo_node_resource failed\n"); } else { (void) topo_node_fru_set(chip, fmri, 0, &perr); nvlist_free(fmri); } } if (topo_method_register(mod, chip, strands_retire_methods) < 0) whinge(mod, &nerr, "create_chip: " "topo_method_register failed\n"); if (topo_node_range_create(mod, chip, CORE_NODE_NAME, 0, 255)) return (-1); if (strcmp(vendor, "AuthenticAMD") == 0) { if (topo_node_range_create(mod, chip, MCT_NODE_NAME, 0, 255)) return (-1); } create_mc = B_TRUE; } if (FM_AWARE_SMBIOS(mod)) { int status = 0; /* * STATUS * CPU Socket Populated * CPU Socket Unpopulated * Populated : Enabled * Populated : Disabled by BIOS (Setup) * Populated : Disabled by BIOS (Error) * Populated : Idle * * Enumerate core & strand only for Populated : Enabled * Enumerate Off-Chip Memory Controller only for * Populated : Enabled */ status = chip_status_smbios_get(mod, (id_t)smbios_id); if (!status) { whinge(mod, NULL, "create_chip: " "CPU Socket is not populated or is disabled\n"); return (0); } } err = create_core(mod, chip, cpu, auth, smbios_id); /* * Create memory-controller node under a chip for architectures * that may have on-chip memory-controller(s). * If SMBIOS meets FMA needs, when Multi-Chip-Module is * addressed, mc instances should be derived from SMBIOS */ if (strcmp(vendor, "AuthenticAMD") == 0) { amd_mc_create(mod, smbios_id, chip, MCT_NODE_NAME, auth, procnodeid, procnodes_per_pkg, family, model, &nerr); } else if (create_mc && !mc_offchip) onchip_mc_create(mod, smbios_id, chip, MCT_NODE_NAME, auth); return (err == 0 && nerr == 0 ? 0 : -1); }
bool xae::start_core() { if(NULL == m_pHGE) create_core(); return m_pHGE->System_Start(); }
bool xae::init_core() { if(NULL == m_pHGE) create_core(); return m_pHGE->System_Initiate(); }
HGE* xae::get_core() { if(NULL == m_pHGE) create_core(); return m_pHGE; }
int main(int argc, char **argv) { Job job; int i; FILE *pjf; init_job(&job); job.core = create_core(); for (i = 1; i < argc; i++) { char *opt = argv[i]; char *arg = argv[i + 1]; if (opt[0] == '-' && strcmp(opt, "-")) { if (!strcmp(opt, "-L") || !strcmp(opt, "--letter")) { job.just_one_letter = 1; job.just_one_word = 0; } if (!strcmp(opt, "-t") || !strcmp(opt, "--truth")) { i++; if (!arg) usage(); job.just_one_letter = 1; job.just_one_word = 0; job.ground_truth = arg; } if (!strcmp(opt, "-a") || !strcmp(opt, "--append")) { job.append = 1; } else if (!strcmp(opt, "-W") || !strcmp(opt, "--word")) { job.just_one_letter = 0; job.just_one_word = 1; } else if (!strcmp(opt, "-l") || !strcmp(opt, "--lib")) { Library l; i++; if (!arg) usage(); l = library_open(arg); library_discard_prototypes(l); add_to_core(job.core, l); } else if (!strcmp(opt, "-p") || !strcmp(opt, "-j") || !strcmp(opt, "--pjf")) { i++; if (!arg) usage(); job.job_file_path = arg; } else if (!strcmp(opt, "-i") || !strcmp(opt, "--in")) { i++; if (!arg) usage(); job.input_path = arg; } else if (!strcmp(opt, "-o") || !strcmp(opt, "--out")) { i++; if (!arg) usage(); set_core_orange_policy(job.core, 1); job.out_library_path = arg; } else if (!strcmp(opt, "-c") || !strcmp(opt, "--color")) { job.colored_output = 1; } else if (!strcmp(opt, "-n") || !strcmp(opt, "--nocolor")) { job.colored_output = 0; } } } load_image(&job); if (job.just_one_letter) { process_letter(&job, 0, 0, job.width, job.height); putchar('\n'); if (job.ground_truth && job.out_library_path) { Library l = get_core_orange_library(job.core); if (library_shelves_count(l)) { Shelf *s = library_get_shelf(l, 0); if (s->count) { strncpy(s->records[0].text, job.ground_truth, MAX_TEXT_SIZE); } } } } else if (job.just_one_word) { process_word(&job, 0, 0, job.width, job.height); putchar('\n'); } else { if (!job.job_file_path) { fprintf(stderr, "You must specify a pjf file (or either -L or -W).\n"); usage(); } pjf = fopen(job.job_file_path, "r"); if (!pjf) { perror(job.job_file_path); exit(1); } go(&job, pjf); } if (job.out_library_path) library_save(get_core_orange_library(job.core), job.out_library_path, job.append); free_bitmap(job.pixels); free_core(job.core); return 0; }