- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在用 C 编写一个内核模块,它正在努力访问 IRQ 描述数组元素并显示这些元素的所有操作名称。
一开始,我认为这个irq_desc 数组就像一个宏,但编译后我明白了它不是。然后我使用了 for_each_irq_desc(irq, desc) 函数。但这次它返回了一个警告:
警告:“irq_to_desc”[/home/samet/Masaüstü/Assignment3/Ass-1.ko] 未定义!
在这个警告之后,我尝试将模块插入到内核中,但这次弹出了一条错误消息:
insmod: error inserting './Ass-1.ko': -1 Unknown symbol in module
在此之后,我包含了我认为与此过程相关的所有头文件,但没有任何改变。
因为它很短,我附上代码:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/irq.h>
#include <linux/irqdesc.h>
#include <linux/irqnr.h>
struct task_struct* p;
struct irq_desc* irqElement;
int irq, desc;
static int __init ass_1_init(void)
{
printk(KERN_INFO "Ass-1 module is starting...\n");
for_each_process(p){printk("%d\t%s\n", p->pid, p->comm);}
for_each_irq_desc(irq, irqElement){printk("%p\n", irqElement);}
return 0;
}
static void __exit ass_1_exit(void)
{
printk(KERN_INFO "Ass-1 module is finishing...\n");
}
module_init(ass_1_init);
module_exit(ass_1_exit);
最佳答案
我觉得你真的高估了我的能力。这是我的第一个 hello world 内核模块。但如果有的话,经验告诉我程序员为王。如果您想要什么,请定义它。
内核头文件不想将 irq 暴露给模块,这很清楚,所以我敢打赌这不会得到支持,这通常可能是个坏主意。但我们不关心这个。我们是黑客!
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/irq.h>
#include <linux/irqnr.h>
#include <linux/irqdesc.h>
#define irq_to_desc(irq) (&irq_desc[irq])
#define nr_irqs NR_IRQS
struct irq_desc irq_desc[NR_IRQS];
struct irq_desc *irqElement;
int irq;
int init_module(void)
{
printk(KERN_INFO "I HAZ MODULE\n");
for_each_irq_desc(irq, irqElement){printk("%p\n", irqElement);}
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "BAI MODULE!!!1\n");
}
关于c - 访问模块中的 IRQ 描述数组并显示操作名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10058594/
我正在使用线程 irq 实现一个中断处理模块。我面临这个错误: 1983.150961] Shut down eMMC app module init. [ 1983.151115] genirq:
我有一个 GPIO 外围设备,在设备树中定义为: gpio0: gpio@2300000 { compatible = "fsl,qoriq-gpio"; reg = ; in
我已经构建了一个静态库(*.a 用于 gcc,*.lib 用于 keil)。它的源文件之一,编译成库,包含 RADIO_IRQHandler 的定义。下面是这个名为“ral_irq_handlers.
从: http://software.intel.com/en-us/articles/introduction-to-pc-architecture/ 异常编号 10h 对应于“浮点错误”,但软件中
我正在学习 Linux 内核中的中断处理,并尝试使用下面的代码片段在 IRQ2 上注册一个虚拟 irq 处理程序。但它似乎没有被注册,因为我在内核中看到了一个负返回值和一条消息,如下所示,这是由试图执
我在制作我的第一个驱动程序 (PIT) 时遇到了问题。我之前录制的视频中清楚地解释了这个问题:https://www.youtube.com/watch?v=hjvTtVbaics&feature=y
目前我的 IRQ 是三重故障并给出除以 0 的错误。 Here是我录制的视频,它将向您展示这一点。 irq.c++: #include "irq.h" #define PIC_MASTER_CONTR
我是 Linux 内核模块开发的新手,正在尝试编写一个简单的内核模块,稍后可以将其扩展为键盘驱动程序。 我尝试了以下两种方法: 基于中断的方法 我按照给定的指南开始编写代码 here .但唯一的问题是
我有一些关于 PCI 和 IRQS 的问题。 IRQ 是如何分配给连接到 PCI 总线的设备的,它是由 BIOS 在启动时分配的,还是总线选择它或总线 Controller 自己自动选择它,谁负责选择
如果我的 PC 有两个内核——CPU0 和 CPU1,则 CPU0 的 IRQ 被禁用 (local_irq_disabled())。如何使用CPU1上的进程开启CPU0的IRQ? 最佳答案 不要。
如何在 32 位保护模式(显然是 x86)下查看 PIT IRQ 处理程序的返回值?我想我可以这样做,但我不完全确定。 pop eax ; pop last thing from stack mov
如何在 32 位保护模式(显然是 x86)下查看 PIT IRQ 处理程序的返回值?我想我可以这样做,但我不完全确定。 pop eax ; pop last thing from stack mov
我正在开发一个使用 ARM Cortex-M0 处理器的项目。在这个项目中,我需要提供计时器支持(CMSDK (SSE-200)计时器)。 因此,在 vector 表中,在 TIMER0_IRQn 表
我正在浏览下面的线程,它说内核头不想将 irq 暴露给模块。 Accessing IRQ description array within a module and displaying action
我是 Linux 内核编程的新手,很长一段时间以来我都在尝试编写模块,它应该执行以下操作:用我自己的替换默认的 irq 处理程序,然后恢复默认的处理程序,使用 IDT (尝试保存 idt 用我自己的替
当一个 IRQ 线在多个已注册的中断服务例程之间共享时,什么决定了中断线产生时 ISR 的执行顺序? 最佳答案 无论如何,顺序是不可预测的,因为正如你所说,中断线是共享的。因此,系统中有(或可能有)其
我正在浏览 arch/arm/kernel/perf_event.c 中的部分 Linux 内核源代码,并试图了解如何进行 request_irq 设置这里: static int armpmu_re
我正在开发一个玩具 unix 克隆,我正在尝试正确连接我的中断。我遇到了一个问题,我的键盘 IRQ (IRQ 1) 即使在我正确确认它之后也只触发一次等等。我也启用了 PIT 中断,以仔细检查我的 A
我目前正在学习 Derek Molloy 在他的书“Exploring Raspberry Pi - Interfacing to The Real World with Embedded Linux
我正在用 C 编写一个内核模块,它正在努力访问 IRQ 描述数组元素并显示这些元素的所有操作名称。 一开始,我认为这个irq_desc 数组就像一个宏,但编译后我明白了它不是。然后我使用了 for_e
我是一名优秀的程序员,十分优秀!