def rmdir(self, parent, name):
# parent is a directory
if Not(self.is_dir(parent)):
return 0, errno.ENOTDIR
on = self._mach.create_on([])
ino = self._dirfn(parent, name[0])
assertion(self.is_dir(ino))
if UGT(self._attrs.nlink(ino), 2):
return BitVecVal(0, 32), errno.ENOTEMPTY
# Wipe data
_fn = self._datafn._fn
fn = lambda i, b, o: If( And(on, ino == i), BitVecVal(0, 64), _fn(i, b, o))
self._datafn._fn = fn
self._attrs.set_nlink(parent, self._attrs.nlink(parent) - 1, guard=on)
self._attrs.set_nlink(ino, 1, guard=on)
return ino, BitVecVal(0, 32)
评论列表
文章目录