/[svn]/ircd-hybrid/trunk/src/list.c
ViewVC logotype

Diff of /ircd-hybrid/trunk/src/list.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1653 by michael, Sat Oct 27 21:02:32 2012 UTC revision 1654 by michael, Fri Nov 16 19:39:37 2012 UTC
# Line 24  Line 24 
24    
25  #include "stdinc.h"  #include "stdinc.h"
26  #include "list.h"  #include "list.h"
27  #include "balloc.h"  #include "mempool.h"
28    
29  static BlockHeap *dnode_heap;  static mp_pool_t *dnode_pool;
30    
31    
32  /* init_dlink_nodes()  /* init_dlink_nodes()
# Line 38  static BlockHeap *dnode_heap; Line 38  static BlockHeap *dnode_heap;
38  void  void
39  init_dlink_nodes(void)  init_dlink_nodes(void)
40  {  {
41    dnode_heap = BlockHeapCreate("dlink node", sizeof(dlink_node), DNODE_HEAP_SIZE);    dnode_pool = mp_pool_new(sizeof(dlink_node), MP_CHUNK_SIZE_DNODE);
42  }  }
43    
44  /* make_dlink_node()  /* make_dlink_node()
# Line 50  init_dlink_nodes(void) Line 50  init_dlink_nodes(void)
50  dlink_node *  dlink_node *
51  make_dlink_node(void)  make_dlink_node(void)
52  {  {
53    dlink_node *lp = BlockHeapAlloc(dnode_heap);    dlink_node *ptr = mp_pool_get(dnode_pool);
54    
55    return lp;    memset(ptr, 0, sizeof(*ptr));
56      return ptr;
57  }  }
58    
59  /* free_dlink_node()  /* free_dlink_node()
# Line 64  make_dlink_node(void) Line 65  make_dlink_node(void)
65  void  void
66  free_dlink_node(dlink_node *ptr)  free_dlink_node(dlink_node *ptr)
67  {  {
68    BlockHeapFree(dnode_heap, ptr);    mp_pool_release(ptr);
69  }  }
70    
71  /*  /*
# Line 213  dlink_move_node(dlink_node *m, dlink_lis Line 214  dlink_move_node(dlink_node *m, dlink_lis
214      m->next->prev = m->prev;      m->next->prev = m->prev;
215    else    else
216    {    {
217      assert(list->tail == m);      assert(list_del->tail == m);
218      list_del->tail = m->prev;      list_del->tail = m->prev;
219    }    }
220    
# Line 221  dlink_move_node(dlink_node *m, dlink_lis Line 222  dlink_move_node(dlink_node *m, dlink_lis
222      m->prev->next = m->next;      m->prev->next = m->next;
223    else    else
224    {    {
225      assert(list->head == m);      assert(list_del->head == m);
226      list_del->head = m->next;      list_del->head = m->next;
227    }    }
228    

Legend:
Removed from v.1653  
changed lines
  Added in v.1654

svnadmin@ircd-hybrid.org
ViewVC Help
Powered by ViewVC 1.1.28