blob: 48843cf048b78772f2e67f329ebe374706b3a0f0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#ifndef __INTR_H__
#define __INTR_H__
#include <device/device_types.h>
#include <kern/queue.h>
#include <device/notify.h>
typedef struct intr_entry
{
queue_chain_t chain;
ipc_port_t dest;
int line;
int interrupts; /* The number of interrupts occur since last run of intr_thread. */
int unacked_interrupts; /* Number of times irqs were disabled for this */
} user_intr_t;
#define DEVICE_NOTIFY_MSGH_SEQNO 0
int install_user_intr_handler (unsigned int line,
unsigned long flags,
user_intr_t *user_intr);
/* Returns 0 if action should be removed */
int deliver_user_intr (int line, user_intr_t *intr);
user_intr_t *insert_intr_entry (int line, ipc_port_t dest);
/* TODO: should rather take delivery port */
kern_return_t user_intr_enable (int line, char status);
void intr_thread (void);
void __disable_irq(unsigned int);
void __enable_irq(unsigned int);
#endif
|