Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package numactl for openSUSE:Factory checked 
in at 2024-10-11 17:01:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/numactl (Old)
 and      /work/SRC/openSUSE:Factory/.numactl.new.19354 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "numactl"

Fri Oct 11 17:01:24 2024 rev:75 rq:1206653 version:2.0.18.10.g6c14bd5

Changes:
--------
--- /work/SRC/openSUSE:Factory/numactl/numactl.changes  2024-02-29 
21:49:21.755804926 +0100
+++ /work/SRC/openSUSE:Factory/.numactl.new.19354/numactl.changes       
2024-10-11 17:01:34.756824067 +0200
@@ -1,0 +2,25 @@
+Thu Oct 10 08:37:28 UTC 2024 - [email protected]
+
+- Update to version 2.0.18.10.g6c14bd5:
+  * Save and restore errno when probing for SET_PREFERRED_MANY
+  * libnuma: fix nodemask allocation size for get_mempolicy
+  * Update numactl.c
+  * numastat: eliminate hard-coded tables
+  * Don't fail build when set_mempolicy_home_node syscall is unknown
+  * numactl: Add documentation for weighted interleave
+  * numactl: Fix RESOURCE_LEAK in show()
+  * numademo: Fix the using of the uninitialized value
+  * Add `-w` and `--weighted-interleave` for weighted interleave mode
+  * Fix fallback for set_mempolicy_home_node syscall
+
+-------------------------------------------------------------------
+Mon May 13 12:59:04 UTC 2024 - [email protected]
+
+- Update to version 2.0.18.5.g4bfdcc6:
+  * numactl: Add documentation for weighted interleave
+  * numactl: Fix RESOURCE_LEAK in show()
+  * numademo: Fix the using of the uninitialized value
+  * Add `-w` and `--weighted-interleave` for weighted interleave mode
+  * Fix fallback for set_mempolicy_home_node syscall
+
+-------------------------------------------------------------------

Old:
----
  numactl-2.0.18.0.g3871b1c.obscpio

New:
----
  numactl-2.0.18.10.g6c14bd5.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ numactl.spec ++++++
--- /var/tmp/diff_new_pack.FHBoAS/_old  2024-10-11 17:01:35.288846196 +0200
+++ /var/tmp/diff_new_pack.FHBoAS/_new  2024-10-11 17:01:35.288846196 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           numactl
-Version:        2.0.18.0.g3871b1c
+Version:        2.0.18.10.g6c14bd5
 Release:        0
 Summary:        NUMA Policy Control
 License:        GPL-2.0-only

++++++ _service ++++++
--- /var/tmp/diff_new_pack.FHBoAS/_old  2024-10-11 17:01:35.320847527 +0200
+++ /var/tmp/diff_new_pack.FHBoAS/_new  2024-10-11 17:01:35.324847693 +0200
@@ -1,13 +1,12 @@
 <services>
-  <service name="obs_scm" mode="localonly">
+  <service name="obs_scm" mode="manual">
     <param name="scm">git</param>
-    <param name="url">https://github.com/numactl/numactl</param>
-    <param name="revision">HEAD</param>
+    <param name="url">http://github.com/numactl/numactl</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="versionformat">@PARENT_TAG@.@[email protected]%h</param>
     <param name="changesgenerate">enable</param>
   </service>
-  <service name="set_version" mode="localonly"/>
+  <service name="set_version" mode="manual"/>
   <service name="tar" mode="buildtime"/>
   <service name="recompress" mode="buildtime">
     <param name="file">*.tar</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.FHBoAS/_old  2024-10-11 17:01:35.344848526 +0200
+++ /var/tmp/diff_new_pack.FHBoAS/_new  2024-10-11 17:01:35.348848692 +0200
@@ -1,6 +1,8 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/numactl/numactl</param>
-              <param 
name="changesrevision">3871b1c42fc71bceadafd745d2eff5dddfc2d67e</param></service></servicedata>
+              <param 
name="changesrevision">4bfdcc6e6111c5bf5d4ccb46f227aea80cc57159</param></service><service
 name="tar_scm">
+                <param name="url">http://github.com/numactl/numactl</param>
+              <param 
name="changesrevision">6c14bd59d438ebb5ef828e393e8563ba18f59cb2</param></service></servicedata>
 (No newline at EOF)
 

