📄 prcv_mbx.c
字号:
/* ------------------------------------------------------------------------ *//* Hyper Operating System V4 μITRON4.0慌屯 Real-Time OS *//* ITRONカ〖ネル メ〖ルボックス *//* *//* Copyright (C) 1998-2002 by Project HOS *//* http://sourceforge.jp/projects/hos/ *//* ------------------------------------------------------------------------ */#include "knl_mbx.h"/* メ〖ルボックスからの减慨(ポ〖リング) */ER prcv_mbx( ID mbxid, /* 减慨滦据のメ〖ルボックスのID戎规 */ T_MSG **pk_msg) /* メ〖ルボックスから减慨したメッセ〖ジパケットの黎片戎孟 */{ const T_KERNEL_MBXCB_ROM *mbxcb_rom; T_KERNEL_MBXCB_RAM *mbxcb_ram; T_MSG *msg; PRI msgpri; ER ercd; /* ID のチェック */#ifdef HOS_ERCHK_E_ID if ( mbxid < KERNEL_TMIN_MBXID || mbxid > KERNEL_TMAX_MBXID ) { return E_ID; }#endif mknl_loc_sys(); /* システムのロック */ /* コンテキストチェック */#ifdef HOS_ERCHK_E_CTX if ( mknl_sns_wai() ) { mknl_unl_sys(); /* システムのロック豺近 */ return E_CTX; /* コンテキスト稍赖 */ }#endif mbxcb_ram = KERNEL_MBXID_TO_MBXCB_RAM(mbxid); /* オブジェクト赂哼チェック */#ifdef HOS_ERCHK_E_NOEXS if ( mbxcb_ram == NULL ) { mknl_unl_sys(); /* システムのロック豺近 */ return E_NOEXS; }#endif mbxcb_rom = mbxcb_ram->mbxcb_rom; /* メッセ〖ジを庭黎刨界に浮瑚 */ for ( msgpri = 0; msgpri <= mbxcb_rom->maxmpri - TMIN_MPRI; msgpri++ ) { if ( mbxcb_rom->mprihd[msgpri] != NULL ) { break; } } if ( msgpri <= mbxcb_rom->maxmpri - TMIN_MPRI ) { /* メ〖ルボックスにデ〖タがあれば艰り叫す */ msg = mbxcb_rom->mprihd[msgpri]; if ( msg == msg->next ) /* 呵稿の1つなら */ { *pk_msg = msg; mbxcb_rom->mprihd[msgpri] = NULL; } else { *pk_msg = msg->next; msg->next = msg->next->next; } ercd = E_OK; /* 喇根 */ } else { /* メ〖ルボックスが鄂ならタイムアウト */ ercd = E_TMOUT; } mknl_unl_sys(); /* システムのロック豺近 */ return ercd;}/* ------------------------------------------------------------------------ *//* Copyright (C) 1998-2002 by Project HOS *//* ------------------------------------------------------------------------ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -