Changeset 53af6e8c in mainline


Ignore:
Timestamp:
2012-08-26T13:53:26Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
eb5560a
Parents:
20282ef3
Message:

No need to hold the sender task when the call is going to be answered.
The sender may no longer forget the call and, in fact, must wait for it.

Location:
kernel/generic/src/ipc
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/ipc/ipc.c

    r20282ef3 r53af6e8c  
    196196        } else {
    197197                /*
    198                  * Hold the sender task so that it does not suddenly disappear
    199                  * while we are working with it.
    200                  */
    201                 task_hold(call->sender);
    202 
    203                 /*
    204198                 * If the call is still active, i.e. it was answered
    205199                 * in a non-standard way, remove the call from the
     
    232226       
    233227        waitq_wakeup(&callerbox->wq, WAKEUP_FIRST);
    234 
    235         task_release(call->sender);
    236228}
    237229
  • kernel/generic/src/ipc/sysipc.c

    r20282ef3 r53af6e8c  
    194194                list_remove(&answer->ta_link);
    195195                spinlock_unlock(&answer->sender->active_calls_lock);
    196 
    197                 /*
    198                  * Hold the sender task so that it cannot suddenly disappear
    199                  * while we are working with it.
    200                  */
    201                 task_hold(answer->sender);
    202196        }
    203197        spinlock_unlock(&answer->forget_lock);
     
    217211        }
    218212       
    219         if (!olddata) {
    220                 task_release(answer->sender);
     213        if (!olddata)
    221214                return rc;
    222         }
    223        
    224215
    225216        ops = sysipc_ops_get(answer->request_method);
     
    227218                rc = ops->answer_preprocess(answer, olddata);
    228219       
    229         task_release(answer->sender);
    230 
    231220        return rc;
    232221}
Note: See TracChangeset for help on using the changeset viewer.