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

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

?? fs_x_win32.c

?? ucfs嵌入式文件系統(tǒng),經(jīng)典實(shí)力開發(fā),與大家一起分享
?? C
字號(hào):
/************************************************************************                          Micrium, Inc.*                      949 Crestview Circle*                     Weston,  FL 33327-1848**                            uC/FS**                (c) Copyright 2002, Micrium, Inc.*                      All rights reserved.************************************************************************----------------------------------------------------------------------
File        : fs_x_win32.c
Purpose     : Win32 API OS Layer for the file system
----------------------------------------------------------------------
Known problems or limitations with current version
----------------------------------------------------------------------
None.
---------------------------END-OF-HEADER------------------------------
*/

/*********************************************************************
*
*             #include Section
*
**********************************************************************
*/

#include "fs_port.h"
#include "fs_api.h"
#include "fs_dev.h"
#include "fs_os.h"
#include "fs_conf.h"

#if (FS_OS_WINDOWS)

#if FS_OS_TIME_SUPPORT
#include <time.h>
#endif

#include <windows.h>


/*********************************************************************
*
*             Local Variables        
*
**********************************************************************
*/

static HANDLE _FS_fh_sema=NULL;
static HANDLE _FS_fop_sema=NULL;
static HANDLE _FS_mem_sema=NULL;
static HANDLE _FS_dop_sema=NULL;

#if FS_POSIX_DIR_SUPPORT
static HANDLE _FS_dirh_sema=NULL;
static HANDLE _FS_dirop_sema=NULL;
#endif  /* FS_POSIX_DIR_SUPPORT */

/*********************************************************************
*
*             Global functions section
*
**********************************************************************
*/

/*********************************************************************
*
*             FS_X_OS_LockFileHandle
*
  Lock global table _FS_filehandle (fs_info.c).
*/

void FS_X_OS_LockFileHandle(void) {
  if (_FS_fh_sema==NULL) {
    return;
  }
  WaitForSingleObject(_FS_fh_sema,INFINITE);
}


/*********************************************************************
*
*             FS_X_OS_UnlockFileHandle
*
  Unlock global table _FS_filehandle (fs_info.c).
*/

void FS_X_OS_UnlockFileHandle(void) {
  if (_FS_fh_sema==NULL) {
    return;
  }
  ReleaseSemaphore(_FS_fh_sema, 1,NULL);
}


/*********************************************************************
*
*             FS_X_OS_LockFileOp
*
  The filesystem does allow unlimited number of file access 
  operations at the same time. It is not allowed to access
  a file during an operation to it is pending. Because different
  fp's may access the same file, an implementation has to check
  fp->fileid_lo, fp->fileid_hi and fp->fileid_ex, if it wants
  to allow multiple file access operations at the same time.

  This implementation does allow only one file access
  operation at the same time.
*/

void FS_X_OS_LockFileOp(FS_FILE *fp) {
  if (_FS_fop_sema==NULL) {
    return;
  }
  WaitForSingleObject(_FS_fop_sema,INFINITE);
}


/*********************************************************************
*
*             FS_X_OS_UnlockFileOp
*
  Please see FS_X_OS_LockFileOp.
*/

void FS_X_OS_UnlockFileOp(FS_FILE *fp) {
  if (_FS_fop_sema==NULL) {
    return;
  }
  ReleaseSemaphore(_FS_fop_sema, 1,NULL);
}


/*********************************************************************
*
*             FS_X_OS_LockMem
*
  Lock global table _FS_memblock (fat_misc.c).
*/

void FS_X_OS_LockMem(void) {
  if (_FS_mem_sema==NULL) {
    return;
  }
  WaitForSingleObject(_FS_mem_sema,INFINITE);
}


/*********************************************************************
*
*             FS_X_OS_UnlockMem
*
    Unlock global table _FS_memblock (fat_misc.c).
*/

void FS_X_OS_UnlockMem(void) {
  if (_FS_mem_sema==NULL) {
    return;
  }
  ReleaseSemaphore(_FS_mem_sema, 1,NULL);
}


/*********************************************************************
*
*             FS_X_OS_LockDeviceOp
*
  The filesystem does allow unlimited number of device access 
  operations at the same time. It is not allowed to access
  the same driver and unit during an operation to it is already
  pending. 
   
  This implementation does allow only one device access
  operation at the same time.
*/

