Tag: kernel

如何在没有内核崩溃的情况下优雅地禁用中断线?

我已经实现了一个从keyboad读取的程序,并扫描代码并将其放入tasklet中。 tasklet取消阻塞read()。 因此,我的QT应用程序可以读取数据,如果它找到l的扫描代码,它会触发对Qt-webkit的回调。 但是,当我在做我的角色驱动程序的rmmod时。 整个内核崩溃了。 我的角色驱动程序有什么问题。 #include #include /** needed by all modules **/ #include /** This is for KERN_ALERT **/ #include /** for file operations **/ #include /** character device **/ #include /** for sys device registration in /dev/ and /sys/class **/ /** for copy_to_user **/ #include /** kernel thread */ #include /** spin […]

从内核空间代码访问文件?

我正在浏览源代码“ drivers / staging / comedi / drivers / serial2002.c ”,实现提示从内核空间代码访问文件。 系统调用(读,写)提供了一个标准接口,可防止对h / w和其他系统资源的错误访问。 简而言之,应该从用户空间访问设备文件。 所以我很困惑为什么我们需要从内核空间访问文件,因为这种实现不提供安全function。 请提供指针,了解原因。

在linux中断的上下文中运行用户线程

我正在编写一些自定义应用程序,并允许在linux内核中更改中断处理程序代码。 我有一个等待中断发生的用户线程。 如果发生中断,那么我想要做的第一件事就是执行该用户线程。 有没有办法让它发挥作用。 谢谢

使用sk_buff添加以太网帧头

我有一个内核模块,可以捕获传出的Internet流量(Netfilter hook:LOCAL_OUT)在这个钩子上,仍然没有以太网头。 我构建了以太网头,它已经可以使用了,但是如何将它附加到skb以便我可以将整个skb结构发送到dev_queue_xmit() ? 是否有关于如何操作sk_buff数据的指南,您可以提供给我以获取更多信息? 作为样本,我尝试在所有ECHO ICMP流量上做我想做的事情; 这是我的代码。 但是当在另一台机器上检查Wireshark时,我得到了一个工作的以太网头但是一个EMPTY IP数据包……为什么会这样? static unsigned int post_icmp_check(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { struct iphdr *iph; struct icmphdr *icmph; struct sk_buff *sb; struct ethhdr *ethh; unsigned char *frame = NULL; //Used just to copy the skb->data […]

如何使用该目录的文件描述符在内核级别打开目录?

我正在开发一个项目,我必须打开一个目录并读取内核级别的文​​件/目录。 我基本上试图找出如何在内核级别实现ls 。 现在我已经弄清楚如何使用sys_open()和O_DIRECTORY flag获取目录的文件描述符,但我不知道如何读取我收到的fd。 如果有人有任何提示或其他建议,我会很感激。 (请记住,这必须在内核级别完成)。 编辑:长话短说,对于学校项目,我正在实现文件/目录属性。 我在storring属性的位置是具有给定属性的文件的同一级别的隐藏文件夹。 (因此Desktop / MyFolder中的文件有一个名为Desktop / MyFolder / .filename_attr的属性文件夹)。 相信我,我不在乎内核中的乱码。 但我需要在内核级别读取目录的原因是因为它是项目规范的一部分。

什么样的循环(;;)?

在torvalds / linux-2.6.git中找到 – > kernel / mutex.c第171行 我试图在谷歌上找到它,但无济于事。 for (;;)指示什么?