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

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_out.c
  15. Purpose     : FS write 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_FWrite
  43. *
  44.   Description:
  45.   API function. Write data to a file.
  46.   Parameters:
  47.   pData       - Pointer to a data to be written to a file. 
  48.   Size        - Size of an element to be transferred.
  49.   N           - Number of elements to be transferred to the file.
  50.   pFile       - Pointer to a FS_FILE data structure.
  51.   
  52.   Return value:
  53.   Number of elements written.
  54. */
  55. FS_size_t FS_FWrite(const void *pData, FS_size_t Size, FS_size_t N, FS_FILE *pFile) {
  56.   FS_size_t i;
  57.   if (!pFile) {
  58.     return 0; /* No pointer to a FS_FILE structure */
  59.   }
  60.   FS_X_OS_LockFileOp(pFile);
  61.   if (!pFile->mode_w) {
  62.     /* Open mode does now allow write access */
  63.     pFile->error = FS_ERR_READONLY;
  64.     FS_X_OS_UnlockFileOp(pFile);
  65.     return 0;
  66.   }
  67.   i = 0;
  68.   if (pFile->dev_index >= 0) {
  69.     if (FS__pDevInfo[pFile->dev_index].fs_ptr->fsl_fwrite) {
  70.       /* Execute the FSL function */
  71.       i = (FS__pDevInfo[pFile->dev_index].fs_ptr->fsl_fwrite)(pData, Size, N, pFile);
  72.     }
  73.   }
  74.   FS_X_OS_UnlockFileOp(pFile);
  75.   return i;  
  76. }