void FS_X_OS_LockDeviceOp(const FS__device_type *driver, FS_u32 id) {
  if (_FS_dop_sema==NULL) {
    return;
  }
  WaitForSingleObject(_FS_dop_sema,INFINITE);
}


/*********************************************************************
*
*             FS_X_OS_UnlockDeviceOp
*
    Please see FS_X_OS_LockDeviceOp.
*/

void FS_X_OS_UnlockDeviceOp(const FS__device_type *driver, FS_u32 id) {
  if (_FS_dop_sema==NULL) {
    return;
  }
  ReleaseSemaphore(_FS_dop_sema, 1,NULL);
}


#if FS_POSIX_DIR_SUPPORT

/*********************************************************************
*
*             FS_X_OS_LockDirHandle
*
  Lock global table _FS_dirhandle (api_dir.c).
*/

void FS_X_OS_LockDirHandle(void) {
  if (_FS_dirh_sema==NULL) {
    return;
  }
  WaitForSingleObject(_FS_dirh_sema,INFINITE);
}


/*********************************************************************
*
*             FS_X_OS_UnlockDirHandle
*
  Unlock global table _FS_dirhandle (api_dir.c).
*/

void FS_X_OS_UnlockDirHandle(void) {
  if (_FS_dirh_sema==NULL) {
    return;
  }
  ReleaseSemaphore(_FS_dirh_sema, 1,NULL);
}


/*********************************************************************
*
*             FS_X_OS_LockDirOp
*
  The filesystem does allow unlimited number of directory access 
  operations at the same time. It is not allowed to access
  a directory during an operation to it is pending. Because different
  dirp's may access the same directory, an implementation has to check
  dirp->dirid_lo, dirp->dirid_hi and dirp->dirid_ex, if it wants
  to allow multiple directory access operations at the same time.

  This implementation does allow only one directory access
  operation at the same time.
*/

void FS_X_OS_LockDirOp(FS_DIR *dirp) {
  if (_FS_dirop_sema==NULL) {
    return;
  }
  WaitForSingleObject(_FS_dirop_sema,INFINITE);
}


/*********************************************************************
*
*             FS_X_OS_UnlockDirOp
*
  Please see FS_X_OS_LockDirOp.
*/

void FS_X_OS_UnlockDirOp(FS_DIR *dirp) {
  if (_FS_dirop_sema==NULL) {
    return;
  }
  ReleaseSemaphore(_FS_dirop_sema, 1,NULL);
}

#endif  /* FS_POSIX_DIR_SUPPORT */


/*********************************************************************
*
*             FS_X_OS_GetDate
*/

FS_u16 FS_X_OS_GetDate(void) {
  FS_u16 fdate;
#if FS_OS_TIME_SUPPORT
  time_t t;
  struct tm *ltime;

  time(&t);
  ltime = localtime(&t);
  fdate = ltime->tm_mday;
  fdate += ((FS_u16) (ltime->tm_mon+1) << 5);
  fdate += ((FS_u16) (ltime->tm_year-80) << 9);
#else
  fdate = 1;
  fdate += ((FS_u16) 1 << 5);
  fdate += ((FS_u16) 0 << 9);
#endif /* FS_OS_TIME_SUPPORT */
  return fdate;
}


/*********************************************************************
*
*             FS_X_OS_GetTime
*/

FS_u16 FS_X_OS_GetTime(void) {
  FS_u16 ftime;
#if FS_OS_TIME_SUPPORT
  time_t t;
  struct tm *ltime;

  time(&t);
  ltime = localtime(&t);
  ftime = ltime->tm_sec/2;
  ftime += ((FS_u16) ltime->tm_min << 5);
  ftime += ((FS_u16) ltime->tm_hour << 11);
#else
  ftime = 0;
  ftime += ((FS_u16) 0 << 5);
  ftime += ((FS_u16) 0 << 11);
#endif /* FS_OS_TIME_SUPPORT */
  return ftime;
}


/*********************************************************************
*
*             FS_X_OS_Init
*/

