Discussions

how to observe interrupts in windows or linux ubuntu 14.04 - Stack Overflow
For example if CPU receives interrupt from Keyboard and system clock simultaneously. CPU will serve System Clock first since it has IRQ number 0. ... IRQ 7 — parallel port 1. It is used for printers or for any parallel port if a printer is not present. ... There are a couple of answers there you may benefit from. Like Windows Process Explorer which shows ... More on stackoverflow.com
🌐 stackoverflow.com
linux - Is there any way to check whether the interrupt is handled or not? - Stack Overflow
Suppose my CPU is hogged down and I want to check whether any coming interrupt from any hardware device is handled or not? eg: on pressing keyboard CPU is giving no response, then I want to know w... More on stackoverflow.com
🌐 stackoverflow.com
assembly - Find table of interrupts for Linux or Windows? - Stack Overflow
Show activity on this post. I recently began study asm, and faced a problem, that i can't find table of all interrupt's for linux or win. I looked in intel documentation, but don't find this info. More on stackoverflow.com
🌐 stackoverflow.com
Get list of called Interrupts on linux
I would believe that you will find better answers on a linux-specific subreddit. As far as I know, there is no such list. More on reddit.com
🌐 r/Cplusplus
4
2
January 20, 2025
🌐
Linux Kernel Labs
linux-kernel-labs.github.io › refs › heads › master › lectures › interrupts.html
Interrupts — The Linux Kernel documentation
At this point, interrupts are enabled on the local processor. Linux used to support nested interrupts but this was removed some time ago in order to avoid increasingly complex solutions to stack overflows issues - allow just one level of nesting, allow multiple levels of nesting up to a certain kernel stack depth, etc.
Top answer
1 of 1
2

I'd recommend trying to search for an answer before asking a question. This is shamelessly copy/pasted from http://www.linuxjournal.com/content/watch-live-interrupts.

To see the interrupts occurring on your system, run the command:

watch -n1 "cat /proc/interrupts"

The watch command executes another command periodically, in this case "cat /proc/interrups". The -n1 option tells watch to execute the command every second.

Try using -d for fancy output with highlights.


Man page link for the watch command: http://linux.die.net/man/1/watch


Introduction to Linux Interrupts (describes what /proc/interrupts is all about):http://www.thegeekstuff.com/2014/01/linux-interrupts/

  • The first Column is the IRQ number.
  • The Second column says how many times the CPU core has been interrupted.
  • For interrupt like rtc [Real time clock] CPU has not being interrupted. RTC are present in electronic devices to keep track of time. NMI and LOC are drivers used on system that are not accessible/configured by user.
  • IRQ number determines the priority of the interrupt that needs to be handled by the CPU.

A small IRQ number value means higher priority.

For example if CPU receives interrupt from Keyboard and system clock simultaneously. CPU will serve System Clock first since it has IRQ number 0.

IRQ 0 — system timer (cannot be changed);

IRQ 1 — keyboard controller (cannot be changed)

IRQ 3 — serial port controller for serial port 2 (shared with serial port 4, if present);

IRQ 4 — serial port controller for serial port 1 (shared with serial port 3, if present);

IRQ 5 — parallel port 2 and 3 or sound card;

IRQ 6 — floppy disk controller;

IRQ 7 — parallel port 1. It is used for printers or for any parallel port if a printer is not present.


For Windows

Original Question: How can I find out what is causing interrupts on Windows?

There are a couple of answers there you may benefit from. Like Windows Process Explorer which shows how much processor time is spent serving interrupts, Windows Performance Analyzer (WPA), the xperf command, and The DPC/ISR Action

