* [PATCH] Fix numactl --show preferred node for case MPOL_BIND
@ 2014-07-15 17:53 Bill Gray
2014-07-16 12:24 ` Cliff Wickman
0 siblings, 1 reply; 2+ messages in thread
From: Bill Gray @ 2014-07-15 17:53 UTC (permalink / raw)
To: linux-numa; +Cc: Cliff Wickman
This patch is mostly to fix an issue in "numactl --show" which did not
print the correct preferred node:
# for i in 0 1 2 3 4 5 6 7 ; do numactl -N$i -m$i numactl -s; done |
grep preferred
preferred node: 4
preferred node: 4
preferred node: 4
preferred node: 4
preferred node: 4
preferred node: 4
preferred node: 4
preferred node: 4
# for i in 0 1 2 3 4 5 6 7 ; do ./numactl -N$i -m$i ./numactl -s; done |
grep preferred
preferred node: 0
preferred node: 1
preferred node: 2
preferred node: 3
preferred node: 4
preferred node: 5
preferred node: 6
preferred node: 7
Patch Changes:
- eliminated bitops.[cho]
- eliminated redundant printcpumask() (which duplicated printmask())
- added find_first() to util.[ch]
- fixed some compiler warnings
These files can be deleted:
- Only in numactl-2.0.9-orig/: bitops.c
- Only in numactl-2.0.9-orig/: bitops.h
- Only in numactl-2.0.9-orig/: numastat
- Only in numactl-2.0.9-orig/test: move_pages
diffstats:
Makefile | 12 ++++++------
bitops.c | 13 -------------
bitops.h | 13 -------------
migspeed.c | 4 +---
numactl.c | 5 ++---
numaint.h | 2 +-
test/move_pages |binary
test/nodemap.c | 1 -
test/tbitmap.c | 10 +++++++++-
util.c | 14 +++++---------
util.h | 2 +-
11 files changed, 25 insertions(+), 51 deletions(-)
Signed-off-by: Bill Gray <bgray@redhat.com>
diff -purN numactl-2.0.9-orig/bitops.c numactl-2.0.9-new/bitops.c
--- numactl-2.0.9-orig/bitops.c 2013-10-08 17:34:57.000000000 -0400
+++ numactl-2.0.9-new/bitops.c 1969-12-31 19:00:00.000000000 -0500
@@ -1,13 +0,0 @@
-#include "bitops.h"
-
-/* extremly dumb */
-int find_first_bit(void *m, int max)
-{
- unsigned long *mask = m;
- int i;
- for (i = 0; i < max; i++) {
- if (test_bit(i, mask))
- break;
- }
- return i;
-}
diff -purN numactl-2.0.9-orig/bitops.h numactl-2.0.9-new/bitops.h
--- numactl-2.0.9-orig/bitops.h 2013-10-08 17:34:57.000000000 -0400
+++ numactl-2.0.9-new/bitops.h 1969-12-31 19:00:00.000000000 -0500
@@ -1,13 +0,0 @@
-#ifndef BITOPS_H
-#define BITOPS_H 1
-
-#define BITS_PER_LONG (sizeof(unsigned long) * 8)
-#define BYTES_PER_LONG (sizeof(long))
-
-#define test_bit(i,p) ((p)[(i) / BITS_PER_LONG] & (1UL <<
((i)%BITS_PER_LONG)))
-#define set_bit(i,p) ((p)[(i) / BITS_PER_LONG] |= (1UL <<
((i)%BITS_PER_LONG)))
-#define clear_bit(i,p) ((p)[(i) / BITS_PER_LONG] &= ~(1UL <<
((i)%BITS_PER_LONG)))
-
-extern int find_first_bit(void *mask, int max);
-
-#endif
diff -purN numactl-2.0.9-orig/Makefile numactl-2.0.9-new/Makefile
--- numactl-2.0.9-orig/Makefile 2013-10-08 17:34:57.000000000 -0400
+++ numactl-2.0.9-new/Makefile 2014-07-15 10:04:59.782383271 -0400
@@ -23,7 +23,7 @@ ifeq ($(THREAD_SUPPORT),yes)
endif
CLEANFILES := numactl.o libnuma.o numactl numademo numademo.o distance.o \
- memhog libnuma.so libnuma.so.1 numamon numamon.o syscall.o
bitops.o \
+ memhog libnuma.so libnuma.so.1 numamon numamon.o syscall.o \
memhog.o util.o stream_main.o stream_lib.o shm.o stream
clearcache.o \
test/pagesize test/tshared test/mynode.o test/tshared.o mt.o
empty.o empty.c \
test/mynode test/ftok test/prefered test/randmap \
@@ -32,8 +32,8 @@ CLEANFILES := numactl.o libnuma.o numact
test/mbind_mig_pages test/migrate_pages \
migratepages migspeed migspeed.o libnuma.a \
test/move_pages test/realloc_test sysfs.o affinity.o \
- test/node-parse rtnetlink.o test/A numastat
-SOURCES := bitops.c libnuma.c distance.c memhog.c numactl.c numademo.c \
+ test/node-parse rtnetlink.o test/A numastat numastat.o
+SOURCES := libnuma.c distance.c memhog.c numactl.c numademo.c \
numamon.c shm.c stream_lib.c stream_main.c syscall.c util.c mt.c \
clearcache.c test/*.c affinity.c sysfs.c rtnetlink.c numastat.c
@@ -51,11 +51,11 @@ all: numactl migratepages migspeed libnu
test/mbind_mig_pages test/migrate_pages test/realloc_test libnuma.a \
test/node-parse numastat
-numactl: numactl.o util.o shm.o bitops.o libnuma.so
+numactl: numactl.o util.o shm.o libnuma.so
numastat: CFLAGS += -std=gnu99
-migratepages: migratepages.c util.o bitops.o libnuma.so
+migratepages: migratepages.c util.o libnuma.so
migspeed: LDLIBS += -lrt
migspeed: migspeed.o util.o libnuma.so
@@ -129,7 +129,7 @@ test/nodemap: test/nodemap.c libnuma.so
test/distance: test/distance.c libnuma.so
-test/tbitmap: test/tbitmap.c libnuma.so
+test/tbitmap: test/tbitmap.c libnuma.so util.o
test/move_pages: test/move_pages.c libnuma.so
diff -purN numactl-2.0.9-orig/migspeed.c numactl-2.0.9-new/migspeed.c
--- numactl-2.0.9-orig/migspeed.c 2013-10-08 17:34:57.000000000 -0400
+++ numactl-2.0.9-new/migspeed.c 2014-07-15 00:32:09.557437964 -0400
@@ -65,7 +65,6 @@ int main(int argc, char *argv[])
{
char *p;
int option;
- int error = 0;
struct timespec result;
unsigned long bytes;
double duration, mbytes;
@@ -82,8 +81,7 @@ int main(int argc, char *argv[])
switch (option) {
case 'h' :
case '?' :
- error = 1;
- break;
+ usage();
case 'v' :
verbose++;
break;
diff -purN numactl-2.0.9-orig/numactl.c numactl-2.0.9-new/numactl.c
--- numactl-2.0.9-orig/numactl.c 2013-10-08 17:34:57.000000000 -0400
+++ numactl-2.0.9-new/numactl.c 2014-07-15 00:23:45.234430937 -0400
@@ -119,7 +119,7 @@ void show_physcpubind(void)
}
err("sched_get_affinity");
}
- printcpumask("physcpubind", cpubuf);
+ printmask("physcpubind", cpubuf);
break;
}
}
@@ -130,7 +130,6 @@ void show(void)
struct bitmask *membind, *interleave, *cpubind;
unsigned long cur;
int policy;
- int numa_num_nodes = numa_num_possible_nodes();
if (numa_available() < 0) {
show_physcpubind();
@@ -166,7 +165,7 @@ void show(void)
printf("%ld (interleave next)\n",cur);
break;
case MPOL_BIND:
- printf("%d\n", find_first_bit(&membind, numa_num_nodes));
+ printf("%d\n", find_first(membind));
break;
}
if (policy == MPOL_INTERLEAVE) {
diff -purN numactl-2.0.9-orig/numaint.h numactl-2.0.9-new/numaint.h
--- numactl-2.0.9-orig/numaint.h 2013-10-08 17:34:57.000000000 -0400
+++ numactl-2.0.9-new/numaint.h 2014-07-15 00:28:55.156446951 -0400
@@ -1,5 +1,4 @@
/* Internal interfaces of libnuma */
-#include "bitops.h"
extern int numa_sched_setaffinity_v1(pid_t pid, unsigned len, const
unsigned long *mask);
extern int numa_sched_getaffinity_v1(pid_t pid, unsigned len, const
unsigned long *mask);
@@ -12,6 +11,7 @@ extern int numa_sched_getaffinity_v2_int
#define SHM_HUGETLB 04000 /* segment will use huge TLB pages */
+#define BITS_PER_LONG (sizeof(unsigned long) * 8)
#define CPU_BYTES(x) (round_up(x, BITS_PER_LONG)/8)
#define CPU_LONGS(x) (CPU_BYTES(x) / sizeof(long))
Binary files numactl-2.0.9-orig/test/move_pages and
numactl-2.0.9-new/test/move_pages differ
diff -purN numactl-2.0.9-orig/test/nodemap.c
numactl-2.0.9-new/test/nodemap.c
--- numactl-2.0.9-orig/test/nodemap.c 2013-10-08 17:34:58.000000000 -0400
+++ numactl-2.0.9-new/test/nodemap.c 2014-07-15 00:23:02.183439045 -0400
@@ -1,5 +1,4 @@
#include "numa.h"
-#include "bitops.h"
#include <stdio.h>
#include <stdlib.h>
diff -purN numactl-2.0.9-orig/test/tbitmap.c
numactl-2.0.9-new/test/tbitmap.c
--- numactl-2.0.9-orig/test/tbitmap.c 2013-10-08 17:34:58.000000000 -0400
+++ numactl-2.0.9-new/test/tbitmap.c 2014-07-15 13:28:35.060368436 -0400
@@ -7,6 +7,13 @@
#include <stdlib.h>
#include <ctype.h>
#include "numa.h"
+#include "util.h"
+
+/* For util.c. Fixme. */
+void usage(void)
+{
+ exit(1);
+}
#define ALIGN(x,a) (((x)+(a)-1)&~((a)-1))
@@ -81,11 +88,12 @@ int main(void)
numa_bitmask_clearall(mask);
numa_bitmask_clearall(mask2);
numa_bitmask_setbit(mask, i);
+ assert(find_first(mask) == i);
bitmap_scnprintf(buf, sizeof(buf), mask);
strcat(buf,"\n");
if (numa_parse_bitmap(buf, mask2) < 0)
assert(0);
- if (memcmp(mask, mask2, sizeof(mask))) {
+ if (memcmp(mask->maskp, mask2->maskp, numa_bitmask_nbytes(mask))) {
bitmap_scnprintf(buf, sizeof(buf), mask2);
printf("mask2 differs: %s\n", buf);
assert(0);
diff -purN numactl-2.0.9-orig/util.c numactl-2.0.9-new/util.c
--- numactl-2.0.9-orig/util.c 2013-10-08 17:34:59.000000000 -0400
+++ numactl-2.0.9-new/util.c 2014-07-15 12:31:04.782342890 -0400
@@ -16,7 +16,6 @@
#include "numa.h"
#include "numaif.h"
#include "util.h"
-#include "bitops.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -28,23 +27,20 @@
void printmask(char *name, struct bitmask *mask)
{
int i;
-
printf("%s: ", name);
- for (i = 0; i <= mask->size; i++)
+ for (i = 0; i < mask->size; i++)
if (numa_bitmask_isbitset(mask, i))
printf("%d ", i);
putchar('\n');
}
-void printcpumask(char *name, struct bitmask *mask)
+int find_first(struct bitmask *mask)
{
int i;
- printf("%s: ", name);
- for (i = 0; i < mask->size; i++) {
+ for (i = 0; i < mask->size; i++)
if (numa_bitmask_isbitset(mask, i))
- printf("%d ", i);
- }
- putchar('\n');
+ return i;
+ return -1;
}
void complain(char *fmt, ...)
diff -purN numactl-2.0.9-orig/util.h numactl-2.0.9-new/util.h
--- numactl-2.0.9-orig/util.h 2013-10-08 17:34:59.000000000 -0400
+++ numactl-2.0.9-new/util.h 2014-07-15 12:31:07.990383476 -0400
@@ -1,5 +1,5 @@
extern void printmask(char *name, struct bitmask *mask);
-extern void printcpumask(char *name, struct bitmask *mask);
+extern int find_first(struct bitmask *mask);
extern struct bitmask *nodemask(char *s);
extern struct bitmask *cpumask(char *s, int *ncpus);
extern int read_sysctl(char *name);
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] Fix numactl --show preferred node for case MPOL_BIND
2014-07-15 17:53 [PATCH] Fix numactl --show preferred node for case MPOL_BIND Bill Gray
@ 2014-07-16 12:24 ` Cliff Wickman
0 siblings, 0 replies; 2+ messages in thread
From: Cliff Wickman @ 2014-07-16 12:24 UTC (permalink / raw)
To: Bill Gray; +Cc: linux-numa
Hi Bill,
Thanks for the fix. It works great for me.
I've started a 2.0.10 version. Your patch is in
ftp://oss.sgi.com/www/projects/libnuma/download/ numactl-2.0.10-rc1.tar.gz
(I was beginning to think that numactl/libnuma were perfect -- no one else
had submitted a patch since last September!)
-Cliff
On Tue, Jul 15, 2014 at 01:53:14PM -0400, Bill Gray wrote:
>
> This patch is mostly to fix an issue in "numactl --show" which did
> not print the correct preferred node:
>
> # for i in 0 1 2 3 4 5 6 7 ; do numactl -N$i -m$i numactl -s; done |
> grep preferred
> preferred node: 4
> preferred node: 4
> preferred node: 4
> preferred node: 4
> preferred node: 4
> preferred node: 4
> preferred node: 4
> preferred node: 4
>
> # for i in 0 1 2 3 4 5 6 7 ; do ./numactl -N$i -m$i ./numactl -s;
> done | grep preferred
> preferred node: 0
> preferred node: 1
> preferred node: 2
> preferred node: 3
> preferred node: 4
> preferred node: 5
> preferred node: 6
> preferred node: 7
>
>
>
> Patch Changes:
> - eliminated bitops.[cho]
> - eliminated redundant printcpumask() (which duplicated printmask())
> - added find_first() to util.[ch]
> - fixed some compiler warnings
>
> These files can be deleted:
> - Only in numactl-2.0.9-orig/: bitops.c
> - Only in numactl-2.0.9-orig/: bitops.h
> - Only in numactl-2.0.9-orig/: numastat
> - Only in numactl-2.0.9-orig/test: move_pages
>
> diffstats:
> Makefile | 12 ++++++------
> bitops.c | 13 -------------
> bitops.h | 13 -------------
> migspeed.c | 4 +---
> numactl.c | 5 ++---
> numaint.h | 2 +-
> test/move_pages |binary
> test/nodemap.c | 1 -
> test/tbitmap.c | 10 +++++++++-
> util.c | 14 +++++---------
> util.h | 2 +-
> 11 files changed, 25 insertions(+), 51 deletions(-)
>
> Signed-off-by: Bill Gray <bgray@redhat.com>
>
>
>
> diff -purN numactl-2.0.9-orig/bitops.c numactl-2.0.9-new/bitops.c
> --- numactl-2.0.9-orig/bitops.c 2013-10-08 17:34:57.000000000 -0400
> +++ numactl-2.0.9-new/bitops.c 1969-12-31 19:00:00.000000000 -0500
> @@ -1,13 +0,0 @@
> -#include "bitops.h"
> -
> -/* extremly dumb */
> -int find_first_bit(void *m, int max)
> -{
> - unsigned long *mask = m;
> - int i;
> - for (i = 0; i < max; i++) {
> - if (test_bit(i, mask))
> - break;
> - }
> - return i;
> -}
> diff -purN numactl-2.0.9-orig/bitops.h numactl-2.0.9-new/bitops.h
> --- numactl-2.0.9-orig/bitops.h 2013-10-08 17:34:57.000000000 -0400
> +++ numactl-2.0.9-new/bitops.h 1969-12-31 19:00:00.000000000 -0500
> @@ -1,13 +0,0 @@
> -#ifndef BITOPS_H
> -#define BITOPS_H 1
> -
> -#define BITS_PER_LONG (sizeof(unsigned long) * 8)
> -#define BYTES_PER_LONG (sizeof(long))
> -
> -#define test_bit(i,p) ((p)[(i) / BITS_PER_LONG] & (1UL <<
> ((i)%BITS_PER_LONG)))
> -#define set_bit(i,p) ((p)[(i) / BITS_PER_LONG] |= (1UL <<
> ((i)%BITS_PER_LONG)))
> -#define clear_bit(i,p) ((p)[(i) / BITS_PER_LONG] &= ~(1UL <<
> ((i)%BITS_PER_LONG)))
> -
> -extern int find_first_bit(void *mask, int max);
> -
> -#endif
> diff -purN numactl-2.0.9-orig/Makefile numactl-2.0.9-new/Makefile
> --- numactl-2.0.9-orig/Makefile 2013-10-08 17:34:57.000000000 -0400
> +++ numactl-2.0.9-new/Makefile 2014-07-15 10:04:59.782383271 -0400
> @@ -23,7 +23,7 @@ ifeq ($(THREAD_SUPPORT),yes)
> endif
>
> CLEANFILES := numactl.o libnuma.o numactl numademo numademo.o distance.o \
> - memhog libnuma.so libnuma.so.1 numamon numamon.o syscall.o
> bitops.o \
> + memhog libnuma.so libnuma.so.1 numamon numamon.o syscall.o \
> memhog.o util.o stream_main.o stream_lib.o shm.o stream
> clearcache.o \
> test/pagesize test/tshared test/mynode.o test/tshared.o mt.o
> empty.o empty.c \
> test/mynode test/ftok test/prefered test/randmap \
> @@ -32,8 +32,8 @@ CLEANFILES := numactl.o libnuma.o numact
> test/mbind_mig_pages test/migrate_pages \
> migratepages migspeed migspeed.o libnuma.a \
> test/move_pages test/realloc_test sysfs.o affinity.o \
> - test/node-parse rtnetlink.o test/A numastat
> -SOURCES := bitops.c libnuma.c distance.c memhog.c numactl.c numademo.c \
> + test/node-parse rtnetlink.o test/A numastat numastat.o
> +SOURCES := libnuma.c distance.c memhog.c numactl.c numademo.c \
> numamon.c shm.c stream_lib.c stream_main.c syscall.c util.c mt.c \
> clearcache.c test/*.c affinity.c sysfs.c rtnetlink.c numastat.c
>
> @@ -51,11 +51,11 @@ all: numactl migratepages migspeed libnu
> test/mbind_mig_pages test/migrate_pages test/realloc_test libnuma.a \
> test/node-parse numastat
>
> -numactl: numactl.o util.o shm.o bitops.o libnuma.so
> +numactl: numactl.o util.o shm.o libnuma.so
>
> numastat: CFLAGS += -std=gnu99
>
> -migratepages: migratepages.c util.o bitops.o libnuma.so
> +migratepages: migratepages.c util.o libnuma.so
>
> migspeed: LDLIBS += -lrt
> migspeed: migspeed.o util.o libnuma.so
> @@ -129,7 +129,7 @@ test/nodemap: test/nodemap.c libnuma.so
>
> test/distance: test/distance.c libnuma.so
>
> -test/tbitmap: test/tbitmap.c libnuma.so
> +test/tbitmap: test/tbitmap.c libnuma.so util.o
>
> test/move_pages: test/move_pages.c libnuma.so
>
> diff -purN numactl-2.0.9-orig/migspeed.c numactl-2.0.9-new/migspeed.c
> --- numactl-2.0.9-orig/migspeed.c 2013-10-08 17:34:57.000000000 -0400
> +++ numactl-2.0.9-new/migspeed.c 2014-07-15 00:32:09.557437964 -0400
> @@ -65,7 +65,6 @@ int main(int argc, char *argv[])
> {
> char *p;
> int option;
> - int error = 0;
> struct timespec result;
> unsigned long bytes;
> double duration, mbytes;
> @@ -82,8 +81,7 @@ int main(int argc, char *argv[])
> switch (option) {
> case 'h' :
> case '?' :
> - error = 1;
> - break;
> + usage();
> case 'v' :
> verbose++;
> break;
> diff -purN numactl-2.0.9-orig/numactl.c numactl-2.0.9-new/numactl.c
> --- numactl-2.0.9-orig/numactl.c 2013-10-08 17:34:57.000000000 -0400
> +++ numactl-2.0.9-new/numactl.c 2014-07-15 00:23:45.234430937 -0400
> @@ -119,7 +119,7 @@ void show_physcpubind(void)
> }
> err("sched_get_affinity");
> }
> - printcpumask("physcpubind", cpubuf);
> + printmask("physcpubind", cpubuf);
> break;
> }
> }
> @@ -130,7 +130,6 @@ void show(void)
> struct bitmask *membind, *interleave, *cpubind;
> unsigned long cur;
> int policy;
> - int numa_num_nodes = numa_num_possible_nodes();
>
> if (numa_available() < 0) {
> show_physcpubind();
> @@ -166,7 +165,7 @@ void show(void)
> printf("%ld (interleave next)\n",cur);
> break;
> case MPOL_BIND:
> - printf("%d\n", find_first_bit(&membind, numa_num_nodes));
> + printf("%d\n", find_first(membind));
> break;
> }
> if (policy == MPOL_INTERLEAVE) {
> diff -purN numactl-2.0.9-orig/numaint.h numactl-2.0.9-new/numaint.h
> --- numactl-2.0.9-orig/numaint.h 2013-10-08 17:34:57.000000000 -0400
> +++ numactl-2.0.9-new/numaint.h 2014-07-15 00:28:55.156446951 -0400
> @@ -1,5 +1,4 @@
> /* Internal interfaces of libnuma */
> -#include "bitops.h"
>
> extern int numa_sched_setaffinity_v1(pid_t pid, unsigned len, const
> unsigned long *mask);
> extern int numa_sched_getaffinity_v1(pid_t pid, unsigned len, const
> unsigned long *mask);
> @@ -12,6 +11,7 @@ extern int numa_sched_getaffinity_v2_int
>
> #define SHM_HUGETLB 04000 /* segment will use huge TLB pages */
>
> +#define BITS_PER_LONG (sizeof(unsigned long) * 8)
> #define CPU_BYTES(x) (round_up(x, BITS_PER_LONG)/8)
> #define CPU_LONGS(x) (CPU_BYTES(x) / sizeof(long))
>
> Binary files numactl-2.0.9-orig/test/move_pages and
> numactl-2.0.9-new/test/move_pages differ
> diff -purN numactl-2.0.9-orig/test/nodemap.c
> numactl-2.0.9-new/test/nodemap.c
> --- numactl-2.0.9-orig/test/nodemap.c 2013-10-08 17:34:58.000000000 -0400
> +++ numactl-2.0.9-new/test/nodemap.c 2014-07-15 00:23:02.183439045 -0400
> @@ -1,5 +1,4 @@
> #include "numa.h"
> -#include "bitops.h"
> #include <stdio.h>
> #include <stdlib.h>
>
> diff -purN numactl-2.0.9-orig/test/tbitmap.c
> numactl-2.0.9-new/test/tbitmap.c
> --- numactl-2.0.9-orig/test/tbitmap.c 2013-10-08 17:34:58.000000000 -0400
> +++ numactl-2.0.9-new/test/tbitmap.c 2014-07-15 13:28:35.060368436 -0400
> @@ -7,6 +7,13 @@
> #include <stdlib.h>
> #include <ctype.h>
> #include "numa.h"
> +#include "util.h"
> +
> +/* For util.c. Fixme. */
> +void usage(void)
> +{
> + exit(1);
> +}
>
> #define ALIGN(x,a) (((x)+(a)-1)&~((a)-1))
>
> @@ -81,11 +88,12 @@ int main(void)
> numa_bitmask_clearall(mask);
> numa_bitmask_clearall(mask2);
> numa_bitmask_setbit(mask, i);
> + assert(find_first(mask) == i);
> bitmap_scnprintf(buf, sizeof(buf), mask);
> strcat(buf,"\n");
> if (numa_parse_bitmap(buf, mask2) < 0)
> assert(0);
> - if (memcmp(mask, mask2, sizeof(mask))) {
> + if (memcmp(mask->maskp, mask2->maskp, numa_bitmask_nbytes(mask))) {
> bitmap_scnprintf(buf, sizeof(buf), mask2);
> printf("mask2 differs: %s\n", buf);
> assert(0);
> diff -purN numactl-2.0.9-orig/util.c numactl-2.0.9-new/util.c
> --- numactl-2.0.9-orig/util.c 2013-10-08 17:34:59.000000000 -0400
> +++ numactl-2.0.9-new/util.c 2014-07-15 12:31:04.782342890 -0400
> @@ -16,7 +16,6 @@
> #include "numa.h"
> #include "numaif.h"
> #include "util.h"
> -#include "bitops.h"
> #include <stdio.h>
> #include <string.h>
> #include <stdlib.h>
> @@ -28,23 +27,20 @@
> void printmask(char *name, struct bitmask *mask)
> {
> int i;
> -
> printf("%s: ", name);
> - for (i = 0; i <= mask->size; i++)
> + for (i = 0; i < mask->size; i++)
> if (numa_bitmask_isbitset(mask, i))
> printf("%d ", i);
> putchar('\n');
> }
>
> -void printcpumask(char *name, struct bitmask *mask)
> +int find_first(struct bitmask *mask)
> {
> int i;
> - printf("%s: ", name);
> - for (i = 0; i < mask->size; i++) {
> + for (i = 0; i < mask->size; i++)
> if (numa_bitmask_isbitset(mask, i))
> - printf("%d ", i);
> - }
> - putchar('\n');
> + return i;
> + return -1;
> }
>
> void complain(char *fmt, ...)
> diff -purN numactl-2.0.9-orig/util.h numactl-2.0.9-new/util.h
> --- numactl-2.0.9-orig/util.h 2013-10-08 17:34:59.000000000 -0400
> +++ numactl-2.0.9-new/util.h 2014-07-15 12:31:07.990383476 -0400
> @@ -1,5 +1,5 @@
> extern void printmask(char *name, struct bitmask *mask);
> -extern void printcpumask(char *name, struct bitmask *mask);
> +extern int find_first(struct bitmask *mask);
> extern struct bitmask *nodemask(char *s);
> extern struct bitmask *cpumask(char *s, int *ncpus);
> extern int read_sysctl(char *name);
--
Cliff Wickman
SGI
cpw@sgi.com
(651) 683-3824
(651) 482-9347h
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-07-16 12:24 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-15 17:53 [PATCH] Fix numactl --show preferred node for case MPOL_BIND Bill Gray
2014-07-16 12:24 ` Cliff Wickman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).