提交 a5ef7897 创建 作者: Nickolai Zeldovich's avatar Nickolai Zeldovich

inline range::next for now.. our kmalloc is just amazingly slow!

上级 0538397f
......@@ -87,7 +87,7 @@ struct range : public rcu_freed {
std::atomic<int> curlevel; // the current levels it appears on
const int nlevel; // the number of levels this range should appear
crange *const cr; // the crange this range is part of
markptr<range>* const next; // one next pointer per level
markptr<range> next[11]; // one next pointer per level
spinlock lock; // on separate cache line?
void print(int l);
......
......@@ -92,7 +92,6 @@ range::~range()
next[l] = (struct range *) 0xDEADBEEF;
}
destroylock(&lock);
delete[] next;
}
void
......@@ -111,12 +110,11 @@ range::range(crange *crarg, u64 k, u64 sz, int nl)
: rcu_freed("range_delayed"),
key(k), size(sz), curlevel(0),
nlevel(nl ?: range_draw_nlevel(crarg->nlevel)),
cr(crarg), next(new markptr<range>[nlevel])
cr(crarg)
{
dprintf("range::range: %lu %lu %d\n", k, sz, nl);
assert(cr->nlevel > 0);
assert(next);
for (int l = 0; l < nlevel; l++) next[l] = 0;
assert(sizeof(next) / sizeof(next[0]) >= nlevel);
initlock(&lock, "crange", LOCKSTAT_CRANGE);
}
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论