草庐IT

知道套接字目标进程的 Linux 内核钩子(Hook)

我正在寻找一个特定的地方来向linux内核添加某种Hook,这将允许我执行以下操作:仅检测TCP连接进入环回(127.0.0.1)的情况检测数据包的源进程是否与目的进程相同如果是这种情况,则允许连接,拒绝任何其他环回连接(一个进程到另一个进程)我一直在研究netfilter钩子(Hook),但它们似乎不符合需要。bpf过滤器只查看数据包本身。我也在看socket-connect的LSMhook。我可以尝试从socket-connectHook实现这一点,方法是查看哪个进程当前绑定(bind)了请求的端口,以预测连接将连接到哪里,这听起来很老套。 最佳答案

linux - 分析 Linux 内核模块

我有兴趣为Linux内核分析一个模块。我这样试过:使用CONFIG_PROFILING=y构建内核使用profile=2启动内核通过echo123>/proc/profile重置分析器模块已被专用守护进程成功加载运行一个用户空间应用程序,该应用程序通过特定的ioctl调用使用该模块。测试应用按预期运行,因此模块运行正常。使用readprofile-p/proc/profile-mSystem.map读取分析信息,其中System.app与内核一起生成。到目前为止,还不错。几乎一切都按预期工作。然而,没有起作用的是,我没有获得关于我的模块的任何信息,即没有提到模块的任何功能。然而,转念一

linux - 分析 Linux 内核模块

我有兴趣为Linux内核分析一个模块。我这样试过:使用CONFIG_PROFILING=y构建内核使用profile=2启动内核通过echo123>/proc/profile重置分析器模块已被专用守护进程成功加载运行一个用户空间应用程序,该应用程序通过特定的ioctl调用使用该模块。测试应用按预期运行,因此模块运行正常。使用readprofile-p/proc/profile-mSystem.map读取分析信息,其中System.app与内核一起生成。到目前为止,还不错。几乎一切都按预期工作。然而,没有起作用的是,我没有获得关于我的模块的任何信息,即没有提到模块的任何功能。然而,转念一

linux - 有没有办法让 Linux 内核重新运行它的 PCI 初始化代码?

我正在寻找可以从驱动程序、用户空间实用程序进行的内核模式调用,或者将要求内核查看PCI总线并完全重新运行其初始化的系统调用,或者初始化一个特定的设备。具体来说,我需要内核识别一个在启动后添加到总线上的设备,然后配置它的地址空间、中断和其他配置参数,最后启用该设备以便我可以为它加载驱动程序(除非这一切作为驱动程序负载的一部分发生)。为此,我坚持使用2.4.x系列内核,目前正在使用2.4.20,但如果需要的话,我会转移到2.4.37。该发行版是在ram磁盘中运行的精简版RedHat7.3,但我可以添加实现此功能所需的任何工具(只要它们与2.4系列兼容)。如果一些背景知识有助于阐明我正在尝试

linux - 有没有办法让 Linux 内核重新运行它的 PCI 初始化代码?

我正在寻找可以从驱动程序、用户空间实用程序进行的内核模式调用,或者将要求内核查看PCI总线并完全重新运行其初始化的系统调用,或者初始化一个特定的设备。具体来说,我需要内核识别一个在启动后添加到总线上的设备,然后配置它的地址空间、中断和其他配置参数,最后启用该设备以便我可以为它加载驱动程序(除非这一切作为驱动程序负载的一部分发生)。为此,我坚持使用2.4.x系列内核,目前正在使用2.4.20,但如果需要的话,我会转移到2.4.37。该发行版是在ram磁盘中运行的精简版RedHat7.3,但我可以添加实现此功能所需的任何工具(只要它们与2.4系列兼容)。如果一些背景知识有助于阐明我正在尝试

Linux内核AIO,开启系统调用

为什么Linux内核AIO不支持异步“打开”系统调用?因为'open'会在文件系统上阻塞很长时间,不是吗? 最佳答案 首先,这是一个非常好的合理问题;downvote是不幸的,它可能把比我更有知识的人赶走了。AFAICT,没有好的理由。您设法挖掘的讨论是相关的,但根本不令人满意(这可能也是您的结论)。尽管Torvald的观点在技术上是正确的,但他们显然忽视了房间里的大象——GUI编程——以及我确信的许多其他用例。是的,网络服务器会受到网络延迟的限制。这应该是不关心所有其他IO的理由,这有点可疑,但我可以接受。是的,许多服务器工作负载

Linux内核AIO,开启系统调用

为什么Linux内核AIO不支持异步“打开”系统调用?因为'open'会在文件系统上阻塞很长时间,不是吗? 最佳答案 首先,这是一个非常好的合理问题;downvote是不幸的,它可能把比我更有知识的人赶走了。AFAICT,没有好的理由。您设法挖掘的讨论是相关的,但根本不令人满意(这可能也是您的结论)。尽管Torvald的观点在技术上是正确的,但他们显然忽视了房间里的大象——GUI编程——以及我确信的许多其他用例。是的,网络服务器会受到网络延迟的限制。这应该是不关心所有其他IO的理由,这有点可疑,但我可以接受。是的,许多服务器工作负载

Linux内核中断处理程序互斥保护?

我是否需要保护我的中断处理程序针对同一个中断被多次调用?鉴于以下代码,我不确定我应该进行的系统调用。我在当前的实现中遇到了罕见的随机死锁:-voidinterrupt_handler(void){down_interruptible(&sem);//orusealockhere?clear_intr();//clearinterruptsourceonH/Wwake_up_interruptible(...);up(&sem);//unlock?returnIRQ_HANDLED;}voidset/clear_intr(){spin_lock_irq(&lock);RMW(x);//s

Linux内核中断处理程序互斥保护?

我是否需要保护我的中断处理程序针对同一个中断被多次调用?鉴于以下代码,我不确定我应该进行的系统调用。我在当前的实现中遇到了罕见的随机死锁:-voidinterrupt_handler(void){down_interruptible(&sem);//orusealockhere?clear_intr();//clearinterruptsourceonH/Wwake_up_interruptible(...);up(&sem);//unlock?returnIRQ_HANDLED;}voidset/clear_intr(){spin_lock_irq(&lock);RMW(x);//s

linux - 为什么 Linux 内核的 pr_debug 没有给出任何输出?

我有一个可加载的内核模块,它的初始化如下所示staticint__initid_init(void){structidentity*temp;/*somecodewhichisnotrelevanttothequestion*/temp=identity_find(3);pr_debug("id3=%s\n",temp->name);temp=identity_find(42);if(temp==NULL)pr_debug("id42notfound\n");/*somecodewhichisnotrelevanttothequestion*/return0;}此外,我还在我使用的内核