Subversion Repositories HelenOS-historic

Rev

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

Rev 1346 Rev 1359
Line 62... Line 62...
62
 * - some system messages may be forwarded, for some of them
62
 * - some system messages may be forwarded, for some of them
63
 *   it is useless
63
 *   it is useless
64
 */
64
 */
65
static inline int is_forwardable(__native method)
65
static inline int is_forwardable(__native method)
66
{
66
{
67
    if (method == IPC_M_PHONE_HUNGUP || method == IPC_M_AS_SEND)
67
    if (method == IPC_M_PHONE_HUNGUP || method == IPC_M_AS_AREA_SEND)
68
        return 0; /* This message is meant only for the receiver */
68
        return 0; /* This message is meant only for the receiver */
69
    return 1;
69
    return 1;
70
}
70
}
71
 
71
 
72
/****************************************************/
72
/****************************************************/
Line 81... Line 81...
81
{
81
{
82
    if (IPC_GET_METHOD(call->data) == IPC_M_CONNECT_TO_ME)
82
    if (IPC_GET_METHOD(call->data) == IPC_M_CONNECT_TO_ME)
83
        return 1;
83
        return 1;
84
    if (IPC_GET_METHOD(call->data) == IPC_M_CONNECT_ME_TO)
84
    if (IPC_GET_METHOD(call->data) == IPC_M_CONNECT_ME_TO)
85
        return 1;
85
        return 1;
86
    if (IPC_GET_METHOD(call->data) == IPC_M_AS_SEND)
86
    if (IPC_GET_METHOD(call->data) == IPC_M_AS_AREA_SEND)
87
        return 1;
87
        return 1;
88
    return 0;
88
    return 0;
89
}
89
}
90
 
90
 
91
/** Interpret process answer as control information */
91
/** Interpret process answer as control information */
Line 125... Line 125...
125
        /* If the users accepted call, connect */
125
        /* If the users accepted call, connect */
126
        if (!IPC_GET_RETVAL(answer->data)) {
126
        if (!IPC_GET_RETVAL(answer->data)) {
127
            ipc_phone_connect((phone_t *)IPC_GET_ARG3(*olddata),
127
            ipc_phone_connect((phone_t *)IPC_GET_ARG3(*olddata),
128
                      &TASK->answerbox);
128
                      &TASK->answerbox);
129
        }
129
        }
130
    } else if (IPC_GET_METHOD(*olddata) == IPC_M_AS_SEND) {
130
    } else if (IPC_GET_METHOD(*olddata) == IPC_M_AS_AREA_SEND) {
131
        if (!IPC_GET_RETVAL(answer->data)) { /* Accepted, handle As_area receival */
131
        if (!IPC_GET_RETVAL(answer->data)) { /* Accepted, handle as_area receipt */
132
            return as_area_steal(answer->sender,
132
            return as_area_steal(answer->sender,
133
                         IPC_GET_ARG2(*olddata),IPC_GET_ARG3(*olddata),
133
                         IPC_GET_ARG2(*olddata),IPC_GET_ARG3(*olddata),
134
                         IPC_GET_ARG1(answer->data));
134
                         IPC_GET_ARG1(answer->data));
135
        }
135
        }
136
    }
136
    }
Line 154... Line 154...
154
        /* Set arg3 for server */
154
        /* Set arg3 for server */
155
        IPC_SET_ARG3(call->data, (__native)&TASK->phones[newphid]);
155
        IPC_SET_ARG3(call->data, (__native)&TASK->phones[newphid]);
156
        call->flags |= IPC_CALL_CONN_ME_TO;
156
        call->flags |= IPC_CALL_CONN_ME_TO;
157
        call->private = newphid;
157
        call->private = newphid;
158
        break;
158
        break;
159
    case IPC_M_AS_SEND:
159
    case IPC_M_AS_AREA_SEND:
160
        size = as_get_size(IPC_GET_ARG2(call->data));
160
        size = as_get_size(IPC_GET_ARG2(call->data));
161
        if (!size) {
161
        if (!size) {
162
            return EPERM;
162
            return EPERM;
163
        }
163
        }
164
        IPC_SET_ARG3(call->data, size);
164
        IPC_SET_ARG3(call->data, size);