int FS_X_OS_Init(void) {
  _FS_fh_sema = CreateSemaphore(NULL, 1, 1, NULL);
  if (_FS_fh_sema == NULL) {
    return -1;
  }
  _FS_fop_sema = CreateSemaphore(NULL, 1, 1, NULL);
  if (_FS_fop_sema == NULL) {
    return -1;
  }
  _FS_mem_sema = CreateSemaphore(NULL, 1, 1, NULL);
  if (_FS_mem_sema == NULL) {
    return -1;
  }
  _FS_dop_sema = CreateSemaphore(NULL, 1, 1, NULL);
  if (_FS_dop_sema == NULL) {
    return -1;
  }
#if FS_POSIX_DIR_SUPPORT
  _FS_dirh_sema = CreateSemaphore(NULL, 1, 1, NULL);
  if (_FS_dirh_sema == NULL) {
    return -1;
  }
  _FS_dirop_sema = CreateSemaphore(NULL, 1, 1, NULL);
  if (_FS_dirop_sema == NULL) {
    return -1;
  }
#endif  /* FS_POSIX_DIR_SUPPORT */
  return 0;
}


/*********************************************************************
*
*             FS_OS_Exit
*/

int FS_X_OS_Exit(void) {
  if (_FS_fh_sema!=NULL) {
    CloseHandle(_FS_fh_sema);
  }
  if (_FS_fop_sema!=NULL) {
    CloseHandle(_FS_fop_sema);
  }
  if (_FS_mem_sema!=NULL) {
    CloseHandle(_FS_mem_sema);
  }
  if (_FS_dop_sema!=NULL) {
    CloseHandle(_FS_dop_sema);
  }
#if FS_POSIX_DIR_SUPPORT
  if (_FS_dirh_sema!=NULL) {
    CloseHandle(_FS_dirh_sema);
  }
  if (_FS_dirop_sema!=NULL) {
    CloseHandle(_FS_dirop_sema);
  }
#endif  /* FS_POSIX_DIR_SUPPORT */
  return 0;
}

