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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? semshow.c

?? vxworks的完整的源代碼
?? C
字號(hào):
/* semShow.c - semaphore show routines *//* Copyright 1990-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01q,31oct01,aeg  added display of VxWorks events information.01p,26sep01,jws  move vxMP show & info rtn ptrs to funcBind.c (SPR36055)01o,18dec00,pes  Correct compiler warnings01n,17mar99,jdi  doc: updated w/ info about proj facility (SPR 25727).01m,24jun96,sbs  made windview instrumentation conditionally compiled01l,10oct95,jdi  doc: added .tG Shell to SEE ALSO for semShow().01l,16jan94,c_s  semShowInit () now initializes instrumented class.01k,03feb93,jdi  changed INCLUDE_SHOW_RTNS to ...ROUTINES.01j,02feb93,jdi  documentation tweaks.01i,23nov92,jdi  documentation cleanup.01h,13nov92,dnw  added include of smObjLib.h01g,30jul92,smb  changed format for printf to avoid zero padding.01f,29jul92,pme  added NULL function pointer check for smObj routines.01e,28jul92,jcf  changed semShowInit to call semLibInit.01d,19jul92,pme  added shared memory semaphores support.01c,12jul92,jcf  changed level compare to >=01b,07jul92,ajm  changed semTypeMsg to be static01a,15jun92,jcf  extracted from v1l of semLib.c.*//*DESCRIPTIONThis library provides routines to show semaphore statistics, such assemaphore type, semaphore queuing method, tasks pended, etc.The routine semShowInit() links the semaphore show facility into the VxWorkssystem.  It is called automatically when the semaphore show facility isconfigured into VxWorks using either of the following methods:.iPIf you use the configuration header files, defineINCLUDE_SHOW_ROUTINES in config.h..iPIf you use the Tornado project facility, select INCLUDE_SEM_SHOW..LPINCLUDE FILES: semLib.hSEE ALSO: semLib,.pG "Basic OS"*//* LINTLIBRARY */#include "vxWorks.h"#include "intLib.h"#include "qLib.h"#include "errno.h"#include "stdlib.h"#include "stdarg.h"#include "string.h"#include "stdio.h"#include "smObjLib.h"#include "private/eventLibP.h"#include "private/semLibP.h"#include "private/kernelLibP.h"#include "private/taskLibP.h"#include "private/semSmLibP.h"/* globals *//* locals */LOCAL char * 	semTypeMsg [MAX_SEM_TYPE] =     {    "BINARY", "MUTEX", "COUNTING", "OLD", "\0", "\0", "\0", "\0"    };/******************************************************************************** semShowInit - initialize the semaphore show facility** This routine links the semaphore show facility into the VxWorks system.* It is called automatically when the semaphore 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_SEM_SHOW.** RETURNS: N/A*/void semShowInit (void)    {    if (semLibInit () == OK)	{	classShowConnect (semClassId, (FUNCPTR)semShow);#ifdef WV_INSTRUMENTATION		classShowConnect (semInstClassId, (FUNCPTR)semShow);#endif	}    }/********************************************************************************* semInfo - get a list of task IDs that are blocked on a semaphore** This routine reports the tasks blocked on a specified semaphore.* Up to <maxTasks> task IDs are copied to the array specified by <idList>.* The array is unordered.** WARNING:* There is no guarantee that all listed tasks are still valid or that new* tasks have not been blocked by the time semInfo() returns.** RETURNS: The number of blocked tasks placed in <idList>.*/int semInfo    (    SEM_ID semId,               /* semaphore ID to summarize */    int idList[],               /* array of task IDs to be filled in */    int maxTasks                /* max tasks idList can accommodate */    )    {    int       numBlk;    int       lock;    if (INT_RESTRICT () != OK)			/* restrict ISR use */	return (ERROR);    if (ID_IS_SHARED (semId))           	/* semaphore is shared */        {        if (semSmInfoRtn == NULL)            {            errno = S_smObjLib_NOT_INITIALIZED;            return (ERROR);            }        return ((* semSmInfoRtn) (SM_OBJ_ID_TO_ADRS (semId), idList, maxTasks));	}    lock = intLock ();				/* LOCK INTERRUPTS */    if (OBJ_VERIFY (semId, semClassId) != OK)	{	intUnlock (lock);			/* UNLOCK INTERRUPTS */	return (ERROR);	}    numBlk = Q_INFO (&semId->qHead, idList, maxTasks);    intUnlock (lock);				/* UNLOCK INTERRUPTS */    return (numBlk);				/* return blocked task count */    }/********************************************************************************* semShow - show information about a semaphore** This routine displays the state and optionally the pended tasks of a * semaphore.** A summary of the state of the semaphore is displayed as follows:* .CS*     Semaphore Id        : 0x585f2*     Semaphore Type      : BINARY*     Task Queuing        : PRIORITY*     Pended Tasks        : 1*     State               : EMPTY {Count if COUNTING, Owner if MUTEX}*     Options             : 0x1       SEM_Q_PRIORITY**     VxWorks Events*     --------------*     Registered Task     : 0x594f0 (t1)*     Event(s) to Send    : 0x1*     Options             : 0x7       EVENTS_SEND_ONCE*                                     EVENTS_ALLOW_OVERWRITE*                                     EVENTS_SEND_IF_FREE* .CE** If <level> is 1, then more detailed information will be displayed.* If tasks are blocked on the queue, they are displayed in the order* in which they will unblock, as follows:* .CS*     Pended Tasks*     ------------*        NAME      TID    PRI DELAY*     ---------- -------- --- -----*     tExcTask    3fd678   0    21*     tLogTask    3f8ac0   0   611* .CE** RETURNS: OK or ERROR.** SEE ALSO:* .pG "Target Shell,"* windsh,* .tG "Shell"*/STATUS semShow    (    SEM_ID	semId,		/* semaphore to display */    int		level		/* 0 = summary, 1 = details */    )    {    int		taskIdList [20];    int		taskDList [20];    int	 	numTasks;    WIND_TCB *	pTcb;    char *	qMsg;    int	        ix;    int  	lock;    char	optionsString [128];    EVENTS_RSRC	semEvResource;    if (ID_IS_SHARED (semId))           	/* semaphore is shared */        {        if (semSmShowRtn == NULL)            {            errno = S_smObjLib_NOT_INITIALIZED;            return (ERROR);            }        return ((*semSmShowRtn) ((SM_SEM_ID) SM_OBJ_ID_TO_ADRS (semId), level));	}    lock = intLock ();					/* LOCK INTERRUPTS */    if ((numTasks = semInfo (semId, &taskIdList[0], 20)) == ERROR)	{	intUnlock (lock);				/* UNLOCK INTERRUPTS */	printf ("Invalid semaphore id: %#x\n", (int)semId);	return (ERROR);	}    if (numTasks > 0)					/* record delays */	{	for (ix = 0; ix < min (numTasks, NELEMENTS (taskIdList)); ix++)	    {	    pTcb = (WIND_TCB *)(taskIdList [ix]);	    if (pTcb->status & WIND_DELAY)		taskDList[ix] = Q_KEY (&tickQHead, &pTcb->tickNode, 1);	    else		taskDList[ix] = 0;	    }	}    pTcb          = semId->semOwner;			/* record owner/count */    semEvResource = semId->events;			/* record event info */    intUnlock (lock);					/* UNLOCK INTERRUPTS */    qMsg = ((semId->options & SEM_Q_MASK) == SEM_Q_FIFO) ? "FIFO" : "PRIORITY";    /* show summary information */    printf ("\n");    printf ("%-20s: 0x%-10x\n", "Semaphore Id", (int)semId);    printf ("%-20s: %-10s\n", "Semaphore Type", semTypeMsg[semId->semType]);    printf ("%-20s: %-10s\n", "Task Queuing", qMsg);    printf ("%-20s: %-10d\n", "Pended Tasks", numTasks);    /* start generating semaphore options string */    if ((semId->options & SEM_Q_MASK) == SEM_Q_FIFO)	strcpy (optionsString, "SEM_Q_FIFO\n");    else	strcpy (optionsString, "SEM_Q_PRIORITY\n");    switch (semId->semType)	{	case SEM_TYPE_BINARY:	    if (pTcb != NULL)		printf ("%-20s: %-10s\n", "State", "EMPTY");	    else		printf ("%-20s: %-10s\n", "State", "FULL");	    break;	case SEM_TYPE_COUNTING:	    printf ("%-20s: %-10d\n", "Count", (int)pTcb);	    break;	case SEM_TYPE_MUTEX:	    if (pTcb != NULL)		{		printf ("%-20s: 0x%-10x", "Owner", (int)pTcb);		if (taskIdVerify ((int)pTcb) != OK)		    printf (" Deleted!\n");		else if (pTcb->name != NULL)		    printf (" (%s)\n", pTcb->name);		else		    printf ("\n");		}	    else		printf ("%-20s: %-10s\n", "Owner", "NONE");	    /* continue generating semaphore options string */	    if ((semId->options & SEM_DELETE_SAFE) != 0)		strcat (optionsString, "\t\t\t\tSEM_DELETE_SAFE\n");	    if ((semId->options & SEM_INVERSION_SAFE) != 0)		strcat (optionsString, "\t\t\t\tSEM_INVERSION_SAFE\n");	    break;	default :	    printf ("%-20s: 0x%-10x\n", "State", (int)pTcb);	    break;	}    /* complete generating semaphore options string */    if ((semId->options & SEM_EVENTSEND_ERR_NOTIFY) != 0)	strcat (optionsString, "\t\t\t\tSEM_EVENTSEND_ERR_NOTIFY\n");    printf ("%-20s: 0x%x\t%s", "Options", semId->options, optionsString);    /* display VxWorks events information */    eventRsrcShow (&semEvResource);    if (level >= 1)		 			/* show blocked tasks */	{	if (numTasks > 0)		    {	    printf ("\nPended Tasks\n------------\n"		    "   NAME      TID    PRI TIMEOUT\n"		    "---------- -------- --- -------\n");	    for (ix = 0; ix < min (numTasks, NELEMENTS (taskIdList)); ix++)		printf ("%-11s%8x %3d %7u\n", 			taskName (taskIdList [ix]),			taskIdList [ix],			((WIND_TCB *)taskIdList [ix])->priority,			taskDList[ix]);	    }	}    printf ("\n");    return (OK);    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品99国产精品| 日本一区二区三区久久久久久久久不| 久久97超碰国产精品超碰| 亚洲激情图片小说视频| 国产精品乱码人人做人人爱| 久久久久久一级片| 日韩欧美电影在线| 777色狠狠一区二区三区| 91精品蜜臀在线一区尤物| 91麻豆精品国产自产在线观看一区 | 成人丝袜高跟foot| 国产成人综合在线| 91一区二区在线| 欧美日韩视频专区在线播放| 欧美三级三级三级爽爽爽| 欧美区视频在线观看| 欧美一卡在线观看| 国产日本一区二区| 亚洲免费看黄网站| 日韩电影免费在线| 喷水一区二区三区| 国产精品1区2区3区在线观看| 成人综合在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 在线视频一区二区三区| 91精品国产乱码| 国产目拍亚洲精品99久久精品| **欧美大码日韩| 石原莉奈在线亚洲二区| 国产麻豆视频精品| 色综合久久久久综合| 日韩一区二区在线播放| 国产精品素人视频| 午夜精品影院在线观看| 国产福利一区二区三区| 在线这里只有精品| 欧美大度的电影原声| 亚洲色图在线视频| 久久av老司机精品网站导航| 91网站黄www| 精品国产髙清在线看国产毛片| 欧美国产成人精品| 日韩av在线播放中文字幕| 欧美又粗又大又爽| 91精品国产综合久久精品性色 | 国产精品情趣视频| 亚洲第一福利视频在线| 国产69精品一区二区亚洲孕妇| 91丨porny丨国产| 2017欧美狠狠色| 亚洲h动漫在线| 97久久超碰国产精品| 久久影院视频免费| 午夜精品久久久久久久99水蜜桃| 成人黄色av电影| 精品国产乱码久久久久久夜甘婷婷| 国产精品二三区| 国产成人高清视频| 久久综合狠狠综合久久综合88 | 91首页免费视频| 久久久精品影视| 亚洲午夜久久久久久久久电影院| 日韩一区二区三区电影在线观看 | 香蕉久久一区二区不卡无毒影院| 国产精品1区2区3区| 日韩视频在线永久播放| 亚洲mv在线观看| 欧美在线影院一区二区| 中文字幕日韩一区二区| 成人小视频免费在线观看| 精品区一区二区| 免费成人深夜小野草| 欧美疯狂做受xxxx富婆| 亚洲国产中文字幕| 在线观看三级视频欧美| 一区二区三区在线观看动漫| 色偷偷成人一区二区三区91| 亚洲欧洲无码一区二区三区| 国产成人免费视频精品含羞草妖精 | 麻豆精品精品国产自在97香蕉| 欧美日韩在线播放三区| 亚洲成av人影院在线观看网| 在线视频一区二区三区| 亚洲18影院在线观看| 欧美视频中文字幕| 天天综合色天天| 欧美一级精品在线| 精品一区二区三区蜜桃| 久久夜色精品国产欧美乱极品| 国内精品伊人久久久久av影院| 国产精品大尺度| 在线精品视频免费播放| 亚洲成人在线免费| 精品国产伦一区二区三区观看体验| 国产综合色在线视频区| 中文字幕第一区二区| 99久久精品99国产精品| 亚洲一区二区三区美女| 日韩午夜激情免费电影| 国产九色精品成人porny| 国产亚洲一区二区三区在线观看| 国产精品99精品久久免费| 1024精品合集| 91精品国产品国语在线不卡| 国产精品夜夜嗨| 亚洲免费高清视频在线| 5月丁香婷婷综合| 国产成人av一区| 亚洲一区二区视频在线| 精品久久久久久久人人人人传媒| 成人av综合一区| 一级中文字幕一区二区| 337p粉嫩大胆色噜噜噜噜亚洲| 99久久精品免费看国产| 日本成人在线不卡视频| 日本一二三四高清不卡| 欧美精品一二三区| 成人动漫av在线| 免费观看在线色综合| 亚洲天堂网中文字| 久久蜜桃av一区二区天堂| 91精品福利在线| 国产精品18久久久| 日本免费新一区视频| 亚洲视频中文字幕| 久久久久久9999| 56国语精品自产拍在线观看| 色综合久久久久| 国产91综合网| 黄页网站大全一区二区| 亚洲国产成人精品视频| 国产精品动漫网站| 久久精品日产第一区二区三区高清版| 欧美日韩一区成人| 99re这里只有精品视频首页| 狠狠色综合播放一区二区| 午夜视黄欧洲亚洲| 亚洲日本在线天堂| 精品美女被调教视频大全网站| 一本到高清视频免费精品| 国产乱码精品一区二区三区忘忧草 | 国产午夜久久久久| 精品女同一区二区| 日韩欧美一二三| 6080yy午夜一二三区久久| 欧美日韩精品三区| 欧美主播一区二区三区美女| 91蜜桃婷婷狠狠久久综合9色| 国产精品一区二区视频| 国产一区二区三区久久久| 青青青爽久久午夜综合久久午夜| 亚洲国产一区二区三区| 一级日本不卡的影视| 一区二区三区不卡视频在线观看 | 日韩黄色免费电影| 一区二区三区精品视频在线| 伊人性伊人情综合网| 日韩电影在线免费观看| 蜜桃久久av一区| 美国十次了思思久久精品导航| 青青草国产精品97视觉盛宴| 美女一区二区在线观看| 日本欧美一区二区三区乱码 | 日韩视频免费直播| 欧美一区二区三区播放老司机| 欧美一卡2卡三卡4卡5免费| 日本高清免费不卡视频| www.亚洲在线| 在线观看不卡一区| 欧美精品电影在线播放| 欧美一级生活片| 久久中文字幕电影| 国产精品国产三级国产普通话99| 综合分类小说区另类春色亚洲小说欧美| 国产精品国产三级国产aⅴ原创 | 精品国产网站在线观看| 久久亚洲综合色一区二区三区| 国产精品午夜在线观看| 亚洲日本在线视频观看| 亚洲成人免费电影| 九色综合狠狠综合久久| 成人久久久精品乱码一区二区三区| 色综合天天综合色综合av| 欧美人妇做爰xxxⅹ性高电影 | 最新久久zyz资源站| 亚洲综合小说图片| 久草中文综合在线| 99re在线视频这里只有精品| 91 com成人网| 亚洲国产精华液网站w| 亚洲国产毛片aaaaa无费看 | 色综合咪咪久久| 日韩欧美一二区| 亚洲精品国产品国语在线app| 日日欢夜夜爽一区| av激情亚洲男人天堂| 欧美一区二区三区免费在线看| 国产精品久久久久影院老司| 天天色天天操综合| 99久久久无码国产精品|