forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Since we use one irq for each thread and each device, 64/32 irqs is not enough in some cases. To increase the number of irqs and avoid too much overhead we use an indirect approach: the irqs are marked using a bitmap (array of longs) and a summary of the modified bits is kept in a separate "index" long - one bit for each sizeof(long). Thus we can support 4096 irqs on 64bit platforms and 1024 irqs on 32bit platforms. Whenever an irq is trigger both the array and the index is updated. To find which irqs were triggered we first search the index and then the corresponding part of the arrary. This limits the number of atomic operations to 2 per irq, in the worst case, for both triggering and checking irqs. Signed-off-by: Octavian Purdila <tavi@cs.pub.ro>
- Loading branch information
Showing
2 changed files
with
64 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters