Subversion Repositories HelenOS-historic

Rev

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

Rev 1500 Rev 1547
Line 44... Line 44...
44
    return async_get_call_timeout(data, 0);
44
    return async_get_call_timeout(data, 0);
45
}
45
}
46
 
46
 
47
aid_t async_send_2(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2,
47
aid_t async_send_2(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2,
48
           ipc_call_t *dataptr);
48
           ipc_call_t *dataptr);
-
 
49
aid_t async_send_3(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2,
-
 
50
           ipcarg_t arg3, ipc_call_t *dataptr);
49
void async_wait_for(aid_t amsgid, ipcarg_t *result);
51
void async_wait_for(aid_t amsgid, ipcarg_t *result);
50
int async_wait_timeout(aid_t amsgid, ipcarg_t *retval, suseconds_t timeout);
52
int async_wait_timeout(aid_t amsgid, ipcarg_t *retval, suseconds_t timeout);
51
 
53
 
52
/** Pseudo-synchronous message sending
54
/** Pseudo-synchronous message sending
53
 *
55
 *
Line 66... Line 68...
66
        *r1 = IPC_GET_ARG1(result);
68
        *r1 = IPC_GET_ARG1(result);
67
    if (r2)
69
    if (r2)
68
        *r2 = IPC_GET_ARG2(result);
70
        *r2 = IPC_GET_ARG2(result);
69
    return rc;
71
    return rc;
70
}
72
}
-
 
73
static inline ipcarg_t sync_send_3(int phoneid, ipcarg_t method, ipcarg_t arg1,
-
 
74
                   ipcarg_t arg2, ipcarg_t arg3, ipcarg_t *r1,
-
 
75
                   ipcarg_t *r2, ipcarg_t *r3)
-
 
76
{
-
 
77
    ipc_call_t result;
-
 
78
    ipcarg_t rc;
-
 
79
 
-
 
80
    aid_t eid = async_send_3(phoneid, method, arg1, arg2, arg3, &result);
-
 
81
    async_wait_for(eid, &rc);
-
 
82
    if (r1)
-
 
83
        *r1 = IPC_GET_ARG1(result);
-
 
84
    if (r2)
-
 
85
        *r2 = IPC_GET_ARG2(result);
-
 
86
    if (r3)
-
 
87
        *r3 = IPC_GET_ARG3(result);
-
 
88
    return rc;
-
 
89
}
71
 
90
 
72
 
91
 
73
pstid_t async_new_connection(ipcarg_t in_phone_hash,ipc_callid_t callid,
92
pstid_t async_new_connection(ipcarg_t in_phone_hash,ipc_callid_t callid,
74
                 ipc_call_t *call,
93
                 ipc_call_t *call,
75
                 void (*cthread)(ipc_callid_t,ipc_call_t *));
94
                 void (*cthread)(ipc_callid_t,ipc_call_t *));