问题标签 [interrupt-handling]
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.
operating-system - 如何验证 GDT 是否设置正确?
我的操作系统的 IDT 和 GDT 不能作为一个整体工作。我不知道其中哪一个设置不正确。那么我可以验证 GDT 是否设置正确,以便我能够找出问题所在。
我在 C 中这样做。
assembly - 通过轮询中断请求寄存器来处理键盘中断(对于 x86)
我需要为 x86 开发程序,通过轮询 IRR 来处理键盘中断。程序应该在 ms-dos 下以实模式运行。我的主要问题是它不能像我认为的那样工作:即使没有按下任何键并且从端口 0x60 读取的值始终为 0x1c,相应的 IRR 位也具有非零值。有人可以解释我做错了什么吗?这是我的轮询循环:
谢谢!
更新 我错过了键盘缓冲区包含扫描码的事实,所以 0x1c 似乎是返回键的扫描码。=)
c - request_irq 返回 EBUSY 并且 free_irq 表示 IRQ 是空闲的
我正在为 8 号 IRQ 开发一个驱动程序,它对应于 RTC 时钟。我有以下问题。当我使用 request_irq 请求该 IRQ 时,我得到一个 EBUSY 错误。我认为首先使用 free_irq(8,NULL) 应该可以解决问题(至少它适用于内核版本 2.6.24-23-generic)。但是,当我使用它时,我收到错误“尝试释放已经免费的 IRQ 8”。检查 /proc/interrupts 我看到以下内容:
8: 1 0 IO-APIC-edge rtc0
这是我在 dmesg 中遇到的错误:
知道我做错了什么吗?先感谢您
assembly - CodeSourcery CS3 中断处理程序覆盖
我正在尝试用我的替换一些 CS3 中断处理程序。在“Stellaris_blizzard 的 ISR”文件部分下方
还有我的处理程序
SysTick 中断运行良好。但是当端口 M 发生 GPIO 中断时,默认调用“__cs3_isr_interrupt”。如何替换 GPIO 中断处理程序?
vector - 当发生非向量中断时,处理器是否会查找向量表?
当发生非向量中断时,处理器是否会查找向量表?
说起8085,有什么不同吗?
operating-system - 识别一般保护故障 (x86) 上的故障地址
我正在尝试为 x86 上的一般保护故障 (GP#13) 编写 ISR。我无法从 INTEL 文档中找出如何找出导致异常的错误地址。我知道对于页面错误异常(GP#14),cr2 寄存器保存错误地址。任何帮助表示赞赏。
x86 - (写内核)如何修改中断描述符表?
我正在编写一个小内核,只是为了稍微了解一下低级的东西。现在,它在 Virtual Box 中启动,我可以在屏幕上显示文本、分配一些内存以及其他非常基本的事情。它是用 C++ 和一点 asm 编写的。
我想探索的一件事是多任务处理背后的机制。据我了解,它是这样的:
- 内核初始化中断描述符表,以便周期性地(例如毫秒)发出中断并调用内核中定义的例程。
- 当例程被调用时,它可以决定将代码/数据段和堆栈指针设置为另一个程序的上下文,即“上下文切换”。
所以,它在概念上似乎很简单,但我知道细节会变得更加复杂。我在网上找到了一些东西,但术语变化很大,而且这些例子似乎来自我没有的上下文(比如来自 Linux 内核)。
但是,设置描述符表的方式似乎是这样的:
- 将一些数据发送到 PIC(
outb
以及其他)以对其进行初始化。 - 在内存中准备一个中断表,其中包含指向所需例程的函数指针,注意这些函数能够成为信号处理程序。
- 用 加载表
lidt
。
但是,我找不到太多关于专门做这些事情的信息,或者这是否正确。有没有人有困惑的内核编写者的资源?
linux - 可以屏蔽定时器中断吗?
我很想知道是否可以屏蔽定时器中断..?考虑 ppc 的情况,“kernel/timer.c”中的 run_local_timers() 函数由本地的每个 CPU 定时器中断调用。
那么这个定时器中断是否有可能被屏蔽并且在这段时间内没有调用 run_local_timers() 函数?
assembly - 自定义键盘中断处理程序
我正在尝试编写一个简单的程序,它将标准键盘中断替换为自定义键盘中断,该程序将减少一个变量。但是,如果不调用旧处理程序,它将无法工作。这是我的中断处理程序:
我还应该在我的处理程序中执行哪些操作以使其在不调用旧处理程序的情况下工作?
multithreading - 在系统命令中超时线程
我有一个看似简单的问题。我需要并行执行一系列系统命令(使用反引号)。
除了演示我的问题之外,下面的代码已经被剥夺了任何有意义的东西:
现在,问题是当线程在系统调用中被阻塞时,发送给线程的 ALRM 信号永远不会被捕获。如果您取消注释 while 循环,则会按预期捕获信号。我该如何进行这项工作,以便即使线程卡在系统命令中,我也可以使线程超时?
谢谢,
卡斯帕