diff --git a/numatop.cpuid.patch b/numatop.cpuid.patch new file mode 100644 index 0000000..6f2e370 --- /dev/null +++ b/numatop.cpuid.patch @@ -0,0 +1,140 @@ +diff --git i/common/os/os_util.c w/common/os/os_util.c +index cd73aae..535f116 100644 +--- i/common/os/os_util.c ++++ w/common/os/os_util.c +@@ -231,7 +231,7 @@ calibrate_cpuinfo(double *nsofclk, uint64_t *clkofsec) + *nsofclk = (double)NS_SEC / *clkofsec; + + debug_print(NULL, 2, "calibrate_cpuinfo: nsofclk = %.4f, " +- "clkofsec = %lu\n", *nsofclk, *clkofsec); ++ "clkofsec = %"PRIu64"\n", *nsofclk, *clkofsec); + + return (0); + } +@@ -267,7 +267,7 @@ calibrate_cpufreq(double *nsofclk, uint64_t *clkofsec) + *nsofclk = (double)NS_SEC / *clkofsec; + + debug_print(NULL, 2, "calibrate_cpufreq: nsofclk = %.4f, " +- "clkofsec = %lu\n", *nsofclk, *clkofsec); ++ "clkofsec = %"PRIu64"\n", *nsofclk, *clkofsec); + + return (0); + } +@@ -321,7 +321,7 @@ calibrate_by_tsc(double *nsofclk, uint64_t *clkofsec) + processor_unbind(); + + debug_print(NULL, 2, "calibrate_by_tsc: nsofclk = %.4f, " +- "clkofsec = %lu\n", *nsofclk, *clkofsec); ++ "clkofsec = %"PRIu64"\n", *nsofclk, *clkofsec); + } + + void +diff --git i/common/os/os_win.c w/common/os/os_win.c +index b80bcdf..1fb1781 100644 +--- i/common/os/os_win.c ++++ w/common/os/os_win.c +@@ -889,11 +889,11 @@ latnode_data_show(track_proc_t *proc, dyn_latnode_t *dyn, map_entry_t *entry, + win_size2str(dyn->size, size_str, sizeof (size_str)); + if (lwp != NULL) { + (void) snprintf(content, sizeof (content), +- "Memory area(%lX, %s), thread(%d)", ++ "Memory area(%"PRIX64", %s), thread(%d)", + dyn->addr, size_str, lwp->id); + } else { + (void) snprintf(content, sizeof (content), +- "Memory area(%lX, %s), process(%d)", ++ "Memory area(%"PRIX64", %s), process(%d)", + dyn->addr, size_str, proc->pid); + } + +diff --git i/common/util.c w/common/util.c +index cc75188..9dc3b71 100644 +--- i/common/util.c ++++ w/common/util.c +@@ -126,7 +126,7 @@ debug_print(FILE *out, int level, const char *fmt, ...) + if (s_logfile != NULL) { + (void) pthread_mutex_lock(&s_debug_ctl.mutex); + (void) fprintf(s_logfile, +- "%lu: ", current_ms() / 1000); ++ "%"PRIu64": ", current_ms() / 1000); + va_start(ap, fmt); + (void) vfprintf(s_logfile, fmt, ap); + va_end(ap); +@@ -137,7 +137,7 @@ debug_print(FILE *out, int level, const char *fmt, ...) + } else { + (void) pthread_mutex_lock(&s_debug_ctl.mutex); + (void) fprintf(out, +- "%lu: ", current_ms() / 1000); ++ "%"PRIu64": ", current_ms() / 1000); + va_start(ap, fmt); + (void) vfprintf(out, fmt, ap); + va_end(ap); +@@ -319,6 +319,7 @@ static void + cpuid(unsigned int *eax, unsigned int *ebx, unsigned int *ecx, + unsigned int *edx) + { ++#if __x86_64 + __asm volatile( + "cpuid\n\t" + :"=a" (*eax), +@@ -326,6 +327,20 @@ cpuid(unsigned int *eax, unsigned int *ebx, unsigned int *ecx, + "=c" (*ecx), + "=d" (*edx) + :"a" (*eax)); ++#else ++ __asm volatile( ++ "push %%ebx\n\t" ++ "cpuid\n\t" ++ "mov %%ebx, (%4)\n\t" ++ "pop %%ebx" ++ :"=a" (*eax), ++ "=c" (*ecx), ++ "=d" (*edx) ++ :"0" (*eax), ++ "S" (ebx) ++ :"memory"); ++#endif ++ + } + + /* +diff --git i/common/win.c w/common/win.c +index 3321a00..cb83397 100644 +--- i/common/win.c ++++ w/common/win.c +@@ -1979,17 +1979,17 @@ win_size2str(uint64_t size, char *buf, int bufsize) + * "buf" points to a big enough buffer. + */ + if ((i = (size / KB_BYTES)) < KB_BYTES) { +- (void) snprintf(buf, bufsize, "%luK", i); ++ (void) snprintf(buf, bufsize, "%"PRIu64"K", i); + } else if ((j = i / KB_BYTES) < KB_BYTES) { + if ((i % KB_BYTES) == 0) { +- (void) snprintf(buf, bufsize, "%luM", j); ++ (void) snprintf(buf, bufsize, "%"PRIu64"M", j); + } else { + (void) snprintf(buf, bufsize, "%.1fM", + (double)i / (double)KB_BYTES); + } + } else { + if ((j % KB_BYTES) == 0) { +- (void) snprintf(buf, bufsize, "%luG", j / KB_BYTES); ++ (void) snprintf(buf, bufsize, "%"PRIu64"G", j / KB_BYTES); + } else { + (void) snprintf(buf, bufsize, "%.1fG", + (double)j / (double)KB_BYTES); +@@ -2314,12 +2314,12 @@ win_lat_data_show(track_proc_t *proc, dyn_lat_t *dyn, boolean_t *note_out) + if (lwp == NULL) { + (void) snprintf(content, sizeof (content), + "Monitoring memory areas (pid: %d, " +- "AVG.LAT: %luns, interval: %s)", ++ "AVG.LAT: %"PRIu64"ns, interval: %s)", + proc->pid, cyc2ns(lat), intval_buf); + } else { + (void) snprintf(content, sizeof (content), + "Monitoring memory areas (lwpid: %d, " +- "AVG.LAT: %luns, interval: %s)", ++ "AVG.LAT: %"PRIu64"ns, interval: %s)", + lwp->id, cyc2ns(lat), intval_buf); + } + diff --git a/numatop.spec b/numatop.spec index 14472bf..ad7e79b 100644 --- a/numatop.spec +++ b/numatop.spec @@ -2,7 +2,7 @@ Name: numatop Version: 1.0.2 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Memory access locality characterization and analysis License: BSD @@ -10,6 +10,9 @@ URL: https://01.org/numatop Source0: https://01.org/sites/default/files/%{name}_linux_%{version}.tar.gz BuildRequires: numactl-devel ncurses-devel +# https://github.com/01org/numatop/pull/5 +Patch0: numatop.cpuid.patch + # no NUMA ExcludeArch: %{arm} s390 s390x @@ -25,6 +28,7 @@ NumaTOP supports the Intel Xeon processors. %prep %setup -q -n %{name} +%patch0 -p1 %build @@ -44,6 +48,9 @@ make install PREFIXDIR=%{buildroot}%{_prefix} MANDIR=%{buildroot}%{_mandir}/man8 %changelog +* Mon Jun 30 2014 Dridi Boukelmoune - 1.0.2-3 +- Backport and rebase 1.0.1 patch + * Sat Jun 07 2014 Fedora Release Engineering - 1.0.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild