framework/src/fwk_multi_thread.c
static void process_event_requiring_response(struct fwk_event *event)
{
    int status;
    const struct fwk_module *module;
    struct __fwk_thread_ctx *source_thread_ctx;
    struct fwk_event resp_event, *allocated_event;
    int (*process_event)(const struct fwk_event *event,
                         struct fwk_event *resp_event);

    module = fwk_module_get_ctx(event->target_id)->desc;
    source_thread_ctx = thread_get_ctx(event->source_id);

    process_event = event->is_notification ? module->process_notification :
                                             module->process_event;

    resp_event = *event;
    resp_event.source_id = event->target_id;
    resp_event.target_id = event->source_id;
    resp_event.is_delayed_response = false;

    status = process_event(event, &resp_event);
    if (status != FWK_SUCCESS) {
        FWK_LOG_CRIT(err_msg_line, status, __LINE__);
    }

    resp_event.is_response = true;
    resp_event.response_requested = false;
    if (!resp_event.is_delayed_response) {
        put_event(source_thread_ctx, &resp_event, FWK_EVENT_TYPE_STD);
    } else {
        allocated_event = duplicate_event(&resp_event, FWK_EVENT_TYPE_STD);
        if (allocated_event != NULL) {
            fwk_list_push_tail(
                __fwk_thread_get_delayed_response_list(resp_event.source_id),
                &allocated_event->slist_node);
        }
    }
}
/*
 * Process event requiring a response
 *
 * This function is a sub-routine of process_next_thread_event().
 *
 * \param event Pointer to the current event.
 */
Process event requiring a response
This function is a sub-routine of process_next_thread_event().

\param event Pointer to the current event.
Process event requiring a response This function is a sub - routine of process_next_thread_event () . \ param event Pointer to the current event .
static void process_event_requiring_response(struct fwk_event *event)
{
    int status;
    const struct fwk_module *module;
    struct __fwk_thread_ctx *source_thread_ctx;
    struct fwk_event resp_event, *allocated_event;
    int (*process_event)(const struct fwk_event *event,
                         struct fwk_event *resp_event);
    module = fwk_module_get_ctx(event->target_id)->desc;
    source_thread_ctx = thread_get_ctx(event->source_id);
    process_event = event->is_notification ? module->process_notification :
                                             module->process_event;
    resp_event = *event;
    resp_event.source_id = event->target_id;
    resp_event.target_id = event->source_id;
    resp_event.is_delayed_response = false;
    status = process_event(event, &resp_event);
    if (status != FWK_SUCCESS) {
        FWK_LOG_CRIT(err_msg_line, status, __LINE__);
    }
    resp_event.is_response = true;
    resp_event.response_requested = false;
    if (!resp_event.is_delayed_response) {
        put_event(source_thread_ctx, &resp_event, FWK_EVENT_TYPE_STD);
    } else {
        allocated_event = duplicate_event(&resp_event, FWK_EVENT_TYPE_STD);
        if (allocated_event != NULL) {
            fwk_list_push_tail(
                __fwk_thread_get_delayed_response_list(resp_event.source_id),
                &allocated_event->slist_node);
        }
    }
}
static void process_event_requiring_response ( struct fwk_event * event ) { int status ; const struct fwk_module * module ; struct __fwk_thread_ctx * source_thread_ctx ; struct fwk_event resp_event , * allocated_event ; int ( * process_event ) ( const struct fwk_event * event , struct fwk_event * resp_event ) ; module = fwk_module_get_ctx ( event -> target_id ) -> desc ; source_thread_ctx = thread_get_ctx ( event -> source_id ) ; process_event = event -> is_notification ? module -> process_notification : module -> process_event ; resp_event = * event ; resp_event . source_id = event -> target_id ; resp_event . target_id = event -> source_id ; resp_event . is_delayed_response = false ; status = process_event ( event , & resp_event ) ; if ( status != FWK_SUCCESS ) { FWK_LOG_CRIT ( err_msg_line , status , __LINE__ ) ; } resp_event . is_response = true ; resp_event . response_requested = false ; if ( ! resp_event . is_delayed_response ) { put_event ( source_thread_ctx , & resp_event , FWK_EVENT_TYPE_STD ) ; } else { allocated_event = duplicate_event ( & resp_event , FWK_EVENT_TYPE_STD ) ; if ( allocated_event != NULL ) { fwk_list_push_tail ( __fwk_thread_get_delayed_response_list ( resp_event . source_id ) , & allocated_event -> slist_node ) ; } } }
Process event requiring a response
 This function is a sub-routine of process_next_thread_event().
Process event requiring a response This function is a sub - routine of process_next_thread_event () .