Don't memset klockstat, init klockstat in constructor

上级 6b85612e
......@@ -26,7 +26,7 @@ struct klockstat : public rcu_freed {
LIST_ENTRY(klockstat) link;
struct lockstat s;
klockstat() : rcu_freed("klockstat") {}
klockstat(const char *name);
virtual ~klockstat() {}
};
#else
......
......@@ -111,18 +111,21 @@ static struct spinlock lockstat_lock = {
#endif
};
klockstat::klockstat(const char *name) :
rcu_freed("klockstat")
{
magic = LOCKSTAT_MAGIC;
memset(&s, 0, sizeof(s));
safestrcpy(s.name, name, sizeof(s.name));
};
void
lockstat_init(struct spinlock *lk)
{
lk->stat = new klockstat();
if (lk->stat == NULL)
lk->stat = new klockstat(lk->name);
if (lk->stat == 0)
return;
memset(lk->stat, 0, sizeof(*lk->stat));
lk->stat->magic = LOCKSTAT_MAGIC;
safestrcpy(lk->stat->s.name, lk->name, sizeof(lk->stat->s.name));
acquire(&lockstat_lock);
LIST_INSERT_HEAD(&lockstat_list, lk->stat, link);
release(&lockstat_lock);
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论