📄 rendezvous.h
字号:
/* *---------------------------------------------------------------------- * micro T-Kernel * * Copyright (C) 2006-2007 by Ken Sakamura. All rights reserved. * micro T-Kernel is distributed under the micro T-License. *---------------------------------------------------------------------- * * Version: 1.00.00 * Released by T-Engine Forum(http://www.t-engine.org) at 2007/03/26. * *---------------------------------------------------------------------- *//* * rendezvous.h * Rendezvous */#ifndef _RENDEZVOUS_H_#define _RENDEZVOUS_H_/* * Rendezvous port control block */typedef struct port_control_block { QUEUE call_queue; /* Port call wait queue */ ID porid; /* Port ID */ VP exinf; /* Extended information */ ATR poratr; /* Port attribute */ QUEUE accept_queue; /* Port accept wait queue */ INT maxcmsz; /* Maximum length of call message */ INT maxrmsz; /* Maximum length of reply message */#if USE_OBJECT_NAME UB name[OBJECT_NAME_LENGTH]; /* name */#endif} PORCB;/** [END Common Definitions] */IMPORT PORCB knl_porcb_table[]; /* Rendezvous port control block */IMPORT QUEUE knl_free_porcb; /* FreeQue */#define get_porcb(id) ( &knl_porcb_table[INDEX_POR(id)] )#if CFN_MAX_PORID > 0#define RDVNO_SHIFT (sizeof(RNO)*8/2)/* * Create rendezvous number */Inline RNO knl_gen_rdvno( TCB *tcb ){ RNO rdvno; rdvno = tcb->wrdvno; tcb->wrdvno += (1U << RDVNO_SHIFT); return rdvno;}/* * Get task ID from rendezvous number */Inline ID knl_get_tskid_rdvno( RNO rdvno ){ return (W)(H)(rdvno & ((1U << RDVNO_SHIFT) - 1));}#endif /* CFN_MAX_PORID > 0 *//* * Check validity of rendezvous number */#define CHECK_RDVNO(rdvno) { \ if ( !CHK_TSKID(knl_get_tskid_rdvno(rdvno)) ) { \ return E_OBJ; \ } \}/* * Definition of rendezvous wait specification */IMPORT WSPEC knl_wspec_cal_tfifo;IMPORT WSPEC knl_wspec_cal_tpri;IMPORT WSPEC knl_wspec_rdv;#endif /* _RENDEZVOUS_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -