]> granicus.if.org Git - procps-ng/commitdiff
library: eliminate extra stack header space provisions
authorJim Warner <james.warner@comcast.net>
Wed, 22 Jul 2015 05:00:00 +0000 (00:00 -0500)
committerCraig Small <csmall@enc.com.au>
Thu, 23 Jul 2015 12:31:50 +0000 (22:31 +1000)
With the new perspective on potential uses of a 'noop'
enumerator (or whatever we decide to call it) there is
no longer a need to provide for any extra 'user' space
in the stack header structures used by slab & meminfo.

Signed-off-by: Jim Warner <james.warner@comcast.net>
proc/meminfo.c
proc/slab.c
proc/slab.h
slabtop.c
vmstat.c

index 1aa0f477c54e8bee3f54cd72c10eb53f141c742d..a7a392dffda2203204c416f79c43b67074080f01 100644 (file)
@@ -68,7 +68,6 @@ struct stack_vectors {
 
 struct stacks_anchor {
     int depth;
-    int header_size;
     struct stack_vectors *vectors;
     struct stacks_anchor *self;
     struct stacks_anchor *next;
@@ -433,7 +432,6 @@ static void stacks_validate (struct meminfo_stack **v, const char *who)
         ++n;
     }
     fprintf(stderr, "%s: found %d stack(s), each %d bytes (including eos)\n", __func__, x, (int)sizeof(struct meminfo_result) * t);
-    fprintf(stderr, "%s: this header size = %2d\n", __func__, (int)p->owner->header_size);
     fprintf(stderr, "%s: sizeof(struct meminfo_stack)  = %2d\n", __func__, (int)sizeof(struct meminfo_stack));
     fprintf(stderr, "%s: sizeof(struct meminfo_result) = %2d\n", __func__, (int)sizeof(struct meminfo_result));
     fputc('\n', stderr);
@@ -486,7 +484,6 @@ static int stack_items_valid (
 static struct meminfo_stack **procps_meminfo_stacks_alloc (
         struct procps_meminfo *info,
         int maxstacks,
-        int stack_extra,
         int maxitems,
         enum meminfo_item *items)
 {
@@ -507,7 +504,7 @@ static struct meminfo_stack **procps_meminfo_stacks_alloc (
     vect_size  = sizeof(struct stack_vectors);                 // address vector struct
     vect_size += sizeof(void *) * maxstacks;                   // plus vectors themselves
     vect_size += sizeof(void *);                               // plus NULL delimiter
-    head_size  = sizeof(struct meminfo_stack) + stack_extra;   // a head struct + user stuff
+    head_size  = sizeof(struct meminfo_stack);                 // a head struct
     list_size  = sizeof(struct meminfo_result) * maxitems;     // a results stack
     blob_size  = sizeof(struct stacks_anchor);                 // the anchor itself
     blob_size += vect_size;                                    // all vectors + delims
@@ -523,7 +520,6 @@ static struct meminfo_stack **procps_meminfo_stacks_alloc (
     p_blob->next = info->stacked;
     info->stacked = p_blob;
     p_blob->self  = p_blob;
-    p_blob->header_size = head_size;
     p_blob->vectors = (void *)p_blob + sizeof(struct stacks_anchor);
     p_vect = p_blob->vectors;
     p_vect->owner = p_blob->self;
@@ -559,7 +555,7 @@ PROCPS_EXPORT struct meminfo_stack *procps_meminfo_stack_alloc (
 {
     struct meminfo_stack **v;
 
-    v = procps_meminfo_stacks_alloc(info, 1, 0, maxitems, items);
+    v = procps_meminfo_stacks_alloc(info, 1, maxitems, items);
     if (!v)
         return NULL;
     stacks_validate(v, __func__);
index a400a469fa3faea510580427257753e5777b9e14..359a63f122c383a847919082797346d8f692f231 100644 (file)
@@ -88,7 +88,6 @@ struct stack_vectors {
 struct stacks_anchor {
     int depth;
     int inuse;
-    int header_size;
     struct stack_vectors *vectors;
     struct stacks_anchor *self;
     struct stacks_anchor *next;
@@ -659,9 +658,8 @@ static void stacks_validate (struct slabnode_stack **v, const char *who)
     }
     fprintf(stderr, "%s: found %d stack(s), each %d bytes (including eos)\n", __func__, x, (int)sizeof(struct slab_result) * t);
     fprintf(stderr, "%s: found %d stack(s)\n", __func__, x);
-    fprintf(stderr, "%s: this header size = %2d\n", __func__, (int)p->owner->header_size);
     fprintf(stderr, "%s: sizeof(struct slabnode_stack)  = %2d\n", __func__, (int)sizeof(struct slabnode_stack));
-    fprintf(stderr, "%s: sizeof(struct slab_result) = %2d\n", __func__, (int)sizeof(struct slab_result));
+    fprintf(stderr, "%s: sizeof(struct slab_result)     = %2d\n", __func__, (int)sizeof(struct slab_result));
     fputc('\n', stderr);
     return;
 #endif
@@ -715,7 +713,6 @@ static int stack_items_valid (
 PROCPS_EXPORT struct slabnode_stack **procps_slabnode_stacks_alloc (
         struct procps_slabinfo *info,
         int maxstacks,
-        int stack_extra,
         int maxitems,
         enum slabnode_item *items)
 {
@@ -736,7 +733,7 @@ PROCPS_EXPORT struct slabnode_stack **procps_slabnode_stacks_alloc (
     vect_size  = sizeof(struct stack_vectors);                 // address vector struct
     vect_size += sizeof(void *) * maxstacks;                   // plus vectors themselves
     vect_size += sizeof(void *);                               // plus NULL delimiter
-    head_size  = sizeof(struct slabnode_stack) + stack_extra;  // a head struct + user stuff
+    head_size  = sizeof(struct slabnode_stack);                // a head struct
     list_size  = sizeof(struct slab_result) * maxitems;        // a results stack
     blob_size  = sizeof(struct stacks_anchor);                 // the anchor itself
     blob_size += vect_size;                                    // all vectors + delims
@@ -752,7 +749,6 @@ PROCPS_EXPORT struct slabnode_stack **procps_slabnode_stacks_alloc (
     p_blob->next = info->stacked;
     info->stacked = p_blob;
     p_blob->self  = p_blob;
-    p_blob->header_size = head_size;
     p_blob->vectors = (void *)p_blob + sizeof(struct stacks_anchor);
     p_vect = p_blob->vectors;
     p_vect->owner = p_blob->self;
@@ -790,7 +786,7 @@ PROCPS_EXPORT struct slabnode_stack *procps_slabnode_stack_alloc (
 
     if (info == NULL || items == NULL || maxitems < 1)
         return NULL;
-    v = procps_slabnode_stacks_alloc(info, 1, 0, maxitems, items);
+    v = procps_slabnode_stacks_alloc(info, 1, maxitems, items);
     if (!v)
         return NULL;
     stacks_validate(v, __func__);
index a41460c0715a57ea63581851e9eba15e320c7715..5f565ef3fe5003a47c60819e6af4b307deb86075 100644 (file)
@@ -119,7 +119,6 @@ struct slabnode_stack *procps_slabnode_stack_alloc (
 struct slabnode_stack **procps_slabnode_stacks_alloc (
     struct procps_slabinfo *info,
     int maxstacks,
-    int stack_extra,
     int maxitems,
     enum slabnode_item *items);
 
index 36d7c5367634329dae6d0e1221ba3c0e8ce43085..0d48288b57a91883ffb753bdf817eefff2c90d6f 100644 (file)
--- a/slabtop.c
+++ b/slabtop.c
@@ -293,7 +293,7 @@ int main(int argc, char *argv[])
     if (procps_slabinfo_new(&Slab_info) < 0)
         xerrx(EXIT_FAILURE, _("Unable to create slabinfo structure"));
 
-    if (!(v = procps_slabnode_stacks_alloc(Slab_info, CHAINS_ALLOC, 0, MAX_ITEMS, Node_items)))
+    if (!(v = procps_slabnode_stacks_alloc(Slab_info, CHAINS_ALLOC, MAX_ITEMS, Node_items)))
         xerrx(EXIT_FAILURE, _("Unable to allocate slabinfo nodes"));
 
     if (!Run_once) {
index 978d8a6e1c7bafb1843eb5acc60b731626f86591..81579449c47773a5db2b4e97a2d8343bccd495ec 100644 (file)
--- a/vmstat.c
+++ b/vmstat.c
@@ -624,7 +624,7 @@ static void slabformat (void)
 
     if (procps_slabinfo_new(&slab_info) < 0)
         xerrx(EXIT_FAILURE, _("Unable to create slabinfo structure"));
-    if (!(v = procps_slabnode_stacks_alloc(slab_info, CHAINS_ALLOC, 0, MAX_ITEMS, node_items)))
+    if (!(v = procps_slabnode_stacks_alloc(slab_info, CHAINS_ALLOC, MAX_ITEMS, node_items)))
         xerrx(EXIT_FAILURE, _("Unable to allocate slabinfo nodes"));
 
     if (!moreheaders)