Subversion Repositories HelenOS-historic

Rev

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

Rev 1090 Rev 1258
Line 41... Line 41...
41
#define IPC_CALL_STATIC_ALLOC   (1<<1) /**< This call will not be freed on error */
41
#define IPC_CALL_STATIC_ALLOC   (1<<1) /**< This call will not be freed on error */
42
#define IPC_CALL_DISCARD_ANSWER (1<<2) /**< Answer will not be passed to
42
#define IPC_CALL_DISCARD_ANSWER (1<<2) /**< Answer will not be passed to
43
                    * userspace, will be discarded */
43
                    * userspace, will be discarded */
44
#define IPC_CALL_FORWARDED      (1<<3) /* Call was forwarded */
44
#define IPC_CALL_FORWARDED      (1<<3) /* Call was forwarded */
45
#define IPC_CALL_CONN_ME_TO     (1<<4) /* Identify connect_me_to */
45
#define IPC_CALL_CONN_ME_TO     (1<<4) /* Identify connect_me_to */
-
 
46
#define IPC_CALL_NOTIF          (1<<5) /* Interrupt notification */
46
 
47
 
47
/* Flags for ipc_wait_for_call */
48
/* Flags for ipc_wait_for_call */
48
#define IPC_WAIT_NONBLOCKING   1
49
#define IPC_WAIT_NONBLOCKING   1
49
 
50
 
50
/* Flags of callid (the addresses are aligned at least to 4,
51
/* Flags of callid (the addresses are aligned at least to 4,
Line 117... Line 118...
117
#define IPC_M_CONNECT_ME_TO     2
118
#define IPC_M_CONNECT_ME_TO     2
118
/** This message is sent to answerbox when the phone
119
/** This message is sent to answerbox when the phone
119
 * is hung up
120
 * is hung up
120
 */
121
 */
121
#define IPC_M_PHONE_HUNGUP      3
122
#define IPC_M_PHONE_HUNGUP      3
-
 
123
/** Interrupt notification */
-
 
124
#define IPC_M_INTERRUPT         4
122
 
125
 
123
 
126
 
124
/* Well-known methods */
127
/* Well-known methods */
125
#define IPC_M_LAST_SYSTEM     511
128
#define IPC_M_LAST_SYSTEM     511
126
#define IPC_M_PING            512
129
#define IPC_M_PING            512
Line 152... Line 155...
152
    link_t connected_phones; /**< Phones connected to this answerbox */
155
    link_t connected_phones; /**< Phones connected to this answerbox */
153
    link_t calls;            /**< Received calls */
156
    link_t calls;            /**< Received calls */
154
    link_t dispatched_calls; /* Should be hash table in the future */
157
    link_t dispatched_calls; /* Should be hash table in the future */
155
 
158
 
156
    link_t answers;          /**< Answered calls */
159
    link_t answers;          /**< Answered calls */
-
 
160
 
-
 
161
    SPINLOCK_DECLARE(irq_lock);
-
 
162
    link_t irq_notifs;       /**< Notifications from IRQ handlers */
157
};
163
};
158
 
164
 
159
typedef enum {
165
typedef enum {
160
    IPC_BUSY_FREE = 0,
166
    IPC_BUSY_FREE = 0,
161
    IPC_BUSY_CONNECTING,
167
    IPC_BUSY_CONNECTING,
Line 193... Line 199...
193
extern int ipc_call(phone_t *phone, call_t *call);
199
extern int ipc_call(phone_t *phone, call_t *call);
194
extern void ipc_call_sync(phone_t *phone, call_t *request);
200
extern void ipc_call_sync(phone_t *phone, call_t *request);
195
extern void ipc_phone_init(phone_t *phone);
201
extern void ipc_phone_init(phone_t *phone);
196
extern void ipc_phone_connect(phone_t *phone, answerbox_t *box);
202
extern void ipc_phone_connect(phone_t *phone, answerbox_t *box);
197
extern void ipc_call_free(call_t *call);
203
extern void ipc_call_free(call_t *call);
198
extern call_t * ipc_call_alloc(void);
204
extern call_t * ipc_call_alloc(int flags);
199
extern void ipc_answerbox_init(answerbox_t *box);
205
extern void ipc_answerbox_init(answerbox_t *box);
200
extern void ipc_call_static_init(call_t *call);
206
extern void ipc_call_static_init(call_t *call);
201
extern void task_print_list(void);
207
extern void task_print_list(void);
202
extern int ipc_forward(call_t *call, phone_t *newphone, answerbox_t *oldbox);
208
extern int ipc_forward(call_t *call, phone_t *newphone, answerbox_t *oldbox);
203
extern void ipc_cleanup(task_t *task);
209
extern void ipc_cleanup(task_t *task);
204
extern int ipc_phone_hangup(phone_t *phone);
210
extern int ipc_phone_hangup(phone_t *phone);
205
extern void ipc_backsend_err(phone_t *phone, call_t *call, __native err);
211
extern void ipc_backsend_err(phone_t *phone, call_t *call, __native err);
206
 
212
 
-
 
213
extern int ipc_irq_register(answerbox_t *box, int irq);
-
 
214
extern void ipc_irq_send_notif(int irq);
-
 
215
extern void ipc_irq_unregister(answerbox_t *box, int irq);
-
 
216
 
-
 
217
 
207
extern answerbox_t *ipc_phone_0;
218
extern answerbox_t *ipc_phone_0;
208
 
219
 
209
#endif
220
#endif
210
 
221
 
211
#endif
222
#endif