td_ref_cyc, td_ref_alm, td_ref_ssy
Reference Queue
ER ercd = td_ref_sem ( ID semid, TD_RSEM rsem ); / semaphore */
ER ercd = td_ref_flg ( ID flgid, TD_RFLG rflg ); / event flag */
ER ercd = td_ref_mbx ( ID mbxid, TD_RMBX rmbx ); / mailbox */
ER ercd = td_ref_mtx ( ID mtxid, TD_RMTX rmtx ); / mutex */
ER ercd = td_ref_mbf ( ID mbfid, TD_RMBF rmbf ); / message buffer */
ER ercd = td_ref_por ( ID porid, TD_RPOR rpor ); / rendezvous port */
ER ercd = td_ref_mpf ( ID mpfid, TD_RMPF rmpf ); / fixed-size memory */
ER ercd = td_ref_mpl ( ID mplid, TD_RMPL rmpl ); / variable-size memo */
ER ercd = td_ref_cyc ( ID cycid, TD_RCYC rcyc ); / cyclic handler */
ER ercd = td_ref_alm ( IDalmid, TD_RALM ralm ); / alarm handler */
ER ercd = td_ref_ssy ( ID ssid, TD_RSSY rssy ); / subsystem pool ry pool */
ID —id Object ID
TD_R— r— Address of status information packet
ER ercd Error code
E_OK Normal completion
E_ID Bad identifier
E_NOEXS Object does not exist
Gets the status of an object. This is similar to tk ref -. The return packets are defined as follows.
/*
*Semaphore status information td_ref_sem
*/
typedef struct td_rsem {
VP exinf; /* extended information */
ID wtsk; /* waiting task ID */
INT semcnt; /* current semaphore count */
} TD_RSEM;
/*
*Event flag status information td_ref_flg
*/
typedef struct td_rflg {
VP exinf; /* extended information */
ID wtsk; /* waiting task ID */
UINT flgptn; /* current event flag pattern */
} TD_RFLG;
/*
*Mailbox status information td_ref_mbx
*/
typedef struct td_rmbx {
VP exinf; /* extended information */
ID wtsk; /* waiting task ID */
T_MSG *pk_msg; /* next message to be received */
} TD_RMBX;
/*
*Mutex status information td_ref_mtx
*/
typedef struct td_rmtx {
VP exinf; /* extended information */
ID bhtsk; /* locking task ID */
ID wtsk; /* ID of task waiting for lock */
} TD_RMTX;
/*
* Message buffer status information td_ref_mbf
*/
typedef struct td_rmbf {
VP exinf; /* extended information */
ID wtsk; /* receive waiting task ID */
ID stsk; /* send waiting task ID */
INT msgsz; /* size (in bytes) of next message to be received */
INT frbufsz; /* free buffer size (in bytes) */
INT maxmsz; /* maximum message length (in bytes) */
} TD_RMBF;
/*
*Rendezvous port status information td_ref_por
*/
typedef struct td_rpor {
VP exinf; /* extended information */
ID wtsk; /* call waiting task ID */
ID atsk; /* acceptance waiting task ID */
INT maxcmsz; /* call message maximum length (in bytes) */
INT maxrmsz; /* accept message maximum length (in bytes) */
} TD_RPOR;
/*
*Fixed-size memory pool status information td_ref_mpf
*/
typedef struct td_rmpf {
VP exinf; /* extended information */
ID wtsk; /* waiting task ID */
INT frbcnt; /* free block count */
} TD_RMPF;
/*
*Variable-size memory pool status information td_ref_mpl
*/
typedef struct td_rmpl {
VP exinf; /* extended information */
ID wtsk; /* waiting task ID */
INT frsz; /* total free space (in bytes) */
INT maxsz; /* maximum contiguous free space (in bytes) */
} TD_RMPL;
/*
*Cyclic handler status information td_ref_cyc
*/
typedef struct td_rcyc {
VP exinf; /* extended information */
RELTIM lfttim; /* time remaining until next handler start */
UINT cycstat; /* cyclic handler status */
} TD_RCYC;
]
/*
*Alarm handler status information td_ref_alm
*/
typedef struct td_ralm {
VP exinf; /* extended information */
RELTIM lfttim; /* time remaining until next handler start */
UINT almstat; /* alarm handler status */
} TD_RALM;
/*
*Subsystem status information td_ref_ssy
*/
typedef struct td_rssy {
PRI ssypri; /* subsystem priority */
INT resblksz; /* resource control block size (in bytes) */
} TD_RSSY;

Comments