++++++ numactl-2.0.18.0.g3871b1c.obscpio -> numactl-2.0.18.10.g6c14bd5.obscpio 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/VERSION 
new/numactl-2.0.18.10.g6c14bd5/VERSION
--- old/numactl-2.0.18.0.g3871b1c/VERSION       2024-02-07 08:20:36.000000000 
+0100
+++ new/numactl-2.0.18.10.g6c14bd5/VERSION      2024-09-17 15:45:02.000000000 
+0200
@@ -1 +1 @@
-2.0.18
+2.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/libnuma.c 
new/numactl-2.0.18.10.g6c14bd5/libnuma.c
--- old/numactl-2.0.18.0.g3871b1c/libnuma.c     2024-02-07 08:20:36.000000000 
+0100
+++ new/numactl-2.0.18.10.g6c14bd5/libnuma.c    2024-09-17 15:45:02.000000000 
+0200
@@ -427,7 +427,7 @@
                nodemask_sz = 16;
                do {
                        nodemask_sz <<= 1;
-                       mask = realloc(mask, nodemask_sz / 8);
+                       mask = realloc(mask, nodemask_sz / 8 + sizeof(unsigned 
long));
                        if (!mask)
                                return;
                } while (get_mempolicy(&pol, mask, nodemask_sz + 1, 0, 0) < 0 
&& errno == EINVAL &&
@@ -627,10 +627,13 @@
 {
        int oldp;
        struct bitmask *bmp, *tmp;
+       int old_errno;
 
        if (has_preferred_many >= 0)
                return;
 
+       old_errno = errno;
+
        has_preferred_many = 0;
 
        bmp = numa_allocate_nodemask();
@@ -650,6 +653,7 @@
 out:
        numa_bitmask_free(tmp);
        numa_bitmask_free(bmp);
+       errno = old_errno;
 }
 
 /*
@@ -1033,6 +1037,15 @@
                setpol(MPOL_INTERLEAVE, bmp);
 }
 
+void
+numa_set_weighted_interleave_mask(struct bitmask *bmp)
+{
+       if (numa_bitmask_equal(bmp, numa_no_nodes_ptr))
+               setpol(MPOL_DEFAULT, bmp);
+       else
+               setpol(MPOL_WEIGHTED_INTERLEAVE, bmp);
+}
+
 SYMVER("numa_get_interleave_mask_v1", "numa_get_interleave_mask@libnuma_1.1")
 nodemask_t
 numa_get_interleave_mask_v1(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numa.h 
new/numactl-2.0.18.10.g6c14bd5/numa.h
--- old/numactl-2.0.18.0.g3871b1c/numa.h        2024-02-07 08:20:36.000000000 
+0100
+++ new/numactl-2.0.18.10.g6c14bd5/numa.h       2024-09-17 15:45:02.000000000 
+0200
@@ -172,6 +172,9 @@
 /* Set the NUMA node interleaving mask. 0 to turn off interleaving */
 void numa_set_interleave_mask(struct bitmask *nodemask);
 
+/* Set the NUMA node weighted interleaving mask. 0 to turn off */
+void numa_set_weighted_interleave_mask(struct bitmask *nodemask);
+
 /* Return the current interleaving mask */
 struct bitmask *numa_get_interleave_mask(void);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numactl.8 
new/numactl-2.0.18.10.g6c14bd5/numactl.8
--- old/numactl-2.0.18.0.g3871b1c/numactl.8     2024-02-07 08:20:36.000000000 
+0100
+++ new/numactl-2.0.18.10.g6c14bd5/numactl.8    2024-09-17 15:45:02.000000000 
+0200
@@ -29,6 +29,8 @@
 ] [
 .B \-\-interleave nodes
 ] [
+.B \-\-weighted\-interleave nodes
+] [
 .B \-\-preferred node 
 ] [
 .B \-\-preferred-many nodes
@@ -127,6 +129,13 @@
 to other nodes.
 Multiple nodes may be specified on --interleave, --membind and --cpunodebind.
 .TP
+.B \-\-weighted\-interleave=nodes, \-w nodes
+Set a weighted memory interleave policy. Memory will be allocated using the
+weighted ratio for each node, which can be read from
+.I /sys/kernel/mm/mempolicy/weighted_interleave/node*.
+When memory cannot be allocated on the current interleave target fall back
+to other nodes.
+.TP
 .B \-\-membind=nodes, \-m nodes
 Only allocate memory from nodes.  Allocation will fail when there
 is not enough memory available on these nodes.
@@ -298,6 +307,9 @@
 numactl \-\-interleave=all bigdatabase arguments
 Run big database with its memory interleaved on all CPUs.
 
+numactl \-\-weighted\-interleave=all bigdatabase arguments
+Run big database with its memory interleaved with weighted ratio on all CPUs.
+
 numactl \-\-cpunodebind=0 \-\-membind=0,1 process
 Run process on node 0 with memory allocated on node 0 and 1.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numactl.c 
new/numactl-2.0.18.10.g6c14bd5/numactl.c
--- old/numactl-2.0.18.0.g3871b1c/numactl.c     2024-02-07 08:20:36.000000000 
+0100
+++ new/numactl-2.0.18.10.g6c14bd5/numactl.c    2024-09-17 15:45:02.000000000 
+0200
@@ -43,6 +43,7 @@
 static struct option opts[] = {
        {"all", 0, 0, 'a'},
        {"interleave", 1, 0, 'i' },
+       {"weighted-interleave", 1, 0, 'w' },
        {"preferred", 1, 0, 'p' },
        {"preferred-many", 1, 0, 'P' },
        {"cpubind", 1, 0, 'c' },
@@ -74,8 +75,9 @@
 static void usage(void)
 {
        fprintf(stderr,
-               "usage: numactl [--all | -a] [--balancing | -b] [--interleave= 
| -i <nodes>]\n"
-               "               [--preferred= | -p <node>] [--preferred-many= | 
-P <nodes>]\n"
+               "usage: numactl [--all | -a] [--balancing | -b]\n"
+               "               [--interleave= | -i <nodes>] 
[--weighted-interleave= | -w <nodes>]\n"
+               "               [--preferred= | -p <node>] [--preferred-many= | 
-P <nodes>]\n"
                "               [--physcpubind= | -C <cpus>] [--cpunodebind= | 
-N <nodes>]\n"
                "               [--membind= | -m <nodes>] [--localalloc | -l] 
