Don't memset klockstat, init klockstat in constructor

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