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 193... Line 193...
193
 * - ARG1 - source virtual address in the destination address space
193
 * - ARG1 - source virtual address in the destination address space
194
 * - ARG2 - final size of data to be copied
194
 * - ARG2 - final size of data to be copied
195
 */
195
 */
196
#define IPC_M_DATA_READ     7
196
#define IPC_M_DATA_READ     7
197
 
197
 
-
 
198
/** Debug the recipient.
-
 
199
 * - ARG1 - specifies the debug method (from udebug_method_t)
-
 
200
 * - other arguments are specific to the debug method
-
 
201
 */
-
 
202
#define IPC_M_DEBUG_ALL     8
-
 
203
 
198
/* Well-known methods */
204
/* Well-known methods */
199
#define IPC_M_LAST_SYSTEM   511
205
#define IPC_M_LAST_SYSTEM   511
200
#define IPC_M_PING      512
206
#define IPC_M_PING      512
201
/* User methods */
207
/* User methods */
202
#define IPC_FIRST_USER_METHOD   1024
208
#define IPC_FIRST_USER_METHOD   1024
Line 279... Line 285...
279
    /** Data passed from/to userspace. */
285
    /** Data passed from/to userspace. */
280
    ipc_data_t data;
286
    ipc_data_t data;
281
 
287
 
282
    /** Buffer for IPC_M_DATA_WRITE and IPC_M_DATA_READ. */
288
    /** Buffer for IPC_M_DATA_WRITE and IPC_M_DATA_READ. */
283
    uint8_t *buffer;
289
    uint8_t *buffer;
-
 
290
 
-
 
291
    /*
-
 
292
     * The forward operation can masquerade the caller phone. For those
-
 
293
     * cases, we must keep it aside so that the answer is processed
-
 
294
     * correctly.
-
 
295
     */
-
 
296
    phone_t *caller_phone;
284
} call_t;
297
} call_t;
285
 
298
 
286
extern void ipc_init(void);
299
extern void ipc_init(void);
287
extern call_t * ipc_wait_for_call(answerbox_t *, uint32_t, int);
300
extern call_t * ipc_wait_for_call(answerbox_t *, uint32_t, int);
288
extern void ipc_answer(answerbox_t *, call_t *);
301
extern void ipc_answer(answerbox_t *, call_t *);
289
extern int ipc_call(phone_t *, call_t *);
302
extern int ipc_call(phone_t *, call_t *);
290
extern void ipc_call_sync(phone_t *, call_t *);
303
extern int ipc_call_sync(phone_t *, call_t *);
291
extern void ipc_phone_init(phone_t *);
304
extern void ipc_phone_init(phone_t *);
292
extern void ipc_phone_connect(phone_t *, answerbox_t *);
305
extern void ipc_phone_connect(phone_t *, answerbox_t *);
293
extern void ipc_call_free(call_t *);
306
extern void ipc_call_free(call_t *);
294
extern call_t * ipc_call_alloc(int);
307
extern call_t * ipc_call_alloc(int);
295
extern void ipc_answerbox_init(answerbox_t *, struct task *);
308
extern void ipc_answerbox_init(answerbox_t *, struct task *);
Line 298... Line 311...
298
extern int ipc_forward(call_t *, phone_t *, answerbox_t *, int);
311
extern int ipc_forward(call_t *, phone_t *, answerbox_t *, int);
299
extern void ipc_cleanup(void);
312
extern void ipc_cleanup(void);
300
extern int ipc_phone_hangup(phone_t *);
313
extern int ipc_phone_hangup(phone_t *);
301
extern void ipc_backsend_err(phone_t *, call_t *, unative_t);
314
extern void ipc_backsend_err(phone_t *, call_t *, unative_t);
302
extern void ipc_print_task(task_id_t);
315
extern void ipc_print_task(task_id_t);
-
 
316
extern void ipc_answerbox_slam_phones(answerbox_t *, bool);
-
 
317
extern void ipc_cleanup_call_list(link_t *);
303
 
318
 
304
extern answerbox_t *ipc_phone_0;
319
extern answerbox_t *ipc_phone_0;
305
 
320
 
306
#endif
321
#endif
307
 
322