command args ...\n"
                "               [--localalloc | -l] command args ...\n"
@@ -89,7 +91,8 @@
                "               [--huge | -u] [--touch | -T] \n"
                "               memory policy [--dump | -d] [--dump-nodes | 
-D]\n"
                "\n"
-               "memory policy is --interleave | -i, --preferred | -p, 
--membind | -m, --localalloc | -l\n"
+               "memory policy is --preferred | -p, --membind | -m, 
--localalloc | -l,\n"
+               "                 --interleave | -i, --weighted-interleave | 
-w\n"
                "<nodes> is a comma delimited list of node numbers or A-B 
ranges or all.\n"
                "Instead of a number a node can also be:\n"
                "  netdev:DEV the node connected to network device DEV\n"
@@ -195,6 +198,7 @@
        printmask("nodebind", cpubind);
        printmask("membind", membind);
        printmask("preferred", preferred);
+       numa_bitmask_free(preferred);
 }
 
 static char *fmt_mem(unsigned long long mem, char *buf)
@@ -221,19 +225,19 @@
                return;
        }
        printf("node distances:\n");
-       printf("node ");
+       printf("node  ");
        for (i = 0; i <= maxnode; i++)
                if (numa_bitmask_isbitset(numa_nodes_ptr, i))
-                       printf("% 3d ", i);
+                       printf("% 4d ", i);
        printf("\n");
        for (i = 0; i <= maxnode; i++) {
                if (!numa_bitmask_isbitset(numa_nodes_ptr, i))
                        continue;
-               printf("% 3d: ", i);
+               printf("% 4d: ", i);
                for (k = 0; k <= maxnode; k++)
                        if (numa_bitmask_isbitset(numa_nodes_ptr, i) &&
                            numa_bitmask_isbitset(numa_nodes_ptr, k))
-                               printf("% 3d ", numa_distance(i,k));
+                               printf("% 4d ", numa_distance(i,k));
                printf("\n");
        }
 }
