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

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

?? tffslib.c

?? This is a source code of VxWorks
?? C
字號(hào):
/* tffsLib.c - TFFS FLite library for VxWorks. *//* Copyright 1984-1997 Wind River Systems, Inc. */#include "copyright_wrs.h"/* FAT-FTL Lite Software Development Kit * Copyright (C) M-Systems Ltd. 1995-1997	*//*modification history--------------------01f,13apr98,yp   made interval timer a task instead of exc task.(SPR #20693)01e,06jan98,hdn  added INVERSION_SAFE to the mutex semaphore.01d,17dec97,hdn  fixed a typo in return value at RETURNS:01c,15dec97,yp   doc cleanup.01b,07nov97,hdn  cleaned up.01a,20mar96,ami  written by Amirban in M-Systems*//*DESCRIPTIONThis library provides the OS binding to vxWorks for TFFS FLite .INCLUDE FILES: *//* includes */#include "flbase.h"#include "tffsDrv.h"#include "taskLib.h"/* defines */#if     (POLLING_INTERVAL > 0)#define FL_POLL_TASK_PRIORITY 	100#define FL_POLL_TASK_OPT 	0#define FL_POLL_TASK_STACK_SIZE	2048#endif /* (POLLING_INTERVAL > 0) *//* externs */#if	(POLLING_INTERVAL > 0)IMPORT SEM_ID 	flPollSemId;#endif	/* (POLLING_INTERVAL > 0) *//* globals *//* locals */LOCAL int	flSysClkRate;	/* ticks per second       */#if	(POLLING_INTERVAL > 0)LOCAL int	flPollInterval;	/* socket polling interval in milliseconds */LOCAL int	flPollTaskId;#endif	/* (POLLING_INTERVAL > 0) *//* forward declarations */LOCAL void	flTimerInit (void);#if	(POLLING_INTERVAL > 0)LOCAL void	(*flSocketPollingRoutine) (void);#endif	/* (POLLING_INTERVAL > 0) *//********************************************************************************* flCreateMutex - create a mutex semaphore** This translates a TFFS mutex create call to vxWorks.** RETURNS: flOK, or flNotEnoughMemory if it fails.*/FLStatus flCreateMutex     (    FLMutex * mutex	/* pointer to mutex */    )    {    /* Io requests should be processed exactly in the same */    /* sequence they are received                          */    *mutex = semMCreate (SEM_DELETE_SAFE | SEM_INVERSION_SAFE | SEM_Q_PRIORITY);    return ((*mutex != NULL) ? flOK : flNotEnoughMemory);    }/********************************************************************************* flTakeMutex - take a mutex semaphore** This routine translates a mutex take call from TFFS to vxWorks.** RETURNS: 0 if mutex not available otherwise returns 1.*/int flTakeMutex     (    FLMutex * mutex,	/* pointer to mutex */    int mode		/* 0 - nowait */    )    {    STATUS status;    status = semTake (*mutex, (mode == 0 ? NO_WAIT : WAIT_FOREVER));    if (status == ERROR)	return (0);    else        return (1);    }/********************************************************************************* flFreeMutex - release a mutex semaphore** This routine translates a mutex release call from TFFS to vxWorks.** RETURNS: N/A*/void flFreeMutex    (    FLMutex * mutex     /* pointer to mutex */    )    {    semGive (*mutex);    }#ifdef EXIT/********************************************************************************* flDeleteMutex - delete a mutex semaphore** This routine translates a deletes mutex semaphore call from TFFS to vxWorks.** RETURNS: N/A*/void flDeleteMutex    (    FLMutex * mutex     /* pointer to mutex */    )    {    semDelete (*mutex);    *mutex = NULL;    }#endif /* EXIT *//********************************************************************************* flSysfunInit - initialize all the OS bindings** This routine initializes all the OS bindings.** RETURNS: N/A*/void flSysfunInit (void)    {    flTimerInit ();    }/********************************************************************************* flTimerInit - initialize timer for socket polling** This routine initializes timer for socket polling.** RETURNS: N/A*/static void flTimerInit (void)    {    flSysClkRate = sysClkRateGet ();    }#if	(POLLING_INTERVAL > 0)/********************************************************************************* flPollTask - interval polling task** This routine waits on the polling semaphore and invokes the interval* timer work routine when the semaphore becomes available. The function * is not local so the task list on the shell can display the entry point.** RETURNS: */void flPollTask (void)    {    int delay;    semTake (flPollSemId, WAIT_FOREVER);    delay = (flPollInterval * flSysClkRate )/1000;    if (delay == 0)        delay = 1;    /* remove the polling semaphore */    semDelete (flPollSemId);    FOREVER	{	taskDelay (delay);	(*flSocketPollingRoutine)();	}    }/********************************************************************************* flInstallTimer - install the timer for socket polling** This routine installs the timer used for socket polling.** RETURNS: flOK, or flNotEnoughMemory if wdCreate() failed.*/FLStatus flInstallTimer     (    void (*routine)(void),    unsigned int intervalMsec    )    {    flPollInterval         = intervalMsec;    flSocketPollingRoutine = routine;    /* Spawn the polling task */    if ((flPollTaskId = taskSpawn ("tTffsPTask",				  FL_POLL_TASK_PRIORITY,				  FL_POLL_TASK_OPT,				  FL_POLL_TASK_STACK_SIZE,				  (FUNCPTR) flPollTask,0,0,0,0,0,0,0,0,0,0)) == ERROR)        return (flNotEnoughMemory);    return (flOK);    }#ifdef EXIT/********************************************************************************* flRemoveTimer - cancel socket polling** This routine cancels socket polling.** RETURNS: N/A*/void flRemoveTimer (void)    {    /* Call it twice to shut down everything */    (*flSocketPollingRoutine)();    (*flSocketPollingRoutine)();    /* remove socket polling */    flSocketPollingRoutine = NULL;    /* remove the polling task */    taskDelete (flPollTaskId);    }#endif	/* EXIT */#endif	/* POLLING_INTERVAL *//********************************************************************************* flRandByte - return a random number from 0 to 255** This routine returns a random number from 0 to 255.** RETURNS: random number*/unsigned flRandByte (void)    {    /* XXX return (tickGet () & 0xff); */    return (rand () & 0xff);    }/********************************************************************************* flCurrentTime - returns current time of day** This routine Returns current time of day in the format described below.*      bits  4 ..  0  - seconds*      bits 10 ..  5  - minutes*      bits 15 .. 11  - hours** RETURNS: current time*/unsigned flCurrentTime (void)    {    unsigned char hour, minute, second;    time_t        flAnsiTime;    struct tm    *flLocalTimePtr;    time (&flAnsiTime);    flLocalTimePtr = localtime (&flAnsiTime);    hour   = (unsigned char) flLocalTimePtr->tm_hour;    minute = (unsigned char) flLocalTimePtr->tm_min;    second = (unsigned char) flLocalTimePtr->tm_sec;    return ((hour << 11) | (minute << 5) | second);    }/********************************************************************************* flCurrentDate - returns current date** This routine Returns current date in the format described below.*      bits  4 .. 0  - day*      bits  8 .. 5  - month*      bits 15 .. 9  - year (0 for 1980)** RETURNS: current date*/unsigned flCurrentDate (void)    {    short int  year;    char       month, day;    struct tm *flLocalTimePtr;    time_t     flAnsiTime;    time (&flAnsiTime);    flLocalTimePtr = localtime (&flAnsiTime);    year  = (short int) (flLocalTimePtr->tm_year - 80);    month = (char)       flLocalTimePtr->tm_mon + 1;    day   = (char)       flLocalTimePtr->tm_mday;    return ((year << 9) | (month << 5) | day);    }/********************************************************************************* flAddLongToFarPointer - add unsigned long offset to the far pointer** This routine adds an unsigned long offset to a far pointer.** RETURNS: far pointer*/void FAR0*  flAddLongToFarPointer    (    void FAR0 *ptr,     unsigned long offset    )    {    return (physicalToPointer( pointerToPhysical(ptr) + offset, 0,0));    }#if	FALSE	/* moved to the BSP/sysTffs.c *//********************************************************************************* flDelayMsecs - wait for specified number of milliseconds** This routine waits for a specified number of milliseconds doing nothing.** RETURNS: N/A*/void flDelayMsecs     (    unsigned milliseconds	/* milliseconds to wait */    )    {    unsigned long stop, ticksToWait;    ticksToWait = (milliseconds * flSysClkRate) / 500;    if (ticksToWait == 0x0l)        ticksToWait++;    stop = tickGet () + ticksToWait;    while (tickGet () <= stop)	;    }/*----------------------------------------------------------------------*//*                        f l D e l a y L o o p                         *//*									*//* Short delay.                                                         *//*                                                                      *//* Parameters:                                                          *//*      cycles          : wait loop cycles to perform                   *//*----------------------------------------------------------------------*/void flDelayLoop (int  cycles)     /* HOOK for VME-177 */{  while(--cycles) ; }#endif	/* FLASE */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜在线电影| 色先锋aa成人| 经典三级视频一区| 日韩和欧美的一区| 亚洲第一电影网| 亚洲国产综合色| 亚洲尤物视频在线| 亚洲一区中文日韩| 亚洲二区视频在线| 五月天亚洲婷婷| 日本中文在线一区| 免费亚洲电影在线| 国内不卡的二区三区中文字幕 | 国产精品女同一区二区三区| 精品免费一区二区三区| 精品欧美一区二区在线观看| 精品国产成人系列| 久久精品一区四区| 国产精品久久99| 亚洲已满18点击进入久久| 亚洲高清在线精品| 久久机这里只有精品| 国产一区二区三区免费播放| 成人在线综合网| 99久久免费视频.com| 欧洲色大大久久| 3d成人动漫网站| 久久久五月婷婷| 亚洲视频一区二区免费在线观看| 亚洲一区二区三区在线看| 日韩精品国产精品| 狠狠色狠狠色综合系列| 成人av在线电影| 欧美日韩一区二区三区在线| 91精品国产综合久久精品性色 | 亚洲精品亚洲人成人网在线播放| 亚洲综合免费观看高清完整版| 天天操天天色综合| 国产一区啦啦啦在线观看| 91首页免费视频| 91精品国产91久久综合桃花| 国产视频一区在线观看| 亚洲人午夜精品天堂一二香蕉| 亚洲电影视频在线| 国产一本一道久久香蕉| 91久久精品一区二区二区| 日韩午夜在线影院| 国产精品福利一区| 日韩成人免费电影| 成人中文字幕在线| 欧美一区二区三区在线看| 国产精品久久久久9999吃药| 天堂资源在线中文精品| 国产成人综合精品三级| 欧洲精品一区二区三区在线观看| 精品久久免费看| 一区二区视频在线| 国产综合久久久久久鬼色| 在线欧美一区二区| 成人午夜激情影院| 国产欧美日韩在线视频| 精品亚洲成av人在线观看| 在线观看亚洲专区| 日韩免费一区二区| 亚洲狠狠丁香婷婷综合久久久| 不卡一区二区在线| 欧美美女喷水视频| 亚洲欧美偷拍三级| 日本一区二区三区在线不卡| 国产精品视频看| 成人午夜视频免费看| 欧美吻胸吃奶大尺度电影| 久久精品亚洲精品国产欧美| 五月天亚洲婷婷| 日本高清不卡在线观看| 日本一区二区视频在线观看| 麻豆精品在线观看| 欧美日韩国产欧美日美国产精品| 国产精品久久久久永久免费观看 | 欧美精品一区二区三区在线| 亚洲国产一区二区在线播放| 成人av在线播放网址| 精品国产髙清在线看国产毛片| 亚洲一二三区在线观看| 91蜜桃在线观看| 国产精品美女久久久久高潮| 精品一区二区三区在线视频| 9191国产精品| 亚瑟在线精品视频| 欧美人伦禁忌dvd放荡欲情| 亚洲激情成人在线| 色哟哟亚洲精品| 亚洲人成在线观看一区二区| 99免费精品视频| 中文字幕精品一区二区精品绿巨人 | 不卡av在线网| 久久免费看少妇高潮| 美女视频一区二区| 欧美电视剧免费全集观看| 青青草伊人久久| 日韩免费电影网站| 首页综合国产亚洲丝袜| 欧美电影一区二区| 热久久国产精品| 91精品欧美福利在线观看| 午夜av一区二区| 5566中文字幕一区二区电影| 丝袜诱惑制服诱惑色一区在线观看| 欧美色图激情小说| 亚洲国产精品久久一线不卡| 欧美日韩一区二区三区四区| 亚洲一区二区三区中文字幕在线| 欧美日韩一区中文字幕| av亚洲产国偷v产偷v自拍| 国产农村妇女精品| av亚洲精华国产精华精| 亚洲欧美日韩在线播放| 欧美在线制服丝袜| 亚洲成人免费影院| 日韩欧美一级二级| 久久国产精品免费| 国产亚洲一二三区| 成人av资源下载| 亚洲色图一区二区三区| 欧美专区亚洲专区| 婷婷久久综合九色综合绿巨人 | 欧美乱妇一区二区三区不卡视频| 日韩电影在线一区二区| 2021中文字幕一区亚洲| 国产白丝网站精品污在线入口| 久久亚洲精精品中文字幕早川悠里| 国产馆精品极品| 最新日韩av在线| 欧美日韩在线观看一区二区 | 久久久久久久久久久99999| 成人一区二区视频| 一区二区在线电影| 欧美成人aa大片| 不卡一区二区三区四区| 偷拍日韩校园综合在线| 亚洲bt欧美bt精品| 国产精品一二三四| 亚洲人成精品久久久久| 欧美精品一二三| 国产福利电影一区二区三区| 亚洲精品国产第一综合99久久 | 亚洲精品高清视频在线观看| 69堂成人精品免费视频| 国产精品一区二区91| 亚洲欧美视频一区| 日韩精品一区二区三区三区免费 | 国产精品久久三| 欧美久久久久久久久| 成人蜜臀av电影| 日韩精品一区第一页| 国产精品美女一区二区三区| 777欧美精品| 97精品久久久久中文字幕| 久久不见久久见中文字幕免费| 1区2区3区国产精品| 欧美一二三区在线观看| 99久久久无码国产精品| 毛片不卡一区二区| 亚洲精品网站在线观看| 久久久亚洲欧洲日产国码αv| 欧美系列日韩一区| 国产九色sp调教91| 日日摸夜夜添夜夜添精品视频| 亚洲欧洲99久久| 欧美精品一区二区三| 欧美三级电影在线看| 国产成人午夜视频| 亚洲欧洲国产日韩| 欧美午夜免费电影| 国产精品一区二区无线| 亚洲va在线va天堂| 日韩美女啊v在线免费观看| 欧美一级午夜免费电影| eeuss鲁片一区二区三区在线看| 日本欧美一区二区三区| 中文字幕一区二区三区不卡在线| 在线播放一区二区三区| 国产精品自在欧美一区| 日韩av在线发布| 亚洲女人****多毛耸耸8| 欧美tickle裸体挠脚心vk| 欧美日韩一区二区在线视频| 成人精品一区二区三区中文字幕| 日本亚洲欧美天堂免费| 亚洲欧美一区二区久久| 中文字幕在线观看不卡| 精品国产乱码久久久久久浪潮| 在线观看欧美黄色| 99久久国产综合精品色伊| 国产成人精品一区二区三区四区| 日韩国产欧美三级| 久久久久一区二区三区四区| 欧美成人一区二区三区片免费| 欧美视频一区二| 91麻豆123|