[Click] [PATCH] More number of elements configuration support.
Joonwoo Park
joonwpark81 at gmail.com
Tue Sep 11 01:27:09 EDT 2007
Hi,
For the second time after patch for click_qsort().
Recently I tried to configure about 4000 click elements. (Lots of
interfaces from VLAN)
But I couldn't get it due to size limitation of atomic memory
allocation of ClickIno::grow().
After configuration, 'ls -al /click/' shows nothing.
I think we need vmalloc() or kmalloc(GFP_KERNEL) at there.
I tried vmalloc() with CLICK_LALLOC()
Therefore, It showed me up to running 7500 elements. (for further more
I got a failed Vector::reserve())
I hope I didn't missed something that we can't use vmalloc instead of
kmalloc(GFP_ATOMIC) at that point.
-
Signed-off-by: Joonwoo Park <joonwpark81 at gmail.com>
lib/ino.cc | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/ino.cc b/lib/ino.cc
index 7491bcb..b7f7c34 100644
--- a/lib/ino.cc
+++ b/lib/ino.cc
@@ -39,7 +39,7 @@ ClickIno::cleanup()
{
for (int i = 0; i < _cap; i++)
_x[i].name.~String();
- delete[] ((uint8_t *)_x);
+ CLICK_LFREE(_x, sizeof(Entry) * _cap);
initialize();
}
@@ -52,13 +52,13 @@ ClickIno::grow(int min_size)
while (new_cap < min_size)
new_cap *= 2;
// cheat on memory: bad me!
- Entry *nse = (Entry *)(new uint8_t[sizeof(Entry) * new_cap]);
+ Entry *nse = (Entry *)CLICK_LALLOC(sizeof(Entry) * new_cap);
if (!nse)
return -ENOMEM;
memcpy(nse, _x, sizeof(Entry) * _cap);
for (int i = _cap; i < new_cap; i++)
new((void *)&nse[i]) String();
- delete[] ((uint8_t *)_x);
+ CLICK_LFREE(_x, sizeof(Entry) * _cap);
_x = nse;
_cap = new_cap;
return 0;
-
Joonwoo Park (Jason Park)
More information about the click
mailing list