我的团队正在编写与Linux内核模块交互的软件。我们写sysfs来管理模块。最近,我们一直在解决一个问题,该问题有时模块的运行不符合预期。
我的一位同事注意到,如果我们在两者之间放一个.save()
随后写入sysfs,则不会发生此问题。 可能的意思是,第一次写模块之后,该模块需要一些时间来进行一些其他处理,并且我们的代码应等到完成后再执行第二次写。
我真的不想在代码中添加随机def create_note(target=None, action=None):
note = Note(target=target, name=name)
note.save()
transaction.on_commit(lambda: ActionItem.object.create(note=note, target=target))
。但是,我们几乎没有内核空间方面的经验。有没有办法检测到内核模块正在忙于其他处理?要跟踪模块的活动?尤其是一种编程方式,我们可以使用sleep
来代替一些预定义的时间间隔?
不幸的是,我的NDA阻止了我详细了解与之交互的模块和sysfs文件。