Subversion Repositories HelenOS

Rev

Rev 3761 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3761 Rev 3947
Line 34... Line 34...
34
 
34
 
35
#ifndef KERN_IPC_IRQ_H_
35
#ifndef KERN_IPC_IRQ_H_
36
#define KERN_IPC_IRQ_H_
36
#define KERN_IPC_IRQ_H_
37
 
37
 
38
/** Maximum length of IPC IRQ program */
38
/** Maximum length of IPC IRQ program */
39
#define IRQ_MAX_PROG_SIZE   10
39
#define IRQ_MAX_PROG_SIZE   20
40
 
40
 
41
#include <ipc/ipc.h>
41
#include <ipc/ipc.h>
42
#include <ddi/irq.h>
42
#include <ddi/irq.h>
43
#include <arch/types.h>
43
#include <arch/types.h>
44
#include <adt/list.h>
44
#include <adt/list.h>
45
 
45
 
46
extern int ipc_irq_register(answerbox_t *box, inr_t inr, devno_t devno,
46
extern int ipc_irq_register(answerbox_t *, inr_t, devno_t, unative_t,
47
    unative_t method, irq_code_t *ucode);
47
    irq_code_t *);
-
 
48
 
-
 
49
extern irq_ownership_t ipc_irq_top_half_claim(irq_t *);
48
extern void ipc_irq_send_notif(irq_t *irq);
50
extern void ipc_irq_top_half_handler(irq_t *);
-
 
51
 
49
extern void ipc_irq_unregister(answerbox_t *box, inr_t inr, devno_t devno);
52
extern int ipc_irq_unregister(answerbox_t *, inr_t, devno_t);
50
extern void ipc_irq_cleanup(answerbox_t *box);
53
extern void ipc_irq_cleanup(answerbox_t *);
51
 
54
 
52
/*
55
/*
53
 * User friendly wrappers for ipc_irq_send_msg(). They are in the form
56
 * User friendly wrappers for ipc_irq_send_msg(). They are in the form
54
 * ipc_irq_send_msg_m(), where m is the number of payload arguments.
57
 * ipc_irq_send_msg_m(), where m is the number of payload arguments.
55
 */
58
 */
Line 64... Line 67...
64
#define ipc_irq_send_msg_4(irq, a1, a2, a3, a4) \
67
#define ipc_irq_send_msg_4(irq, a1, a2, a3, a4) \
65
    ipc_irq_send_msg((irq), (a1), (a2), (a3), (a4), 0)
68
    ipc_irq_send_msg((irq), (a1), (a2), (a3), (a4), 0)
66
#define ipc_irq_send_msg_5(irq, a1, a2, a3, a4, a5) \
69
#define ipc_irq_send_msg_5(irq, a1, a2, a3, a4, a5) \
67
    ipc_irq_send_msg((irq), (a1), (a2), (a3), (a4), (a5))
70
    ipc_irq_send_msg((irq), (a1), (a2), (a3), (a4), (a5))
68
 
71
 
69
extern void ipc_irq_send_msg(irq_t *irq, unative_t a1, unative_t a2,
72
extern void ipc_irq_send_msg(irq_t *, unative_t, unative_t, unative_t, unative_t,
70
    unative_t a3, unative_t a4, unative_t a5);
73
    unative_t);
71
 
74
 
72
#endif
75
#endif
73
 
76
 
74
/** @}
77
/** @}
75
 */
78
 */