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

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

?? semsmshow.c

?? vxworks的完整的源代碼
?? C
字號:
/* semSmShow.c - shared memory semaphore show utility (VxMP Option) *//* Copyright 1984-2002 Wind River Systems, Inc. *//*modification history--------------------01j,06may02,mas  cache flush and volatile fix (SPR 68334); bridge flush fix		 (SPR 68844)01i,24oct01,mas  doc update (SPR 71149)01h,03feb93,jdi  changed INCLUDE_SHOW_RTNS to ...ROUTINES.01g,29jan93,pme  added little endian support.01f,13nov92,dnw  added include of private/smObjLibP.h01e,02oct92,pme  added SPARC support. documentation cleanup.01d,29sep92,pme  fixed WARNING in printf calls.01c,29jul92,pme  changed module name to semSmShow in first line.01b,28jul92,jcf  changed semSmShowInit to call semLibInit.01a,19jul92,pme  written.*//*DESCRIPTIONThis library provides routines to show shared semaphore statistics, such assemaphore type, semaphore queueing method, tasks pended, and so forth.These routines are included automatically when the component INCLUDE_SM_OBJis included.There are no user callable routines.AVAILABILITYThis module is distributed as a component of the unbundled shared memorysupport option, VxMP.INCLUDE FILE: semSmLib.hSEE ALSO: semLib, semSmLib, smObjLib,\tb VxWorks Programmer's Guide: Shared Memory Objects,\tb VxWorks Programmer's Guide: Basic OSNOROUTINES*//* LINTLIBRARY */#include "vxWorks.h"#include "errno.h"#include "qFifoGLib.h"#include "smObjLib.h"#include "smMemLib.h"#include "semLib.h"#include "stdlib.h"#include "stdio.h"#include "string.h"#include "taskLib.h"#include "cacheLib.h"#include "intLib.h"#include "netinet/in.h"#include "private/semSmLibP.h"#include "private/smObjLibP.h"#include "private/windLibP.h"/******************************************************************************* semSmShowInit - initialize shared semaphores show routine** This routine links the shared memory semaphores show routine into the* VxWorks system.** RETURNS: N/A** NOMANUAL*/void semSmShowInit (void)    {    if (semLibInit () == OK)	{	/* 	 * Initialize info and show routine pointer to allow semShow and 	 * semInfo to handle shared semaphores ids.	 */	semSmShowRtn = (FUNCPTR) semSmShow;	semSmInfoRtn = (FUNCPTR) semSmInfo;	}    }/******************************************************************************* semSmInfo - get list of shared TCB that are blocked on shared semaphore** This routine reports the shared task control block of tasks that are* blocked on a specified shared semaphore.* Up to <maxTasks> shared TCBs are copied to the array specified by <idList>.* The array is unordered.** WARNING:* There is no guarantee that all the tasks are still valid or that no new* tasks have blocked by the time semSmInfo() returns.* This routines locks interrupts while getting the list of pended* tasks thus increasing local CPU interupt latency.* This routine must be used for debug purpose only.** RETURNS: The number of blocked tasks placed in <idList>.** ERRNO: S_smObjLib_LOCK_TIMEOUT* * SEE ALSO: semSmShow** NOMANUAL*/int semSmInfo    (    SM_SEM_ID smSemId,          /* shared semaphore to summarize */    int idList[],               /* array of shared tcb to be filled in */    int maxTasks                /* max tasks idList can accommodate */    )    {    Q_FIFO_G_HEAD      pendQ;   /* temporary queue to get info */    int                numBlk;	/* current number of blocked tasks */    int                level;	    SM_SEM_ID volatile smSemIdv = (SM_SEM_ID volatile) smSemId;    int                tmp;    kernelState = TRUE;                         /* KERNEL ENTER */    CACHE_PIPE_FLUSH ();                        /* CACHE FLUSH   [SPR 68334] */    tmp = smSemIdv->verify;                     /* PCI bridge bug [SPR 68844]*/    if (SM_OBJ_VERIFY (smSemIdv) != OK)		/* check semaphore */        {        windExit ();                            /* KERNEL EXIT */        return (ERROR);        }    /* ENTER LOCKED SECTION */    if (SM_OBJ_LOCK_TAKE (&smSemId->lock, &level) != OK)        {        smObjTimeoutLogMsg ("semInfo", (char *) &smSemId->lock);        return (ERROR);                         /* can't take lock */        }    /* initialize pseudo multi-way Queue */    pendQ.pLock   = NULL;                       /* we already have the lock */    pendQ.pFifoQ  = &smSemId->smPendQ;          /* address of actual queue */    pendQ.pQClass = qFifoGClassId;              /* global fifo multi way Q */    numBlk = Q_INFO (&pendQ, idList, maxTasks);    /* EXIT LOCKED SECTION */    SM_OBJ_LOCK_GIVE (&smSemId->lock, level);    windExit ();                                /* KERNEL EXIT */    return (numBlk);                            /* return blocked task count */    }/******************************************************************************* semSmShow - displays list of task blocked on a shared semaphore** This routine displays the task IDs and CPU number of tasks* blocked on a specified shared binary or counting semaphore.** WARNING:* There is no guarantee that all the tasks are still valid or that no new* tasks have blocked by the time semSmShow() returns.* Interrupts are locked while getting the list of tasks pending* on the shared semaphore.** Informations will be displayed as follows:* * \cs** Semaphore Id        : 0x585f2* Semaphore Type      : SHARED BINARY* Task Queuing        : PRIORITY* Pended Tasks        : 1* State               : EMPTY {Count if COUNTING}** \ce** If <level> is 1, then more detailed information will be displayed.* If tasks are blocked on the queue, they will be displayed in the order* they will unblock as follows:** \cs**    TID     CPU number shared TCB* ---------- ---------- ----------* 0xc7854        0      0xaa580* 0x97028        0      0xaa59c* 0x920a8        0      0xaa5b8* 0x8d128        0      0xaa5d4** value = 4 = 0x4** \ce** RETURNS: The number of blocked tasks, or ERROR if semaphore is not shared.** SEE ALSO: semSmInfoGet* * NOMANUAL*/int semSmShow     (    SM_SEM_ID smSemId,	/* shared semaphore to display info on */    int       level	/* 0 = summary, 1 = details */    )    {    SM_OBJ_TCB *       pSmObjTcb;      /* shared tcb */    int *              smObjTcbList;   /* shared tcb list */    int *              pList;          /* shared tcb list pointer */    int                numTasks;       /* current # of blocked tasks */    int                ix;    int                maxTasks = 100; /* absolute max# of tasks displayed */    SM_SEM_ID volatile smSemIdv = (SM_SEM_ID volatile) smSemId;    int                tmp;    char *             semTypeMsg [MAX_SEM_TYPE] =        {        "BINARY", "MUTEX", "COUNTING", "OLD",	"SHARED BINARY", "SHARED COUNTING", "\0", "\0"        };    CACHE_PIPE_FLUSH ();                        /* CACHE FLUSH   [SPR 68334] */    tmp = smSemIdv->verify;                     /* PCI bridge bug [SPR 68844]*/    if (SM_OBJ_VERIFY (smSemIdv) != OK)          /* check semaphore */        {        return (ERROR);        }    /* allocate shared tcb list */    smObjTcbList = (int *) malloc (maxTasks * sizeof (int));    if (smObjTcbList == NULL)        {	return (ERROR);        }    /* get list of shared TCBs blocked on smSemId */    numTasks = semSmInfo (smSemId, smObjTcbList, maxTasks);    if (numTasks == ERROR)	{	free (smObjTcbList);	return (ERROR);	}    /* show summary information */    printf ("\n");    printf ("%-20s: 0x%-10x\n", "Semaphore Id", SM_OBJ_ADRS_TO_ID (smSemId));    printf ("%-20s: %-10s\n", "Semaphore Type", 	    semTypeMsg[ntohl (smSemId->objType)]);    printf ("%-20s: %-10s\n", "Task Queuing", "FIFO");    printf ("%-20s: %-10d\n", "Pended Tasks", numTasks);    switch (ntohl (smSemId->objType))        {        case SEM_TYPE_SM_BINARY:            if (smSemId->state.flag == htonl (SEM_EMPTY))                {                printf ("%-20s: %-10s\n", "State", "EMPTY");                }            else                {                printf ("%-20s: %-10s\n", "State", "FULL");                }            break;        case SEM_TYPE_SM_COUNTING:            printf ("%-20s: %-10d\n", "Count", ntohl (smSemId->state.count));            break;	default :	    break;	}    if (level == 0)		/* no more info required */  	{	free (smObjTcbList);	return (numTasks);	}    /* print list of TCB and CPU number if required */    if (numTasks == 0)	{	free (smObjTcbList);	printf ("\nNo Pended Task.\n\n");	return (numTasks);	}    printf ("\n");    printf ("   TID     CPU Number Shared TCB\n");    printf ("---------- ---------- ----------\n");    pList = smObjTcbList; 			/* go to first shared TCB */    for (ix = 0; ix < numTasks; ix++)	{        pSmObjTcb = (SM_OBJ_TCB *) *pList;	/* get shared TCB */	printf ("%#-10x    %2d      %#-10x\n", ntohl ((int)pSmObjTcb->localTcb),		ntohl (pSmObjTcb->ownerCpu), (int) pSmObjTcb);	pList++;				/* go to next shared TCB */	}        printf ("\n");    free (smObjTcbList);    return (numTasks);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成在人线在线播放| 亚洲自拍欧美精品| 3atv一区二区三区| 99re免费视频精品全部| 99在线精品一区二区三区| 国产成人在线看| 高清国产一区二区| 99视频热这里只有精品免费| 99久免费精品视频在线观看| 成人免费毛片嘿嘿连载视频| 国产成人免费视频 | 91在线视频观看| 国产99一区视频免费| 丁香婷婷综合五月| 波多野结衣精品在线| 9久草视频在线视频精品| www.爱久久.com| jizz一区二区| 91精品福利视频| 欧美精品123区| 精品国产电影一区二区| 国产婷婷一区二区| 中文字幕视频一区二区三区久| 亚洲婷婷综合色高清在线| 亚洲欧美一区二区三区国产精品| 久久国产婷婷国产香蕉| 91丝袜高跟美女视频| 99久久99久久久精品齐齐| 一本色道亚洲精品aⅴ| 在线一区二区观看| 日韩欧美一卡二卡| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲人成网站在线| 天涯成人国产亚洲精品一区av| 免费观看在线综合| 国产精品77777| 在线观看一区日韩| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 国产99久久久久| 欧美在线小视频| 久久蜜桃av一区二区天堂| 亚洲女同一区二区| 日本网站在线观看一区二区三区| 成人一级片网址| 91精品国产日韩91久久久久久| 亚洲国产精品传媒在线观看| 午夜精品久久久久久久久久| 成人av电影在线观看| 91精品国产美女浴室洗澡无遮挡| 国产亚洲欧美日韩俺去了| 一区二区三区不卡视频在线观看| 日韩激情一二三区| 丁香婷婷综合色啪| 欧美日韩免费电影| 欧美猛男男办公室激情| 久久精品欧美一区二区三区麻豆| 亚洲精品国产精华液| 精品一区二区影视| 在线一区二区三区做爰视频网站| www激情久久| 亚洲图片欧美色图| 日韩av一区二区在线影视| 国产v综合v亚洲欧| 欧美一区二区视频在线观看2022| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲h在线观看| 丰满白嫩尤物一区二区| 欧美一区二区视频观看视频| 国产精品成人在线观看| 另类调教123区| 欧美性生活影院| 国产精品人成在线观看免费| 国产午夜精品一区二区三区嫩草| 全部av―极品视觉盛宴亚洲| 91九色最新地址| 成人免费小视频| 国产黄人亚洲片| 欧美一区二区三区免费视频 | 欧美不卡在线视频| 亚洲成va人在线观看| 不卡视频一二三四| 久久精品在这里| 国产一区二区三区综合| 欧美一区二区精美| 午夜av电影一区| 国产综合久久久久久鬼色 | 99九九99九九九视频精品| 日韩欧美在线网站| 日韩国产欧美在线播放| 欧美无砖砖区免费| 国产精品美女久久久久久久久久久| 国产精品自在欧美一区| 久久亚洲欧美国产精品乐播| 国产资源精品在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 三级影片在线观看欧美日韩一区二区 | 国产精品久久久久7777按摩| 国产91精品一区二区麻豆网站 | 欧美久久久久免费| 午夜欧美视频在线观看| 色综合久久中文综合久久97| 一区二区三区欧美视频| 91福利小视频| 亚洲成人av中文| 日韩一区二区三区三四区视频在线观看 | 午夜精品久久久久久久蜜桃app| 成人在线综合网站| 国产精品美女一区二区| 色网站国产精品| 视频一区二区三区在线| 91碰在线视频| 亚洲欧洲另类国产综合| 欧美综合在线视频| 日韩成人dvd| 久久先锋影音av鲁色资源网| 高清beeg欧美| 亚洲综合视频网| 欧美一区二区在线免费观看| 久久久精品国产免大香伊| 国产亚洲午夜高清国产拍精品| 日韩黄色免费电影| www国产亚洲精品久久麻豆| 成人国产精品免费网站| 久久精品人人爽人人爽| 国产在线观看一区二区| 久久久五月婷婷| 99精品欧美一区二区三区综合在线| 亚洲色图欧洲色图| 91麻豆精品国产91久久久 | 欧美三级欧美一级| 成人欧美一区二区三区1314| 欧美人与禽zozo性伦| 老色鬼精品视频在线观看播放| 中国色在线观看另类| 欧美三级午夜理伦三级中视频| 国内久久精品视频| 亚洲在线成人精品| 国产电影精品久久禁18| 久久午夜色播影院免费高清| 国产成人啪免费观看软件| 日韩欧美一级片| 91一区二区三区在线观看| 天天综合色天天综合| 久久婷婷久久一区二区三区| 精品视频在线视频| 国产成人在线影院| 另类的小说在线视频另类成人小视频在线| 久久亚洲精品国产精品紫薇| 欧美日韩国产美女| 狠狠色伊人亚洲综合成人| 亚洲免费观看高清完整版在线| 精品久久人人做人人爱| 欧美视频一区在线| 成人av影视在线观看| 久久99精品一区二区三区三区| 亚洲女同女同女同女同女同69| 国产亚洲欧美激情| 日韩午夜激情视频| 欧美三级电影在线看| 日本女人一区二区三区| 午夜精品福利视频网站| 欧美大片日本大片免费观看| 91免费观看视频在线| 国产成人综合视频| 国产精品123| 狠狠色伊人亚洲综合成人| 美腿丝袜亚洲一区| 日日夜夜精品免费视频| 亚洲午夜电影在线观看| 亚洲欧美乱综合| 日韩一区在线播放| 亚洲欧洲av在线| 国产精品免费丝袜| 欧美一区二区国产| 久久久91精品国产一区二区精品 | 国产黄色成人av| 国内外成人在线| 国产精品一区二区在线观看不卡 | 这里只有精品99re| 欧美在线制服丝袜| 欧美日韩午夜在线| 欧美麻豆精品久久久久久| 91精品国产福利| 欧美一级xxx| 欧美剧情片在线观看| 在线日韩一区二区| 不卡视频在线观看| 欧美系列一区二区| 91精品国产综合久久香蕉的特点| 欧美乱熟臀69xxxxxx| 日韩欧美国产三级| 欧美日韩激情一区二区| 欧美挠脚心视频网站| ww亚洲ww在线观看国产| 中文字幕第一区综合| 亚洲免费伊人电影| 蜜桃视频一区二区三区在线观看| 国产精品主播直播| 中文在线资源观看网站视频免费不卡| 99r精品视频|