Subversion Repositories HelenOS

Rev

Rev 3022 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3022 Rev 4055
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
 */
-
 
59
#define ipc_irq_send_msg_0(irq) \
-
 
60
    ipc_irq_send_msg((irq), 0, 0, 0, 0, 0)
56
#define ipc_irq_send_msg_1(irq, a1) \
61
#define ipc_irq_send_msg_1(irq, a1) \
57
    ipc_irq_send_msg((irq), (a1), 0, 0, 0, 0)
62
    ipc_irq_send_msg((irq), (a1), 0, 0, 0, 0)
58
#define ipc_irq_send_msg_2(irq, a1, a2) \
63
#define ipc_irq_send_msg_2(irq, a1, a2) \
59
    ipc_irq_send_msg((irq), (a1), (a2), 0, 0, 0)
64
    ipc_irq_send_msg((irq), (a1), (a2), 0, 0, 0)
60
#define ipc_irq_send_msg_3(irq, a1, a2, a3) \
65
#define ipc_irq_send_msg_3(irq, a1, a2, a3) \
Line 62... Line 67...
62
#define ipc_irq_send_msg_4(irq, a1, a2, a3, a4) \
67
#define ipc_irq_send_msg_4(irq, a1, a2, a3, a4) \
63
    ipc_irq_send_msg((irq), (a1), (a2), (a3), (a4), 0)
68
    ipc_irq_send_msg((irq), (a1), (a2), (a3), (a4), 0)
64
#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) \
65
    ipc_irq_send_msg((irq), (a1), (a2), (a3), (a4), (a5))
70
    ipc_irq_send_msg((irq), (a1), (a2), (a3), (a4), (a5))
66
 
71
 
67
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,
68
    unative_t a3, unative_t a4, unative_t a5);
73
    unative_t);
69
 
74
 
70
#endif
75
#endif
71
 
76
 
72
/** @}
77
/** @}
73
 */
78
 */