Linux n00b 在这里。如何从用户模式切换到内核模式?我正在运行 Linux Ubuntu 12.10。是否有我可以使用内联汇编代码调用的中断来执行此操作?如果没有,怎么办?
我问这个问题是因为我希望编写一个 SCTP(网络)协议堆栈,它可以访问内核并在后台持续运行,尽管 UI 无法直接访问内核。以前从来没有做过这样的事情,所以专业人士的提示肯定会受到赞赏。
Linux n00b 在这里。如何从用户模式切换到内核模式?我正在运行 Linux Ubuntu 12.10。是否有我可以使用内联汇编代码调用的中断来执行此操作?如果没有,怎么办?
我问这个问题是因为我希望编写一个 SCTP(网络)协议堆栈,它可以访问内核并在后台持续运行,尽管 UI 无法直接访问内核。以前从来没有做过这样的事情,所以专业人士的提示肯定会受到赞赏。
所有到内核模式的切换都是通过系统调用进行的。在网络协议的情况下,这些系统调用是 socket、listen、accept、ioctl、read、write、recvmsg 等。
你编写了一个 Linux 内核模块。不过,Linux 已经有一个 SCTP 协议栈。你可能会更好地修改它来做你想做的事。
编写并编译模块后,您可以使用 insmod 和 rmmod 将其加载到内核中。根据我的经验,您很少有机会使用 rmmod,因为如果您犯了错误,系统会崩溃或死机。因此,请使用虚拟机进行测试。重新启动速度更快,丢失的数据更少,并且更容易连接虚拟串行控制台进行调试。
顺便说一句,我相信这个问题是重复的。你可以找到很多关于这个主题的问题。