Date: Thu, 9 Jun 2016 11:47:29 -0400 From: Justin Hibbits <chmeeedalf@gmail.com> To: Jason Bacon <bacon4000@gmail.com> Cc: "freebsd-ppc@freebsd.org" <freebsd-ppc@freebsd.org> Subject: Re: Detecting Power7 in C Message-ID: <3FD85BCC-4304-4DBA-8B72-5A6A79C120A6@gmail.com> In-Reply-To: <765d3292-78ae-8b02-8a5b-43bafc68d9e8@gmail.com> References: <765d3292-78ae-8b02-8a5b-43bafc68d9e8@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3FD85BCC-4304-4DBA-8B72-5A6A79C120A6>