问题标签 [irq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
279 浏览

linux - Linux内核——IRQ(proc文件系统VS系统调用)

我从事 Linux 内核项目。在我的项目中,我修改了内核,以便copy_process从我的一个模块中调用它,该模块响应对 proc 文件条目的写入。本质上,事情看起来像:

我的问题是内核在copy_process运行时挂在里面:

现在,我知道这个函数一直在被调用do_fork。这发生在系统调用中。

我的问题:

  1. 我是否在正确的道路上认为这与写入 proc 文件条目与系统调用有关?
  2. IRQ 与写入 proc 文件条目有什么关系?
  3. 写入 proc 文件条目实际上与系统调用不同吗?我的意思是它的处理方式和调用的上下文?

谢谢!

更新:我将调用我的代码的方式从在处理写入 proc 文件时调用代码的方式转换为从系统调用调用的方式。没有改变。到达同一行时仍然挂起(即锁定 tasklist_lock)。现在,我的问题是为什么它挂在那里?以及如何解决这个问题?

0 投票
0 回答
682 浏览

c - 如何找到 I²C 设备的 irq 号?

我正在尝试使用以下代码连接 I2C 设备(MPU6050 加速度计):

原行是:

但我必须找到变量的新名称。所以,我确定IH_GPIO_BASE= NR_IRQS,根据/include/mach/irqs-sun7i.h,但我找不到MPUIRQ_GPIO

irqs-sun7i.h 文件:

我系统的 /proc/interrupts 文件是:

那么,相当于MPUIRQ_GPIO什么?我尝试了很多数字,但 dmesg 是这样说的:

0 投票
1 回答
390 浏览

c - 如何在 c 中的 32 位操作系统中创建 scanf() 类型函数?

我正在尝试在 c 中创建一个操作系统并在 32 位保护模式下进行程序集。我正在尝试创建一个 scanf() 类型的函数,该函数在按下回车按钮之前获取键盘输入。我有一个基本的键盘 IRQ 处理程序设置,它打印任何输入的内容,我想实现一个 scanf() 函数,但我无法将键盘处理程序的值返回到主内核。

这是键盘处理程序的代码。

当调用 irq 时,我使用 scan 变量作为布尔值将字符放入数组中。但我无法将它返回到我调用它的主文件中。

0 投票
1 回答
2762 浏览

linux - Qemu 中的客户操作系统在 irq4 上产生过多的中断

我在 qemu-2.3.0 中运行的来宾操作系统中遇到中断问题。我在 Ubuntu 14.04 主机上的 Qemu 模拟器中以 -nographic 模式加载 windriver(Linux kernel-2.6.34.12-grsec)。

主机详情:

我的命令行是:

我在 /var/log/kern.log 中得到以下日志

我试图摆脱这个,但很多人建议在 /serial/8250.c 文件中增加 PASS_LIMIT 。此解决方法只是避免在 kern.log 文件中出现错误消息。

有人知道如何停止或减慢中断频率吗?

0 投票
2 回答
924 浏览

c - C内核-while循环期间中断不起作用

我在 c 中从头开始制作内核(不是 linux。完全从头开始),我遇到了一些问题。我有这个代码:

并且 timer_handler 连接到 IRQ0(PIT)并且工作得很好。说“我打印每个刻度”的 println 工作得很好,如果我在我的代码中打印 ms 变量,它会打印正确的数量。但是,如果我调用 sleep 函数,timer_handler 会停止触发并陷入无限循环。有什么办法可以让中断在while循环中触发?

其余代码:https ://github.com/Codepixl/CodeOS

0 投票
1 回答
458 浏览

linux-kernel - 为什么在 linux 上禁用 IRQ 会导致 rdma_read 和 rdma_write 失败?

我有两台通过 Mellanox infiniband HCA 连接的主机。我正在执行一个简单的 RDMA 应用程序,以从另一台机器(服务器)上的一台机器(客户端)执行 RDMA 写入和 RDMA 读取操作。为了了解每台机器上哪些中断与 HCA 卡有关,我运行了以下命令:

在服务器机器上,我试验过__disable_irq()在这 4 个中断上使用该函数会导致客户端执行的所有 RDMA 读/写操作失败,并显示错误消息“传输重试计数器超出”。

我的问题是为什么以及何时 RDMA 读/写操作可以在远程机器上生成 irqs?我认为如果他们不涉及远程 CPU,那么他们将不会执行任何类型的 IRQ。

那么,为什么禁用这些中断会导致这些操作失败呢?

0 投票
1 回答
13317 浏览

timer - Linux下树莓派上的定时器中断

是否可以在 Raspberry Pi 上设置硬件定时器外设并在特定时间(在 Linux 下运行时)获得中断?有图书馆/例子吗?

我知道当通过wiringPi(以管理员权限运行时)更改引脚时,您可以获得中断,所以如果有一个免费的计时器外围设备,它似乎是可能的。

Pi 论坛上的这个帖子暗示有一个免费的 STC 寄存器,这个提供了一些信息,但被标记为“BareMetal”,我认为这意味着 Linux 不参与?

背景:我知道这根本不是 Linux 擅长的,但是我有兴趣在Espruino JS 解释器中添加硬件计时器功能。它最初是为微控制器设计的,包含一些期望通过定时器 IRQ 运行的代码(例如,用于软件 PWM、定时脉冲和其他位和 bobs)——如果在线程中运行,其中的一部分将实际上是无用的。

0 投票
1 回答
440 浏览

operating-system - mellanox 中断 mlx4-async@pci:0000 ... 是什么意思?

我在[ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE]ubuntu 3.13.0 上使用带有 OFED 版本 4-1.0.0 的 InfiniBand Mellanox 卡,该卡在具有 4 个内核的 x86_64 计算机上运行。

这是ibstat我电脑上的结果

我的/proc/interrupts样子是这样的:

我读到每个mlx4_0-x中断都与每个 CPU 相关联。我的问题是:第一个中断是什么mlx4-async@pci:0000:01:00.0意思?我实验当opensm守护进程尚未运行时,此中断每 5 分钟发生一次。

0 投票
1 回答
37 浏览

arduino - 带引脚 2 的 Arduino CC3000

在引脚 2 上使用 IRQ 时,库 Adafruit_CC3000 出现问题。如果我更改为 3,一切正常,但我需要引脚 3 可以免费使用库 IRremote 进行 IR 发射。我在 Arduino UNO 上使用 CC3000 板。有人已经解决了这个问题吗?

0 投票
0 回答
71 浏览

linux - 为什么在禁用 irq 时不能启用下半部分?

__local_bh_enable中,我们有一个

我想知道这个警告的目的是什么——我想你会希望能够在说 spinlock_irq受保护的代码时重新启用底半部分......(注意:我在这里查看的是 linux 3.4 代码,但它似乎也在 4.1 中)。