Print this page
XXXX adding PID information to netstat output
@@ -73,10 +73,11 @@
ASSERT(size > 0);
ASSERT(size >= offset + sizeof (list_node_t));
list->list_size = size;
list->list_offset = offset;
+ list->list_numnodes = 0;
list->list_head.list_next = list->list_head.list_prev =
&list->list_head;
}
void
@@ -86,10 +87,11 @@
ASSERT(list);
ASSERT(list->list_head.list_next == node);
ASSERT(list->list_head.list_prev == node);
+ list->list_numnodes = 0;
node->list_next = node->list_prev = NULL;
}
void
list_insert_after(list_t *list, void *object, void *nobject)
@@ -115,45 +117,50 @@
void
list_insert_head(list_t *list, void *object)
{
list_node_t *lold = &list->list_head;
+ list->list_numnodes++;
list_insert_after_node(list, lold, object);
}
void
list_insert_tail(list_t *list, void *object)
{
list_node_t *lold = &list->list_head;
+ list->list_numnodes++;
list_insert_before_node(list, lold, object);
}
void
list_remove(list_t *list, void *object)
{
list_node_t *lold = list_d2l(list, object);
ASSERT(!list_empty(list));
ASSERT(lold->list_next != NULL);
+ list->list_numnodes--;
list_remove_node(lold);
}
void *
list_remove_head(list_t *list)
{
list_node_t *head = list->list_head.list_next;
if (head == &list->list_head)
return (NULL);
+ list->list_numnodes--;
list_remove_node(head);
return (list_object(list, head));
}
void *
list_remove_tail(list_t *list)
{
list_node_t *tail = list->list_head.list_prev;
if (tail == &list->list_head)
return (NULL);
+ list->list_numnodes--;
list_remove_node(tail);
return (list_object(list, tail));
}
void *
@@ -207,16 +214,18 @@
ASSERT(dst->list_offset == src->list_offset);
if (list_empty(src))
return;
+ dst->list_numnodes += src->list_numnodes;
dstnode->list_prev->list_next = srcnode->list_next;
srcnode->list_next->list_prev = dstnode->list_prev;
dstnode->list_prev = srcnode->list_prev;
srcnode->list_prev->list_next = dstnode;
/* empty src list */
+ src->list_numnodes = 0;
srcnode->list_next = srcnode->list_prev = srcnode;
}
void
list_link_replace(list_node_t *lold, list_node_t *lnew)
@@ -247,5 +256,22 @@
int
list_is_empty(list_t *list)
{
return (list_empty(list));
}
+
+ulong_t
+list_numnodes(list_t *list)
+{
+ /*
+ size_t sz = 0;
+ list_node_t *node;
+
+ node = &list->list_head;
+ while (node->list_next != &list->list_head) {
+ sz++;
+ node = node->list_next;
+ }
+ return (sz);
+ */
+ return (list->list_numnodes);
+}