api_in.c
上传用户:yj_qqy
上传日期:2017-01-28
资源大小:2911k
文件大小:3k
源码类别:

uCOS

开发平台:

C/C++

  1. /*
  2. **********************************************************************
  3. *                          Micrium, Inc.
  4. *                      949 Crestview Circle
  5. *                     Weston,  FL 33327-1848
  6. *
  7. *                            uC/FS
  8. *
  9. *             (c) Copyright 2001 - 2003, Micrium, Inc.
  10. *                      All rights reserved.
  11. *
  12. ***********************************************************************
  13. ----------------------------------------------------------------------
  14. File        : api_in.c
  15. Purpose     : FS read functions
  16. ----------------------------------------------------------------------
  17. Known problems or limitations with current version
  18. ----------------------------------------------------------------------
  19. None.
  20. ---------------------------END-OF-HEADER------------------------------
  21. */
  22. /*********************************************************************
  23. *
  24. *             #include Section
  25. *
  26. **********************************************************************
  27. */
  28. #include "fs_port.h"
  29. #include "fs_dev.h"
  30. #include "fs_api.h"
  31. #include "fs_os.h"
  32. #include "fs_fsl.h"
  33. #include "fs_int.h"
  34. /*********************************************************************
  35. *
  36. *             Global functions
  37. *
  38. **********************************************************************
  39. */
  40. /*********************************************************************
  41. *
  42. *             FS_FRead
  43. *
  44.   Description:
  45.   API function. Read data from a file.
  46.   Parameters:
  47.   pData       - Pointer to a data buffer for storing data transferred
  48.                 from file. 
  49.   Size        - Size of an element to be transferred from file to data
  50.                 buffer
  51.   N           - Number of elements to be transferred from the file.
  52.   pFile       - Pointer to a FS_FILE data structure.
  53.   
  54.   Return value:
  55.   Number of elements read.
  56. */
  57. FS_size_t FS_FRead(void *pData, FS_size_t Size, FS_size_t N, FS_FILE *pFile) {
  58.   FS_size_t i;
  59.   if (!pFile) {
  60.     return 0;  /* No pointer to a FS_FILE structure */
  61.   }
  62.   FS_X_OS_LockFileOp(pFile);
  63.   if (!pFile->mode_r) {
  64.     /* File open mode does not allow read ops */
  65.     pFile->error = FS_ERR_WRITEONLY;
  66.     FS_X_OS_UnlockFileOp(pFile);
  67.     return 0;
  68.   }
  69.   i = 0;
  70.   if (pFile->dev_index >= 0) {
  71.     if (FS__pDevInfo[pFile->dev_index].fs_ptr->fsl_fread) {
  72.       /* Execute the FSL function  */
  73.       i = (FS__pDevInfo[pFile->dev_index].fs_ptr->fsl_fread)(pData, Size, N, pFile);
  74.     }
  75.   }
  76.   FS_X_OS_UnlockFileOp(pFile);
  77.   return i;  
  78. }