MAILBOX_LOCAL int mailbox_ipc_int_handle(unsigned int int_src)
{
    struct mb_vx_cfg        *cfg    =  &g_mailbox_vx_cfg_tbl[0];
    struct mb_vx_proc       *proc   =   MAILBOX_NULL;
    struct mb_vx_work       *work   =   MAILBOX_NULL;
    unsigned int count = sizeof(g_mailbox_vx_proc_tbl)/sizeof(struct mb_vx_proc);
    unsigned int proc_id = 0;
    unsigned int channel_id = 0;
    unsigned int is_find = MAILBOX_FALSE;
    unsigned int ret_val = MAILBOX_OK;

    if(MAILBOX_INIT_MAGIC != g_mailbox_handle.init_flag)
    {
        return (int)ret_val;
    }

    g_hifimailbox++;

    /*找到传入ID对应的邮箱配置*/
    while (MAILBOX_MAILCODE_INVALID != cfg->channel_id) {
        /*处理所有挂接到这个中断号的接收邮箱通道*/
        proc_id = cfg->proc_style;
        if ((int_src == cfg->Int_src) && (MAILBOX_VXWORKS_PROC_STYLE_SEND_RESERVED != cfg->proc_style)) {
            channel_id = cfg->channel_id;

            proc   =  &g_mailbox_vx_proc_tbl[0];
            count          =   sizeof(g_mailbox_vx_proc_tbl)/sizeof(struct mb_vx_proc);
            while (count) {
                /*找到此邮箱通道对应的任务信息*/
                if (proc_id == proc->id) {
                    work = proc->vxqueue;
                    is_find = (unsigned int)mailbox_ipc_process( work,
                                                 proc,
                                                 channel_id,
                                                 proc_id);
                    break;
                }
                count--;
                proc++;
            }

            if (0 == count) {
                 ret_val = (unsigned int)mailbox_logerro_p1(MAILBOX_ERR_VXWORKS_MAIL_TASK_NOT_FIND, channel_id);
            }
        }
        cfg++;
    }

    if (MAILBOX_TRUE != is_find) {
         ret_val = (unsigned int)mailbox_logerro_p1(MAILBOX_ERR_VXWORKS_MAIL_INT_NOT_FIND, channel_id);
    }

    return (int)ret_val;
}
MAILBOX_LOCAL long mailbox_ipc_int_handle(unsigned long int_num)
{
    struct mb_local_cfg         *local_cfg    =  &g_mb_local_cfg_tbl[0];
    struct mb_local_proc        *local_proc   =   MAILBOX_NULL;
    struct mb_local_work        *local_work      =   MAILBOX_NULL;
    unsigned long count = sizeof(g_mailbox_local_proc_tbl)/sizeof(struct mb_local_proc);
    unsigned long proc_id = 0;
    unsigned long channel_id = 0;
    unsigned long is_find = MAILBOX_FALSE;
    unsigned long ret_val = MAILBOX_OK;

    /*找到传入ID对应的邮箱配置*/
    while (MAILBOX_MAILCODE_INVALID != local_cfg->channel_id) {
        /*处理所有挂接到这个中断号的接收邮箱通道*/
        proc_id = local_cfg->property;
        if ((int_num == local_cfg->int_src) && (MAILBOX_SEND 
              != (MAILBOX_PROC_MASK & local_cfg->property))) {
            channel_id = local_cfg->channel_id;

            if (check_himntn(HIMNTN_PRINTK_WHO_WAKEUP_ACPU)) {
                printk(KERN_INFO "%s:%d:mailbox channel_id:[%ld]", __func__, __LINE__, channel_id);
            }

            local_proc   =  &g_mailbox_local_proc_tbl[0];
            count          =   sizeof(g_mailbox_local_proc_tbl)/sizeof(struct mb_local_proc);
            while (count) {
                /*找到此邮箱通道对应的任务信息*/
                if (proc_id == local_proc->proc_id) {
                    local_work = local_proc->work_list;
                    is_find = mailbox_ipc_process( local_work,
                                                 local_proc,
                                                 channel_id,
                                                 proc_id);
                    break;
                }
                count--;
                local_proc++;
            }

            if (0 == count) {
                 ret_val = mailbox_logerro_p1(MAILBOX_ERR_LINUX_MAIL_TASK_NOT_FIND, channel_id);
            }
        }
        local_cfg++;
    }

    if (MAILBOX_TRUE != is_find) {
         ret_val = mailbox_logerro_p1(MAILBOX_ERR_LINUX_MAIL_INT_NOT_FIND, channel_id);
    }

    return ret_val;
}
MAILBOX_LOCAL int mailbox_ipc_int_handle(unsigned int int_num)
{
    struct mb_local_cfg         *local_cfg    =  &g_mb_local_cfg_tbl[0];
    struct mb_local_proc        *local_proc   =   MAILBOX_NULL;
    struct mb_local_work        *local_work      =   MAILBOX_NULL;
    unsigned int count = sizeof(g_mailbox_local_proc_tbl)/sizeof(struct mb_local_proc);
    unsigned int proc_id = 0;
    unsigned int channel_id = 0;
    unsigned int is_find = MAILBOX_FALSE;
    unsigned int ret_val = MAILBOX_OK;

    /*找到传入ID对应的邮箱配置*/
    while (MAILBOX_MAILCODE_INVALID != local_cfg->channel_id) {
        /*处理所有挂接到这个中断号的接收邮箱通道*/
        proc_id = local_cfg->property;
        if ((int_num == local_cfg->int_src) && (MAILBOX_SEND 
              != (MAILBOX_PROC_MASK & local_cfg->property))) {
            channel_id = local_cfg->channel_id;


            local_proc   =  &g_mailbox_local_proc_tbl[0];
            count          =   sizeof(g_mailbox_local_proc_tbl)/sizeof(struct mb_local_proc);
            while (count) {
                /*找到此邮箱通道对应的任务信息*/
                if (proc_id == local_proc->proc_id) {
                    local_work = local_proc->work_list;
                    is_find = mailbox_ipc_process( local_work,
                                                 local_proc,
                                                 channel_id,
                                                 proc_id);
                    break;
                }
                count--;
                local_proc++;
            }

			if (0 == count) {
				ret_val = mailbox_logerro_p1(MAILBOX_ERR_LINUX_MAIL_TASK_NOT_FIND, channel_id);
			}
		}
		local_cfg++;
	}

	if (MAILBOX_TRUE != is_find) {
		ret_val = mailbox_logerro_p1(MAILBOX_ERR_LINUX_MAIL_INT_NOT_FIND, channel_id);
	}

	return ret_val;
}