Detecting Power7 in C
Justin Hibbits
chmeeedalf at gmail.com
Thu Jun 9 15:47:34 UTC 2016
On Jun 9, 2016, at 9:09 AM, Jason Bacon wrote:
>
> I'm porting the SLURM task/affinity plugin to FreeBSD and wondering
> what's the best way to detect whether we're running on a power7
> processor.
>
> The Linux code is below. I could do something similar with
> dmesg.boot on FreeBSD, but hoping there's a more elegant way within
> a C program.
>
> If I have to use dmesg.boot, what string would I be looking for? I
> don't have a power7 installation at the moment.
>
> Thanks,
>
> Jason
>
> FILE *cpu_info_file;
>
> char buffer[128];
> char* _cpuinfo_path = "/proc/cpuinfo";
> cpu_info_file = fopen(_cpuinfo_path, "r");
> if (cpu_info_file == NULL) {
> error("_get_is_power: error %d opening %s",
> errno,
> _cpuinfo_path);
> return false; /* assume not power processor
> */
> }
>
> is_power = 0;
> while (fgets(buffer, sizeof(buffer), cpu_info_file) !
> = NULL) {
> if (strstr(buffer, "POWER7")) {
> is_power = 1;
> break;
> }
> }
> fclose(cpu_info_file);
You can use the hw.model sysctl. For POWER7, the string you would
receive is "POWER7". For all the model strings you can get, see the
strings in the models[] table in sys/powerpc/powerpc/cpu.c .
- Justin
More information about the freebsd-ppc
mailing list