@@ -479,6 +483,7 @@
        int parse_all = 0;
        int numa_balancing = 0;
        int do_hardware = 0;
+       int weighted_interleave = 0;
 
        get_short_opts(opts,shortopts);
        while ((c = getopt_long(ac, av, shortopts, opts, NULL)) != -1) {
@@ -494,6 +499,9 @@
                        nopolicy();
                        numa_balancing = 1;
                        break;
+               case 'w': /* --weighted-interleave */
+                       weighted_interleave = 1;
+                       /* fall-through - logic is the same as interleave */
                case 'i': /* --interleave */
                        checknuma();
                        if (parse_all)
@@ -507,11 +515,18 @@
 
                        errno = 0;
                        did_node_cpu_parse = 1;
-                       setpolicy(MPOL_INTERLEAVE);
+                       if (weighted_interleave)
+                               setpolicy(MPOL_WEIGHTED_INTERLEAVE);
+                       else
+                               setpolicy(MPOL_INTERLEAVE);
                        if (shmfd >= 0)
                                numa_interleave_memory(shmptr, shmlen, mask);
-                       else
-                               numa_set_interleave_mask(mask);
+                       else {
+                               if (weighted_interleave)
+                                       numa_set_weighted_interleave_mask(mask);
+                               else
+                                       numa_set_interleave_mask(mask);
+                       }
                        checkerror("setting interleave mask");
                        break;
                case 'N': /* --cpunodebind */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numademo.c 
new/numactl-2.0.18.10.g6c14bd5/numademo.c
--- old/numactl-2.0.18.0.g3871b1c/numademo.c    2024-02-07 08:20:36.000000000 
+0100
+++ new/numactl-2.0.18.10.g6c14bd5/numademo.c   2024-09-17 15:45:02.000000000 
+0200
@@ -250,6 +250,8 @@
 
 #endif
                default:
+                       gettimeofday(&start,NULL);
+                       gettimeofday(&end,NULL);
                        break;
                }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numaif.h 
new/numactl-2.0.18.10.g6c14bd5/numaif.h
--- old/numactl-2.0.18.0.g3871b1c/numaif.h      2024-02-07 08:20:36.000000000 
+0100
+++ new/numactl-2.0.18.10.g6c14bd5/numaif.h     2024-09-17 15:45:02.000000000 
+0200
@@ -31,7 +31,8 @@
 #define MPOL_INTERLEAVE  3
 #define MPOL_LOCAL       4
 #define MPOL_PREFERRED_MANY   5
-#define MPOL_MAX         6
+#define MPOL_WEIGHTED_INTERLEAVE   6
+#define MPOL_MAX         7
 
 /* Flags for set_mempolicy, specified in mode */
 #define MPOL_F_NUMA_BALANCING  (1 << 13) /* Optimize with NUMA balancing if 
possible */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numastat.c 
new/numactl-2.0.18.10.g6c14bd5/numastat.c
--- old/numactl-2.0.18.0.g3871b1c/numastat.c    2024-02-07 08:20:36.000000000 
+0100
+++ new/numactl-2.0.18.10.g6c14bd5/numastat.c   2024-09-17 15:45:02.000000000 
+0200
@@ -84,65 +84,8 @@
 
 #define PROCESS_MEMINFO_ROWS (sizeof(process_meminfo) / 
sizeof(process_meminfo[0]))
 
