亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? msgqshow.c

?? vxwork源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* msgQShow.c - message queue show routines *//* Copyright 1990-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01v,06nov01,aeg  added display of VxWorks event information.01u,26sep01,jws  move vxMP and vxFusion show & info rtn ptrs                 to funcBind.c (SPR36055)01t,18dec00,pes  Correct compiler warnings01s,17mar99,jdi  doc: updated w/ info about proj facility (SPR 25727).01r,19may98,drm  merged code from 3rd party to add distributed message queue                  support  - merged code was originally based on version 01o 01q,17apr98,rlp  canceled msgQShow and msgQInfoGet modifications for backward                 compatibility.01p,04nov97,rlp  modified msgQShow and msgQInfoGet for tracking messages sent.01o,24jun96,sbs  made windview instrumentation conditionally compiled01n,10oct95,jdi  doc: added .tG Shell to SEE ALSO for msgQShow().01m,20may94,dvs  added level check for task delay list in msgQShow() (SPR 2966)01m,16jan94,c_s  msgQShowInit () now initializes instrumented class.01l,03feb93,jdi  changed INCLUDE_SHOW_RTNS to ...ROUTINES.01k,02feb93,jdi  another doc tweak.01j,02feb93,jdi  documentation tweaks.01i,23nov92,jdi  documentation cleanup.01h,13nov92,dnw  added include of smObjLib.h01g,17sep92,pme  made msgQInfoGet() handle shared message Queue.01f,30jul92,smb  changed format for printf to avoid zero padding.01e,29jul92,pme  added NULL function pointer check for smObj routines.01d,28jul92,jcf  changed msgQShowInit to call msgQLibInit.01c,19jul92,pme  added shared message queue support.                 added #include "errnoLib.h".01b,12jul92,jcf  changed level compare to >=01a,15jun92,jcf  extracted from v1l of msgQLib.c.*//*DESCRIPTIONThis library provides routines to show message queue statistics,such as the task queuing method, messages queued, receivers blocked, etc.The routine msgQshowInit() links the message queue show facility into theVxWorks system.  It is called automatically when the message queue showfacility is configured into VxWorks using either of thefollowing methods:.iPIf you use the configuration header files, defineINCLUDE_SHOW_ROUTINES in config.h..iPIf you use the Tornado project facility, select INCLUDE_MSG_Q_SHOW..LPINCLUDE FILES: msgQLib.hSEE ALSO: pipeDrv,.pG "Basic OS"*//* LINTLIBRARY */#include "vxWorks.h"#include "errnoLib.h"#include "intLib.h"#include "stdlib.h"#include "stdarg.h"#include "string.h"#include "stdio.h"#include "smObjLib.h"#include "private/msgQLibP.h"#include "private/kernelLibP.h"#include "private/taskLibP.h"#include "private/msgQSmLibP.h"#include "private/distObjTypeP.h"#include "private/eventLibP.h"#include "vxfusion/private/msgQDistLibP.h"/* globals *//* forward declarations */static BOOL msgQInfoEach (MSG_NODE *pNode, MSG_Q_INFO *pInfo);/******************************************************************************** msgQShowInit - initialize the message queue show facility** This routine links the message queue show facility into the VxWorks system.* It is called automatically when the message queue show facility is* configured into VxWorks using either of the following methods:* .iP* If you use the configuration header files, define* INCLUDE_SHOW_ROUTINES in config.h.* .iP* If you use the Tornado project facility, select INCLUDE_MSG_Q_SHOW.** RETURNS: N/A*/void msgQShowInit (void)    {    if (msgQLibInit () == OK)	{        classShowConnect (msgQClassId, (FUNCPTR)msgQShow);#ifdef WV_INSTRUMENTATION	classShowConnect (msgQInstClassId, (FUNCPTR)msgQShow);#endif	}    }/********************************************************************************* msgQInfoEach - support routine for msgQInfoGet** RETURNS: TRUE or FALSE*/LOCAL BOOL msgQInfoEach    (    MSG_NODE *          pNode,    MSG_Q_INFO *        pInfo    )    {    if (pInfo->msgPtrList != NULL)	pInfo->msgPtrList [pInfo->numMsgs] = MSG_NODE_DATA (pNode);    if (pInfo->msgLenList != NULL)	pInfo->msgLenList [pInfo->numMsgs] = pNode->msgLength;    /* bump list count and signal quit (return FALSE) if we're at max */    return (++pInfo->numMsgs < pInfo->msgListMax);    }/********************************************************************************* msgQInfoGet - get information about a message queue** This routine gets information about the state and contents of a message* queue.  The parameter <pInfo> is a pointer to a structure of type MSG_Q_INFO* defined in msgQLib.h as follows:** .CS*  typedef struct		/@ MSG_Q_INFO @/*     {*     int     numMsgs;		/@ OUT: number of messages queued            @/*     int     numTasks;		/@ OUT: number of tasks waiting on msg q     @/*     int     sendTimeouts;	/@ OUT: count of send timeouts               @/*     int     recvTimeouts;	/@ OUT: count of receive timeouts            @/*     int     options;		/@ OUT: options with which msg q was created @/*     int     maxMsgs;		/@ OUT: max messages that can be queued      @/*     int     maxMsgLength;	/@ OUT: max byte length of each message      @/*     int     taskIdListMax;	/@ IN: max tasks to fill in taskIdList       @/*     int *   taskIdList;	/@ PTR: array of task IDs waiting on msg q   @/*     int     msgListMax;	/@ IN: max msgs to fill in msg lists         @/*     char ** msgPtrList;	/@ PTR: array of msg ptrs queued to msg q    @/*     int *   msgLenList;	/@ PTR: array of lengths of msgs             @/*     } MSG_Q_INFO;* .CE** If a message queue is empty, there may be tasks blocked on receiving.* If a message queue is full, there may be tasks blocked on sending.* This can be determined as follows:* .iP "" 4* If <numMsgs> is 0, then <numTasks> indicates the number of tasks blocked* on receiving.* .iP* If <numMsgs> is equal to <maxMsgs>, then <numTasks> is the number of* tasks blocked on sending.* .iP* If <numMsgs> is greater than 0 but less than <maxMsgs>, then <numTasks> * will be 0.* .LP** A list of pointers to the messages queued and their lengths can be* obtained by setting <msgPtrList> and <msgLenList> to the addresses of* arrays to receive the respective lists, and setting <msgListMax> to* the maximum number of elements in those arrays.  If either list pointer* is NULL, no data will be returned for that array.** No more than <msgListMax> message pointers and lengths are returned,* although <numMsgs> will always be returned with the actual number of messages* queued.** For example, if the caller supplies a <msgPtrList> and <msgLenList>* with room for 10 messages and sets <msgListMax> to 10, but there are 20* messages queued, then the pointers and lengths of the first 10 messages in* the queue are returned in <msgPtrList> and <msgLenList>, but <numMsgs> will* be returned with the value 20.** A list of the task IDs of tasks blocked on the message queue can be obtained* by setting <taskIdList> to the address of an array to receive the list, and* setting <taskIdListMax> to the maximum number of elements in that array.* If <taskIdList> is NULL, then no task IDs are returned.  No more than* <taskIdListMax> task IDs are returned, although <numTasks> will always* be returned with the actual number of tasks blocked.** For example, if the caller supplies a <taskIdList> with room for 10 task IDs* and sets <taskIdListMax> to 10, but there are 20 tasks blocked on the* message queue, then the IDs of the first 10 tasks in the blocked queue* will be returned in <taskIdList>, but <numTasks> will be returned with* the value 20.** Note that the tasks returned in <taskIdList> may be blocked for either send* or receive.  As noted above this can be determined by examining <numMsgs>.** The variables <sendTimeouts> and <recvTimeouts> are the counts of the number* of times msgQSend() and msgQReceive() respectively returned with a timeout.** The variables <options>, <maxMsgs>, and <maxMsgLength> are the parameters* with which the message queue was created.** WARNING* The information returned by this routine is not static and may be* obsolete by the time it is examined.  In particular, the lists of* task IDs and/or message pointers may no longer be valid.  However,* the information is obtained atomically, thus it will be an accurate* snapshot of the state of the message queue at the time of the call.* This information is generally used for debugging purposes only.** WARNING* The current implementation of this routine locks out interrupts while* obtaining the information.  This can compromise the overall interrupt* latency of the system.  Generally this routine is used for debugging* purposes only.** RETURNS: OK or ERROR.** ERRNO: S_distLib_NOT_INITIALIZED, S_smObjLib_NOT_INITIALIZED,*        S_objLib_OBJ_ID_ERROR**/STATUS msgQInfoGet    (    MSG_Q_ID       msgQId,         /* message queue to query */    MSG_Q_INFO *   pInfo           /* where to return msg info */    )    {    int		level;    Q_HEAD *	pendQ;    if (ID_IS_SHARED (msgQId))			/* shared message Q */        {		if (ID_IS_DISTRIBUTED (msgQId))     /* distributed message Q */			{			if (msgQDistInfoGetRtn == NULL)				{				errno = S_distLib_NOT_INITIALIZED;				return (ERROR);				}			return ((*msgQDistInfoGetRtn) (msgQId, pInfo));			}        if (msgQSmInfoGetRtn == NULL)            {            errno = S_smObjLib_NOT_INITIALIZED;            return (ERROR);            }	return ((*msgQSmInfoGetRtn) (SM_OBJ_ID_TO_ADRS (msgQId), pInfo));	}    /* message queue is local */    level = intLock ();				/* LOCK INTERRUPTS */    if (OBJ_VERIFY (msgQId, msgQClassId) != OK)	{	intUnlock (level);			/* UNLOCK INTERRUPTS */	return (ERROR);	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利电影一区二区三区| 午夜精品影院在线观看| 欧美精品日韩精品| 国产精品亚洲一区二区三区妖精 | 欧美日免费三级在线| 国产一区二区网址| 天天综合天天综合色| 亚洲色图欧洲色图婷婷| 国产无一区二区| 日韩精品一区二区三区中文精品| 在线一区二区三区做爰视频网站| 不卡视频免费播放| 国产一区二区三区免费播放| 日韩国产在线一| 亚洲地区一二三色| 亚洲欧洲99久久| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲欧美色一区| 亚洲另类在线制服丝袜| 亚洲小少妇裸体bbw| 亚洲最新视频在线观看| 亚洲激情网站免费观看| 亚洲综合在线电影| 午夜精品视频在线观看| 午夜视频一区二区| 日本人妖一区二区| 久久草av在线| 色呦呦国产精品| 欧美亚男人的天堂| 88在线观看91蜜桃国自产| 欧美老年两性高潮| 欧美一二三区在线| 中文成人av在线| 亚洲激情网站免费观看| 日韩国产精品久久久| 精一区二区三区| 91丨九色porny丨蝌蚪| 欧美午夜免费电影| 久久久亚洲精华液精华液精华液| 久久人人爽人人爽| 怡红院av一区二区三区| 五月激情六月综合| 国产麻豆视频一区二区| 福利91精品一区二区三区| 欧美在线短视频| 精品av久久707| 亚洲人亚洲人成电影网站色| 免费观看在线色综合| av亚洲精华国产精华| 欧美一级免费大片| 亚洲福利视频一区二区| 国产成人综合在线观看| 51精品视频一区二区三区| 亚洲精品国产视频| 99热在这里有精品免费| 日韩一级完整毛片| 亚洲国产va精品久久久不卡综合| 国产成人在线观看免费网站| 欧美一区二区三区四区视频| 亚洲妇熟xx妇色黄| 99re这里只有精品首页| 国产女人aaa级久久久级| 国产伦精品一区二区三区免费迷| 精品欧美一区二区在线观看| 三级亚洲高清视频| 91麻豆精品国产91久久久久久| 亚洲不卡av一区二区三区| 欧美三级视频在线观看| 日日摸夜夜添夜夜添国产精品| 欧美色区777第一页| 午夜免费久久看| 欧美一区二区三区啪啪| 久久精品国产亚洲一区二区三区| 91精品国产综合久久精品| 亚洲mv大片欧洲mv大片精品| 欧美日韩免费电影| 日韩国产精品91| 成人国产精品免费观看| 91精品国产乱| 精品一区二区三区不卡| 国产精品网站在线观看| av影院午夜一区| 首页国产欧美久久| 久久亚洲精精品中文字幕早川悠里| 丁香五精品蜜臀久久久久99网站 | 69堂国产成人免费视频| 国产成人在线视频网址| 亚洲视频你懂的| 日韩精品一区二区在线观看| 丰满少妇久久久久久久 | 一二三四社区欧美黄| 久久久精品tv| 欧美日韩一区二区三区高清| 国产精品91一区二区| 一区二区三区视频在线看| 久久久久久97三级| 91精品久久久久久久久99蜜臂| www.色综合.com| 国内外成人在线| 日精品一区二区| 亚洲一区国产视频| 国产精品进线69影院| 日韩视频在线你懂得| 欧美中文字幕一区| 成人黄色一级视频| 免费欧美日韩国产三级电影| 一区二区三区免费网站| 国产精品嫩草影院av蜜臀| 久久综合狠狠综合久久激情| 欧美日韩第一区日日骚| 在线精品视频免费播放| 成人免费观看av| 岛国精品在线播放| 日韩欧美一区二区视频| 91亚洲国产成人精品一区二区三 | 91麻豆国产福利在线观看| 国产在线精品一区二区三区不卡| 午夜一区二区三区在线观看| 亚洲另类春色校园小说| 国产欧美综合在线| 国产日韩欧美制服另类| 久久五月婷婷丁香社区| 国产欧美精品区一区二区三区| 国产午夜精品一区二区三区四区| 久久久久久9999| 中文字幕人成不卡一区| 国产精品久久久久久久蜜臀| 亚洲欧洲国产专区| 亚洲一区二区三区四区在线观看 | 日韩一级高清毛片| 国产精品丝袜91| 久久精品国产亚洲a| 成人av网站在线观看| 欧美视频精品在线观看| 久久精品一区二区三区不卡牛牛| 国产亚洲一二三区| 一区二区三区四区蜜桃| 男男成人高潮片免费网站| jizzjizzjizz欧美| 91精品免费在线| 国产喷白浆一区二区三区| 日本中文字幕不卡| 色先锋aa成人| 日本一区免费视频| 日韩精品视频网站| 成人高清视频在线观看| 欧美一级高清大全免费观看| 亚洲三级理论片| 国产精品一区久久久久| 欧美精选午夜久久久乱码6080| 一区视频在线播放| 欧美日本国产一区| 亚洲欧洲国产日本综合| 国产美女在线观看一区| 欧美一级片在线看| 亚洲综合免费观看高清完整版| 99久久婷婷国产精品综合| 久久―日本道色综合久久| 麻豆成人久久精品二区三区红 | 国产精品国产精品国产专区不蜜 | 26uuu亚洲| 国产一区二区三区国产| 97精品国产露脸对白| 欧美不卡激情三级在线观看| 日本中文字幕一区二区视频| 国产蜜臀av在线一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲你懂的在线视频| 99久久综合狠狠综合久久| 国产欧美日韩视频在线观看| 国产乱子伦一区二区三区国色天香| 日韩精品一区二区三区在线观看| 日韩制服丝袜av| 日韩视频一区二区三区在线播放| 美日韩黄色大片| 久久精品夜夜夜夜久久| 国产精品资源在线看| 国产日产欧美精品一区二区三区| 国产v综合v亚洲欧| 国产精品电影一区二区| 在线观看欧美日本| 亚洲一区在线观看免费观看电影高清| 91成人免费网站| 午夜精品福利一区二区三区蜜桃| 日韩一区二区在线看片| 国产丶欧美丶日本不卡视频| 国产精品乱码人人做人人爱 | 久久精品水蜜桃av综合天堂| 老司机午夜精品| 久久精品视频一区| 91精品福利视频| 国产原创一区二区三区| 国产精品乱码久久久久久| 这里只有精品视频在线观看| 粉嫩在线一区二区三区视频| 日韩avvvv在线播放| 国产精品成人一区二区艾草| 7777精品伊人久久久大香线蕉完整版| 懂色av一区二区三区免费观看| 亚洲午夜电影在线|