Changeset 716185d in mainline for kernel/generic/src/ipc


Ignore:
Timestamp:
2012-10-03T20:37:07Z (13 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
466e95f7
Parents:
190976f
Message:

Call request_process() callback for incoming calls during IPC cleanup.

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

Legend:

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

    r190976f r716185d  
    513513                irq_spinlock_unlock(&box->lock, true);
    514514
     515                if (lst == &box->calls) {
     516                        sysipc_ops_t *ops;
     517
     518                        ops = sysipc_ops_get(call->request_method);
     519                        if (ops->request_process)
     520                                (void) ops->request_process(call, box);
     521                }
     522
    515523                ipc_data_t old = call->data;
    516524                IPC_SET_RETVAL(call->data, EHANGUP);
     
    753761       
    754762        /* Answer all messages in 'calls' and 'dispatched_calls' queues */
     763        ipc_cleanup_call_list(&TASK->answerbox, &TASK->answerbox.calls);
    755764        ipc_cleanup_call_list(&TASK->answerbox,
    756765            &TASK->answerbox.dispatched_calls);
    757         ipc_cleanup_call_list(&TASK->answerbox, &TASK->answerbox.calls);
    758766
    759767        ipc_forget_all_active_calls();
  • kernel/generic/src/ipc/kbox.c

    r190976f r716185d  
    9696       
    9797        /* Answer all messages in 'calls' and 'dispatched_calls' queues. */
     98        ipc_cleanup_call_list(&TASK->kb.box, &TASK->kb.box.calls);
    9899        ipc_cleanup_call_list(&TASK->kb.box, &TASK->kb.box.dispatched_calls);
    99         ipc_cleanup_call_list(&TASK->kb.box, &TASK->kb.box.calls);
    100100}
    101101
  • kernel/generic/src/ipc/ops/concttome.c

    r190976f r716185d  
    3939#include <abi/errno.h>
    4040#include <arch.h>
    41 
    42 static int request_preprocess(call_t *call, phone_t *phone)
    43 {
    44         /* Start with the assumption that there is no allocated phoneid. */
    45         IPC_SET_ARG5(call->data, -1);
    46         return EOK;
    47 }
    4841
    4942static int request_process(call_t *call, answerbox_t *box)
     
    9184
    9285sysipc_ops_t ipc_m_connect_to_me_ops = {
    93         .request_preprocess = request_preprocess,
     86        .request_preprocess = null_request_preprocess,
    9487        .request_forget = null_request_forget,
    9588        .request_process = request_process,
Note: See TracChangeset for help on using the changeset viewer.