-static meminfo_t numastat_meminfo[] = {
-        { 0, "numa_hit", "Numa_Hit" },
-        { 1, "numa_miss", "Numa_Miss" },
-        { 2, "numa_foreign", "Numa_Foreign" },
-        { 3, "interleave_hit", "Interleave_Hit" },
-        { 4, "local_node", "Local_Node" },
-        { 5, "other_node", "Other_Node" },
-};
-
-#define NUMASTAT_MEMINFO_ROWS (sizeof(numastat_meminfo) / 
sizeof(numastat_meminfo[0]))
-
-static meminfo_t system_meminfo[] = {
-        {  0, "MemTotal", "MemTotal" },
-        {  1, "MemFree", "MemFree" },
-        {  2, "MemUsed", "MemUsed" },
-        {  3, "SwapCached", "SwapCached" },
-        {  4, "HighTotal", "HighTotal" },
-        {  5, "HighFree", "HighFree" },
-        {  6, "LowTotal", "LowTotal" },
-        {  7, "LowFree", "LowFree" },
-        {  8, "Active", "Active" },
-        {  9, "Inactive", "Inactive" },
-        { 10, "Active(anon)", "Active(anon)" },
-        { 11, "Inactive(anon)", "Inactive(anon)" },
-        { 12, "Active(file)", "Active(file)" },
-        { 13, "Inactive(file)", "Inactive(file)" },
-        { 14, "Unevictable", "Unevictable" },
-        { 15, "Mlocked", "Mlocked" },
-        { 16, "Dirty", "Dirty" },
-        { 17, "Writeback", "Writeback" },
-        { 18, "FilePages", "FilePages" },
-        { 19, "Mapped", "Mapped" },
-        { 20, "AnonPages", "AnonPages" },
-        { 21, "Shmem", "Shmem" },
-        { 22, "KernelStack", "KernelStack" },
-        { 23, "ShadowCallStack", "ShadowCallStack" },
-        { 24, "PageTables", "PageTables" },
-        { 25, "SecPageTables", "SecPageTables" },
-        { 26, "NFS_Unstable", "NFS_Unstable" },
-        { 27, "Bounce", "Bounce" },
-        { 28, "WritebackTmp", "WritebackTmp" },
-        { 29, "Slab", "Slab" },
-        { 30, "SReclaimable", "SReclaimable" },
-        { 31, "SUnreclaim", "SUnreclaim" },
-        { 32, "AnonHugePages", "AnonHugePages" },
-        { 33, "ShmemHugePages", "ShmemHugePages" },
-        { 34, "ShmemPmdMapped", "ShmemPmdMapped" },
-        { 35, "FileHugePages", "FileHugePages" },
-        { 36, "FilePmdMapped", "FilePmdMapped" },
-        { 37, "HugePages_Total", "HugePages_Total" },
-        { 38, "HugePages_Free", "HugePages_Free" },
-        { 39, "HugePages_Surp", "HugePages_Surp" },
-        { 40, "KReclaimable", "KReclaimable" }
-};
-
-#define SYSTEM_MEMINFO_ROWS (sizeof(system_meminfo) / 
sizeof(system_meminfo[0]))
-
-// To allow re-ordering the meminfo memory categories in system_meminfo and
-// numastat_meminfo relative to order in /proc, etc., a simple hash index is
+// To allow re-ordering the /sys/devices/system/node/node<N> meminfo and 
numastat
+// memory categories relative to order in /sys, etc., a simple hash index is
 // used to look up the meminfo categories. The allocated hash table size must
 // be bigger than necessary to reduce collisions (and because these specific
 // hash algorithms depend on having some unused buckets.
@@ -672,7 +615,7 @@
 
 static void display_version_and_exit(void)
 {
-        printf("%s\n", VERSION);
+        printf("%s version: %s: %s\n", prog_name, VERSION, __DATE__);
         exit(EXIT_SUCCESS);
 }
 
@@ -820,9 +763,9 @@
                         printf("cannot open %s: %s\n", fpath, strerror(errno));
                         continue;
                 }
-               unsigned long nr_pages = 0;
+                unsigned long nr_pages = 0;
                 if (fgets(buf, SMALL_BUF_SIZE, fs))
-                       nr_pages = strtoul(buf, NULL, 10);
+                    nr_pages = strtoul(buf, NULL, 10);
                 fclose(fs);
 
                 total += nr_pages * hugepage_size;
@@ -835,8 +778,24 @@
         return total;
 }
 
