如何在内核级别维护链表?

时间:2010-12-25 08:48:33

标签: kernel freebsd

情况是:我将实现一组新的系统调用。他们每个人都需要访问(读取或写入)链表。所以,这意味着我将有几个C程序。

那么,如何在内存中维护链表并让多个程序访问它?或者,这是错误的....我应该将其保存为文件? (但我觉得这不是一个好主意)..

3 个答案:

答案 0 :(得分:4)

我不是内核开发人员,但我的猜测是如何解决这个问题......

  • sys/queue.h为您提供了处理队列和链接列表的宏。
  • 提供基于不透明句柄的界面,以便客户端程序无法更改背后的数据结构。
  • 由于您有多个并发客户端,请考虑使用锁保护您的接口实现。

HTH

答案 1 :(得分:1)

@jackrabbit指向正确的方向。我将添加关于在系统调用之间共享列表的信息。

您的代码将链接到内核中,或作为可加载模块。无论哪种方式,您的数据都可能需要使用'kmalloc'动态分配。整个内核可以使用这些数据,与userland程序不同,它可以驻留在机器内存中。将其视为(内核)线程之间共享的常规指针/数据。

答案 2 :(得分:0)

根据您的目的,您可能需要检查this