float3 CAICallback::GetFeaturePos (int feature) { verify (); if (CHECK_FEATURE(feature)) { CFeature *f = featureHandler->features [feature]; int allyteam = gs->AllyTeam(team); if (f->allyteam < 0 || f->allyteam == allyteam || loshandler->InLos(f->pos,allyteam)) return f->pos; } return ZeroVector; }
float CAICallback::GetFeatureReclaimLeft (int feature) { verify (); if (CHECK_FEATURE(feature)) { CFeature *f = featureHandler->features [feature]; int allyteam = gs->AllyTeam(team); if (f->allyteam < 0 || f->allyteam == allyteam || loshandler->InLos(f->pos,allyteam)) return f->reclaimLeft; } return 0.0f; }
FeatureDef* CAICallback::GetFeatureDef (int feature) { verify (); if (CHECK_FEATURE(feature)) { CFeature *f = featureHandler->features [feature]; int allyteam = gs->AllyTeam(team); if (f->allyteam < 0 || f->allyteam == allyteam || loshandler->InLos(f->pos,allyteam)) return f->def; } return 0; }
int cpu_validate_cpuinfo(void) { CpuinfoEntry *cpu_info; CpuinfoPpc64Entry *cpu_ppc64_entry; struct cr_img *img; int ret = -1; img = open_image(CR_FD_CPUINFO, O_RSTR); if (!img) return -1; if (pb_read_one(img, &cpu_info, PB_CPUINFO) < 0) goto error; if (cpu_info->n_ppc64_entry != 1) { pr_err("No PPC64 related entry in image"); goto error; } cpu_ppc64_entry = cpu_info->ppc64_entry[0]; if (cpu_ppc64_entry->endian != CURRENT_ENDIANNESS) { pr_err("Bad endianness"); goto error; } if (cpu_ppc64_entry->n_hwcap != 2) { pr_err("Hardware capabilities information missing\n"); goto error; } #define CHECK_FEATURE(s,f) do { \ if ((cpu_ppc64_entry->hwcap[s] & f) && \ !(rt_cpuinfo.hwcap[s] & f)) { \ pr_err("CPU Feature %s required by image " \ "is not supported on host.\n", #f); \ goto error; \ } \ } while(0) #define REQUIRE_FEATURE(s,f) do { \ if (!(cpu_ppc64_entry->hwcap[s] & f)) { \ pr_err("CPU Feature %s missing in image.\n", #f); \ goto error; \ } \ } while(0) REQUIRE_FEATURE(0, PPC_FEATURE_64); REQUIRE_FEATURE(0, PPC_FEATURE_HAS_FPU); REQUIRE_FEATURE(0, PPC_FEATURE_HAS_MMU); REQUIRE_FEATURE(0, PPC_FEATURE_HAS_VSX); REQUIRE_FEATURE(1, PPC_FEATURE2_ARCH_2_07); CHECK_FEATURE(0, PPC_FEATURE_TRUE_LE); CHECK_FEATURE(1, PPC_FEATURE2_HTM); CHECK_FEATURE(1, PPC_FEATURE2_DSCR); CHECK_FEATURE(1, PPC_FEATURE2_EBB); CHECK_FEATURE(1, PPC_FEATURE2_ISEL); CHECK_FEATURE(1, PPC_FEATURE2_TAR); CHECK_FEATURE(1, PPC_FEATURE2_VEC_CRYPTO); ret = 0; error: close_image(img); return ret; }