#endif /* FS_OS_WINDOWS */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丝袜丝nylons| 国产精品1024久久| 久久综合色综合88| 97aⅴ精品视频一二三区| 久久精品国产亚洲高清剧情介绍 | 欧美亚洲动漫另类| 韩国视频一区二区| 午夜精品久久久久影视| 欧美国产日本视频| 91精品国产综合久久国产大片| 成人自拍视频在线| 久久99精品久久久久久动态图| 亚洲精品成a人| 欧美韩国一区二区| 日韩欧美亚洲一区二区| 欧美性大战久久久| 一区二区三区久久久| 久久精品一区二区三区不卡 | 亚洲综合丁香婷婷六月香| 日韩欧美美女一区二区三区| 色婷婷综合久久久中文一区二区| 国产精品亚洲第一| 久久99国产精品免费网站| 亚洲成人av电影在线| 亚洲区小说区图片区qvod| 久久久精品人体av艺术| 日韩欧美国产精品| 欧洲中文字幕精品| 91麻豆国产福利在线观看| 成人午夜av电影| 国产寡妇亲子伦一区二区| 经典三级视频一区| 乱一区二区av| 免费欧美日韩国产三级电影| 日本午夜一本久久久综合| 亚洲成av人片www| 亚洲成a人v欧美综合天堂下载 | 亚洲一区二区三区四区不卡| 精品国产一区二区三区不卡| 在线综合+亚洲+欧美中文字幕| 色老汉一区二区三区| 白白色 亚洲乱淫| 成人app网站| 99国产精品一区| 色综合久久中文字幕综合网| 91欧美一区二区| 91在线视频播放| 91麻豆国产香蕉久久精品| 在线观看三级视频欧美| 在线视频中文字幕一区二区| 欧美在线不卡一区| 欧美日韩国产bt| 制服丝袜国产精品| 精品久久久久久久人人人人传媒| 亚洲精品一区二区三区影院 | 日韩精品午夜视频| 婷婷综合久久一区二区三区| 三级不卡在线观看| 久久精品国产澳门| 国产老肥熟一区二区三区| 国产成人精品影院| 91看片淫黄大片一级在线观看| 91国偷自产一区二区开放时间| 欧美视频在线不卡| 日韩一区二区三区免费看| 久久久不卡网国产精品二区| 国产欧美一区二区三区在线老狼 | 五月综合激情网| 麻豆精品精品国产自在97香蕉| 国产一区二区毛片| 欧美日韩精品综合在线| 欧美一区二区三区男人的天堂| 久久久久国产精品麻豆ai换脸| 国产精品久久久久久户外露出 | 国产精品系列在线观看| 91美女蜜桃在线| 一区二区三区小说| 亚洲第一主播视频| 黄色小说综合网站| av在线不卡免费看| 欧美日本一区二区三区四区| 久久婷婷综合激情| 亚洲蜜桃精久久久久久久| 日本欧美在线看| 国产成人精品免费一区二区| 在线国产电影不卡| 久久久久久97三级| 亚洲二区在线观看| 国产精品中文欧美| 欧美日韩国产123区| 国产精品色噜噜| 日韩激情视频在线观看| 成人免费黄色大片| 91精品国产黑色紧身裤美女| 国产精品国模大尺度视频| 日韩和欧美的一区| 成人国产精品免费网站| 91精品国产综合久久久蜜臀粉嫩| 中文无字幕一区二区三区| 日日夜夜免费精品| 色欧美片视频在线观看在线视频| 26uuu精品一区二区在线观看| 亚洲国产综合91精品麻豆| 成人一区二区在线观看| 正在播放亚洲一区| 亚洲一二三四在线观看| 成人午夜精品在线| 精品日韩在线观看| 午夜精品福利一区二区三区av| 成人app网站| 国产婷婷一区二区| 美女性感视频久久| 欧美日本国产一区| 亚洲美女屁股眼交3| 成人性生交大片免费看中文| 日韩欧美国产一二三区| 午夜日韩在线电影| 91麻豆免费看| 国产精品久久久久天堂| 国产精品一区在线观看你懂的| 日韩一级黄色大片| 视频一区在线播放| 欧美日韩综合不卡| 亚洲综合免费观看高清完整版| eeuss鲁片一区二区三区在线观看| 亚洲精品在线观看网站| 美女视频黄免费的久久| 91精品国产91久久久久久最新毛片| 夜夜操天天操亚洲| 在线视频一区二区三区| 亚洲精品成人少妇| 在线看国产日韩| 亚洲资源在线观看| 91高清在线观看| 亚洲精品视频一区二区| 欧美在线小视频| 一区二区在线观看视频| 在线欧美日韩国产| 亚洲国产人成综合网站| 欧美日韩一区精品| 爽好多水快深点欧美视频| 欧美一级二级三级蜜桃| 奇米精品一区二区三区在线观看一| 777午夜精品免费视频| 日韩和欧美一区二区三区| 欧美一级生活片| 黄色成人免费在线| 国产日韩欧美激情| av日韩在线网站| 亚洲国产日日夜夜| 日韩欧美亚洲一区二区| 国产精品伊人色| 亚洲天堂中文字幕| 欧美日韩一级二级三级| 免费不卡在线观看| 国产欧美日韩视频一区二区| av在线一区二区| 午夜欧美视频在线观看| 欧美成人video| 成人免费黄色大片| 亚洲第一狼人社区| 欧美精品一区二区三区视频| 丰满亚洲少妇av| 一二三区精品视频| 精品少妇一区二区三区视频免付费| 成人在线视频一区二区| 亚洲午夜三级在线| 日韩精品专区在线| 成人高清在线视频| 亚洲午夜电影网| 久久色.com| 在线观看日韩毛片| 狠狠色综合日日| 亚洲美女区一区| 久久综合色一综合色88| 91麻豆国产在线观看| 六月婷婷色综合| 亚洲特黄一级片| 日韩欧美色电影| 日本高清不卡一区| 国精产品一区一区三区mba视频| 日韩毛片精品高清免费| 欧美成人精品3d动漫h| 一本一道综合狠狠老| 激情伊人五月天久久综合| 亚洲人成亚洲人成在线观看图片 | 最新日韩在线视频| 91精品国产综合久久久蜜臀图片| 成人综合婷婷国产精品久久| 日韩精彩视频在线观看| 国产精品久久久久三级| 欧美一区二区精品在线| 91麻豆免费视频| 国产麻豆精品视频| 亚洲国产日产av| 中文字幕一区在线观看| 精品国产3级a| 欧美在线综合视频| 成人激情小说网站| 九九久久精品视频|