Detecting Power7 in C

Jason Bacon bacon4000 at gmail.com
Thu Jun 9 13:09:21 UTC 2016


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);

-- 
All wars are civil wars, because all men are brothers ... Each one owes
infinitely more to the human race than to the particular country in
which he was born.
                 -- Francois Fenelon



More information about the freebsd-ppc mailing list