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

发布于 2024-10-08 19:55:14 字数 141 浏览 5 评论 0原文

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

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

The situation is: I will implement sets of new system calls. Each of them need to access (read or write) a linked list. So, that means I will have several C programs.

So, how can I maintain a linked list in memory and let several programs access it? Or,this is wrong....I should save it as a file? (but I hardly think this is a good idea)..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

与君绝 2024-10-15 19:55:14

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

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

华泰

I am no kernel developer, but here's my guess at how to go about this...

  • sys/queue.h gives you macros to work with queues and linked lists.
  • Provide an interface based on opaque handles so that the client programs can not change the data structure behind your back.
  • Since you have multiple concurrent clients, think about protecting your interface implementation using locks.

HTH

愚人国度 2024-10-15 19:55:14

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

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

@jackrabbit points you into right direction. I'll add about sharing the list between syscalls.

Your code will be linked into kernel inself, or as a loadable module. Either way your data will probably need to be dynamically allocated with 'kmalloc'. This data will be available to the whole kernel, which unlike userland programs, stays resident in machine memory. Treat it as a regular pointer/data shared between (kernel) threads.

陌上芳菲 2024-10-15 19:55:14

根据您想要执行的操作,您可能需要查看

Depending on what you want to do, you might want to check this out.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文