我正在开发中断代码。当我包括#include <linux/interrupt.h>的时候,我得到
fatal error : linux/interrupt.h no such file or directory
为什么我要得到这个错误,我如何解决这个错误?
相反,当我包含该头文件时,我会再得到一个错误。最后,我将得到linux/编译器.h错误。
但是所有这些文件都存在于/usr/src/linux-headers-4.4.0-151/include/linux/中
你能帮我找到解决这个问题的办法吗?
我想知道在Linux中,x86_64可以使用哪些不同类型的IPI。特别是,我想找出IPI中断的不同中断处理程序。
在理解Linux (丹尼尔·P·博维的第三版)中,Marco 列出了三种IPI:
CALL_FUNCTION_VECTOR
RESCHEDULE_VECTOR
INVALIDATE_TLB_VECTOR
但是,在最新的内核中,我在arch/x86/include/asm/entry_arch.h中找到了以下评论。
* This file is designed to contain the BUILD_INTERRUPT specifications for
* all of
我有,我可以将它与使用uClibc的旧工具链交叉编译,但是该项目正在转移到musl,而且我似乎无法用该工具链编译代码。在链接阶段,它总是会失败,会出现以下几个方面的错误:
/opt/miyoo/bin/../lib/gcc/arm-buildroot-linux-musleabi/11.2.0/../../../../arm-buildroot-linux-musleabi/bin/ld: objs/miyoo/src/touchscreen.o: in function `Touchscreen::poll()':
/__w/gmenunx/gmenunx/src/touchscre
我在为一个在嵌入式Linux中工作的程序跟踪一段代码,并遇到了这种情况。我无法搜索出有用的信息来向我展示它是如何工作的。
这段代码的编写方式如下:
unsigned char foo(*someaddress){
unsigned long flags = 0; //why use a long?
flags = save_and_cli(); //what is this?
spin_lock_irqsave(&someaddress, flags);//ok, this is a spin lock
...do something...
restore_flags(flags)
假设有一个端口映射的I/O设备,它在IRQ线路上任意生成中断。设备的挂起中断可以通过对特定寄存器的单个outb调用来清除。
此外,假设下面的中断处理程序通过request_irq分配给相关的IRQ行
irqreturn_t handler(int irq, void *data)
{
/* clear pending IRQ on device */
outb(0, CLEAR_IRQ_REGISTER_ADDR);
/* device may generate another IRQ at this point,
* but