🌐
Linux Journal
linuxjournal.com › content › watch-live-interrupts
Watch Live Interrupts | Linux Journal
June 22, 2009 - # watch -n1 "cat /proc/interrupts" CPU0 CPU1 0: 330 0 IO-APIC-edge timer 1: 11336 0 IO-APIC-edge i8042 4: 2 0 IO-APIC-edge 6: 3 0 IO-APIC-edge floppy ...
🌐
SysTutorials
systutorials.com › how-to-check-interrupts-lively-in-your-systems
Monitoring System Interrupts In Real Time - SysTutorials
April 11, 2026 - cat /proc/interrupts > /tmp/interrupts_before sleep 60 cat /proc/interrupts > /tmp/interrupts_after diff /tmp/interrupts_before /tmp/interrupts_after · Look for IRQs with rapidly increasing counts or unbalanced distribution across CPUs. irqstat — Part of sysstat, shows interrupt rates per second
🌐
nixCraft
cyberciti.biz › nixcraft › howto › centos › linux list all iros currently in use
Linux list all IROs currently in use - nixCraft
November 14, 2007 - 42: 30051 3989 1852 1164 6372 5528 3165 3893 PCI-MSI-edge eth0 43: 324118 50177 57614 64707 209869 272543 119056 166394 PCI-MSI-edge ahci 44: 21893 856 334 192 4661 14208 577 10006 PCI-MSI-edge ahci 45: 11 1 1 0 0 0 1 1 PCI-MSI-edge mei_me 46: 104 11 20 67 211 154 33 79 PCI-MSI-edge snd_hda_intel NMI: 2475 7594 343 5417 80 80 50 67 Non-maskable interrupts LOC: 811797 1437385 562591 1186174 67483 79097 53366 64000 Local timer interrupts SPU: 0 0 0 0 0 0 0 0 Spurious interrupts PMI: 2475 7594 343 5417 80 80 50 67 Performance monitoring interrupts IWI: 49091 42482 67738 54517 7948 8963 8777 10430
Find elsewhere
Top answer
1 of 1
1