-static void show_info_from_system_file(char *file, meminfo_p meminfo, int 
meminfo_rows, int tok_offset)
+static void show_info_from_system_file(char *file, int tok_offset)
 {
+        char fname[64];
+        char buf[SMALL_BUF_SIZE];
+        // Open /sys/.../node0/<file>
+        snprintf(fname, sizeof(fname), "/sys/devices/system/node/node0/%s", 
file);
+        FILE *fs = fopen(fname, "r");
+        if (!fs) {
+                sprintf(buf, "cannot open %s", fname);
+                perror(buf);
+                exit(EXIT_FAILURE);
+        }
+        // and count the lines in the file
+        int meminfo_rows = 0;
+        while (fgets(buf, SMALL_BUF_SIZE, fs)) {
+                meminfo_rows += 1;
+        }
+        fclose(fs);
         // Setup and init table
         vtab_t table;
         int header_rows = 2 - compatibility_mode;
@@ -844,24 +803,17 @@
         // Add an extra data column for a total column
         init_table(&table, header_rows, header_cols, meminfo_rows, num_nodes + 
1);
         int total_col_ix = header_cols + num_nodes;
-        // Insert token mapping in hash table and assign left header column 
label for each row in table
         init_hash_table();
-        for (int row = 0; (row < meminfo_rows); row++) {
-                hash_insert(meminfo[row].token, meminfo[row].index);
-                if (compatibility_mode) {
-                        string_assign(&table, (header_rows + row), 0, 
meminfo[row].token);
-                } else {
-                        string_assign(&table, (header_rows + row), 0, 
meminfo[row].label);
-                }
-        }
-        // printf("There are %d table hash collisions.\n", hash_collisions);
         // Set left header column width and left justify it
         set_col_width(&table, 0, 16);
         set_col_justification(&table, 0, COL_JUSTIFY_LEFT);
         // Open /sys/devices/system/node/node?/<file> for each node and store 
data
         // in table.  If not compatibility_mode, do approximately first third 
of
         // this loop also for (node_ix == num_nodes) to get "Total" column 
header.
+        // Also, during the first iteration, insert token mapping in hash table
+        // and assign left header column label for each row in table.
         for (int node_ix = 0; (node_ix < (num_nodes + (1 - 
compatibility_mode))); node_ix++) {
+                int row = 0;
                 int col = header_cols + node_ix;
                 // Assign header row label and horizontal line for this 
column...
                 string_assign(&table, 0, col, node_header[node_ix]);
@@ -879,9 +831,7 @@
                 if (node_ix == num_nodes) {
                         break;
                 }
-                // Open /sys/.../node<N>/numstast file for this node...
-                char buf[SMALL_BUF_SIZE];
-                char fname[64];
+                // Open /sys/.../node<N>/<file> for this node...
                 snprintf(fname, sizeof(fname), 
"/sys/devices/system/node/node%d/%s", node_ix_map[node_ix], file);
                 FILE *fs = fopen(fname, "r");
                 if (!fs) {
@@ -904,6 +854,34 @@
                         }
                         // example line from numastat file: "numa_miss 16463"
                         // example line from meminfo  file: "Node 3 Inactive:  
210680 kB"
+                        if (node_ix == 0) {
+                                char *token = strdup(tok[0 + tok_offset]);
+                                if (token == NULL) {
+                                        perror("malloc failed line: " 
STRINGIFY(__LINE__));
+                                        exit(EXIT_FAILURE);
+                                }
+                                hash_insert(token, row);
+                                // printf("There are %d table hash 
collisions.\n", hash_collisions);
+                                if ((compatibility_mode) || 
(!strncmp("meminfo", file, 7))) {
+                                        string_assign(&table, (header_rows + 
row), 0, token);
+                                } else {
+                                        char *label = strdup(tok[0 + 
tok_offset]);
+                                        if (label == NULL) {
+                                                perror("malloc failed line: " 
STRINGIFY(__LINE__));
+                                                exit(EXIT_FAILURE);
+                                        }
+                                        // Capitalize first letter and letters 
after '_'
+                                        char *p = label;
+                                        while (p) {
+                                                p[0] = toupper(p[0]);
+                                                p = strchr(p, '_');
+                                                if (p) {
+                                                        p += 1;
+                                                }
+                                        }
+                                        string_assign(&table, (header_rows + 
row), 0, label);
+                                }
+                        }
                         int index = hash_lookup(tok[0 + tok_offset]);
                         if (index < 0) {
                                 printf("Token %s not in hash table.\n", tok[0 
+ tok_offset]);
@@ -931,10 +909,11 @@
                                 double_assign(&table, header_rows + index, 
col, value);
                                 double_addto(&table, header_rows + index, 
total_col_ix, value);
                         }
+                        row += 1;
                 }
                 fclose(fs);
         }
