Subversion Repositories HelenOS-historic

Rev

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

Rev 1090 Rev 1141
Line 90... Line 90...
90
static inline void answer_preprocess(call_t *answer, ipc_data_t *olddata)
90
static inline void answer_preprocess(call_t *answer, ipc_data_t *olddata)
91
{
91
{
92
    int phoneid;
92
    int phoneid;
93
 
93
 
94
    if (IPC_GET_RETVAL(answer->data) == EHANGUP) {
94
    if (IPC_GET_RETVAL(answer->data) == EHANGUP) {
-
 
95
        /* In case of forward, hangup the forwared phone,
95
        /* Atomic operation */
96
         * not the originator
-
 
97
         */
-
 
98
        spinlock_lock(&answer->data.phone->lock);
-
 
99
        spinlock_lock(&TASK->answerbox.lock);
-
 
100
        if (answer->data.phone->callee) {
-
 
101
            list_remove(&answer->data.phone->list);
96
        answer->data.phone->callee = NULL;
102
            answer->data.phone->callee = 0;
-
 
103
        }
-
 
104
        spinlock_unlock(&TASK->answerbox.lock);
-
 
105
        spinlock_unlock(&answer->data.phone->lock);
97
    }
106
    }
98
 
107
 
99
    if (!olddata)
108
    if (!olddata)
100
        return;
109
        return;
101
 
110