The keyboard handler itself is often a good interface to determine if the system is live. In the default mode, the tty line discipline will echo characters typed at the keyboard (this echoing is done by the kernel and isn't dependent on any user-space process getting scheduled). So if you're sitting at an idle command line on the system console, and you're not seeing the characters you typed echo onto the screen, there's a good chance your system is locked up. Note, however, that the mode can be changed by a program (such as vi/vim) and that can turn this echoing off (in that case you only see what the vim process prints to the screen).

A second test is to access the machine from the network. There are several things that should cause responses when sent from another machine. If you send a ping (an ICMP Echo Request), the kernel should automatically respond with an ICMP Echo Reply packet. Or if you know there's a server running on port 5000 (say), you should be able to create a connection to that port even if the server process itself never gets a chance to run (the TCP SYN-ACK sent in response to the SYN is done completely within the kernel). If these work, you know network interrupts are being processed, and the kernel's network soft-interrupt handler is being scheduled.

There are other things that would show you whether the keyboard interrupt is triggering and being handled, but those would generally require you to have a working command line link to the machine.

If you have such a link, cat /proc/interrupts will show you counts for each interrupt for each CPU. If the keyboard is interrupting, for example, one of those counts should increase on each interrupt.

You should never have a case where an interrupt is occurring but is not being serviced. All interrupts will be serviced before user-space processing is resumed. (Exactly what it means to service the interrupt is up to the driver and may vary by device / device type.)

If no interrupts are being serviced at all, your system will be completely locked up and unusable as no input or output at all will generally occur without interrupts.

Top answer
1 of 2
5

In general, you canʼt find "table of all interrupts" without a real hardware start because it depends on ton of factors, including extension adapter set, exact chipset version, processor version, and so on.

Iʼd assume x86 as the context. It is defined by Intel that first 32 interrupt vectors (0-31) are for use by CPU itself - it can generate their invocation on internally defined exceptions. That would clash with old style (known from various IBM PC descriptions) that interrupts are assigned to 8-15, but, it is defined as OS task to reassign all conflicting interrupts when entering the protected mode. Then, interrupt controllers (nowadays, you can assume all them are at least APIC) are programmed to assign interrupt numbers of remained set to hardware that requires them. What numbers are assignable, depends on bus type and delivery manner:

  • MSI (message signaled interrupt), MSI-X - the main techniques for PCI-E - are assigned by APIC programming, typically one number per device and role (some devices will emit multiple interrupt types);
  • old line-based style (classic PCI) - up to 4 interrupt lines per bus; so there may be collision between numbers, and handlers shall iterate all possible devices. In classic designs of Pentium 1-3 times, they were assigned by BIOS to range 10-14 and then moved by OS to some upper range.

At the system I write this, interrupt numbers assigned to hardware are 36-62 with some gaps. 17 of them are used by xhci_hcd.

To sum up: for CPU interrupts, read the CPU doc. For others, assume dynamic assignment and find the current assignment in OS state using respective API.

2 of 2
0

So, i wrote code for windows and thought, that linux has table or list with interrupt. But I was surprised when learned, that linux has only one interrupt (int 80h) and many syscalls. So, i can look syscalls here

https://man7.org/linux/man-pages/man2/syscalls.2.html

https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md

Also syscalls division by type of processor and architecture of OS (x32 or x64). So, i should be use syscall and only one interrupt - int 80h. I understood this and now I want to help others

🌐
Dwaves
dwaves.de › 2017 › 05 › 18 › gnu-linux-list-all-interrupts-show-view-get-infos-about-interrupts-cpu-pci-devices
» GNU Linux – list all interrupts – show view get infos about interrupts cpu pci devices | dwaves.de
instead of polling the buffers ... read the keyboard-buffer. note: these are all VMs on Hyper-V on Windows 8 Host ( i am forced to use this here ). uname -a; # tested with Linux debian 3.16.0-4-686-pae #1 SMP Debian 3.16.43-2 (2017-04-30) i686 GNU/Linux cat /proc/interrupts ...
🌐
Packtpub
subscription.packtpub.com › book › cloud-and-networking › 9781801079518 › 5 › ch05lvl1sec31 › viewing-all-allocated-interrupt-irq-lines
Handling Hardware Interrupts | Linux Kernel Programming Part 2 - Char Device Drivers and Kernel Synchronization
By the end of this Linux kernel book, you'll have learned the fundamentals of writing Linux character device driver code for real-world projects and products. ... Bad driver – buggy write() – a privesc! ... Seeing a kernel bug – an Oops! ... Now that you have understood sufficient details about IRQs and interrupt handling, we can (finally!) leverage the kernel's proc filesystem so that we can peek at the currently allocated IRQs. We can do this by reading the content of the /proc/interrupts pseudofile. We'll show a couple of screenshots: the first (Figure 4.8) shows the IRQ status – the number of interrupts serviced per CPU per I/O device – on my Raspberry Pi ZeroW, while the second (Figure 4.9) shows this on our "usual" x86_64 Ubuntu 18.04 VM:
🌐
Opensource.com
opensource.com › article › 20 › 10 › linux-kernel-interrupts
How the Linux kernel handles interrupts | Opensource.com
October 5, 2020 - The first 32 interrupts (0–31) have a fixed sequence that is specified by the CPU. You can find an overview of them on OsDev's Exceptions page. Subsequent IRQs can be assigned differently. The interrupt descriptor table (IDT) contains the assignment between IRQ and ISR. Linux defines an IRQ vector from 0 to 256 for the assignment.
🌐
Tanelpoder
tanelpoder.com › posts › linux-hiding-interrupt-cpu-usage
Is Your Linux Version Hiding Interrupt CPU Usage From You? | Tanel Poder Blog
TL;DR: Some Linux distros and even different kernel versions within a distro have disabled IRQ time accounting. In such case, your monitoring tools will report zero time spent in hardware interrupt handlers (shown as %hi, %irq, hiq, etc). It’s easy to check how your kernel is behaving by looking at /proc/stat and you can still measure interrupt CPU usage using perf and a little creativity.
🌐
Linux Inside
0xax.gitbooks.io › linux-insides › content › Interrupts › linux-interrupts-7.html
Dive into external hardware interrupts · Linux Inside - 0xax
This is the seventh part of the Interrupts and Interrupt Handling in the Linux kernel chapter and in the previous part we have finished with the exceptions which are generated by the processor. In this part we will continue to dive to the interrupt handling and will start with the external ...
🌐
Montana
cs.montana.edu › courses › spring2005 › 518 › Hypertextbook › jim › media › interrupts_on_linux.pdf pdf
Linux Interrupts: The Basic Concepts Mika J. Järvenpää University of Helsinki
kernel enables interrupts. The idtr register allows the IDT · to be located anywhere in the memory. Figure 1 shows the · format of the three different gate descriptors. Linux uses · interrupt gates to handle interrupts and trap gates to handle · exceptions. Linux does not use task gates.
🌐
O'Reilly
oreilly.com › library › view › linux-device-drivers › 0596005903 › ch10.html
10. Interrupt Handling - Linux Device Drivers, 3rd Edition [Book]
February 7, 2005 - It is difficult to demonstrate the use of interrupts without a real hardware device to generate them. Thus, the sample code used in this chapter works with the parallel port. Such ports are starting to become scarce on modern hardware, but, with luck, most people are still able to get their hands on a system with an available port.
Authors   Jonathan CorbetAlessandro Rubini
Published   2005
Pages   636