-        // Crompress display column widths, if requested
+        // Compress display column widths, if requested
         if (compress_display) {
                 for (int col = 0; (col < header_cols + num_nodes + 1); col++) {
                         auto_set_col_width(&table, col, 4, 16);
@@ -960,13 +939,13 @@
         if (!compatibility_mode) {
                 printf("\nPer-node numastat info (in MBs):\n");
         }
-        show_info_from_system_file("numastat", numastat_meminfo, 
NUMASTAT_MEMINFO_ROWS, 0);
+        show_info_from_system_file("numastat", 0);
 }
 
 static void show_system_info(void)
 {
         printf("\nPer-node system memory usage (in MBs):\n");
-        show_info_from_system_file("meminfo", system_meminfo, 
SYSTEM_MEMINFO_ROWS, 2);
+        show_info_from_system_file("meminfo", 2);
 }
 
 static void show_process_info(void)
@@ -1128,7 +1107,7 @@
                 // If showing individual tables, or we just added the last 
total line,
                 // prepare the table for display and display it...
                 if ((show_sub_categories) || (pid_ix + 1 == num_pids)) {
-                        // Crompress display column widths, if requested
+                        // Compress display column widths, if requested
                         if (compress_display) {
                                 for (int col = 0; (col < header_cols + 
num_nodes + 1); col++) {
                                         auto_set_col_width(&table, col, 4, 16);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/syscall.c 
new/numactl-2.0.18.10.g6c14bd5/syscall.c
--- old/numactl-2.0.18.0.g3871b1c/syscall.c     2024-02-07 08:20:36.000000000 
+0100
+++ new/numactl-2.0.18.10.g6c14bd5/syscall.c    2024-09-17 15:45:02.000000000 
+0200
@@ -141,10 +141,10 @@
 
 #if !defined(__NR_set_mempolicy_home_node)
 
-#if defined(__x86_64__) || defined(__aarch64__)
+#if defined(__x86_64__) || defined(__aarch64__) || defined(__i386__) || 
defined(__powerpc__) || defined(__mips__) || defined(__s390x__)
 #define __NR_set_mempolicy_home_node 450
 #else
-#error "Add syscalls for your architecture or update kernel headers"
+#warning "Add syscalls for your architecture or update kernel headers"
 #endif
 
 #endif
@@ -261,7 +261,12 @@
 
 int WEAK set_mempolicy_home_node(void *start, unsigned long len, int 
home_node, int flags)
 {
+#ifndef __NR_set_mempolicy_home_node
+   errno = ENOSYS;
+   return -1;
+#else
    return syscall(__NR_set_mempolicy_home_node, start, len, home_node, flags);
+#endif
 }
 
 /* SLES8 glibc doesn't define those */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/versions.ldscript 
new/numactl-2.0.18.10.g6c14bd5/versions.ldscript
--- old/numactl-2.0.18.0.g3871b1c/versions.ldscript     2024-02-07 
08:20:36.000000000 +0100
+++ new/numactl-2.0.18.10.g6c14bd5/versions.ldscript    2024-09-17 
15:45:02.000000000 +0200
@@ -172,3 +172,10 @@
   local:
     *;
 } libnuma_1.6;
+
+libnuma_2.1{
+  global:
+    numa_set_weighted_interleave_mask;
+  local:
+    *;
+} libnuma_1.7;

++++++ numactl.obsinfo ++++++
--- /var/tmp/diff_new_pack.FHBoAS/_old  2024-10-11 17:01:35.560857510 +0200
+++ /var/tmp/diff_new_pack.FHBoAS/_new  2024-10-11 17:01:35.564857677 +0200
@@ -1,5 +1,5 @@
 name: numactl
-version: 2.0.18.0.g3871b1c
-mtime: 1707290436
-commit: 3871b1c42fc71bceadafd745d2eff5dddfc2d67e
+version: 2.0.18.10.g6c14bd5
+mtime: 1726580702
+commit: 6c14bd59d438ebb5ef828e393e8563ba18f59cb2
 

Reply via email to