ntPassFsLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* ntPassFsLib.h - pass-through file system library header */
  2. /* Copyright 1984-1993 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01c,07dec99,pai  moved HOST_BINARY to ntPassFsLib.h.
  7. 01b,07dec99,pai  fixed SPR 27918 by adding ARCHCVTFLAGS macro and
  8.                  Win32 file control flag values to ntPassFsLib.h.
  9. 01a,03oct97,cym  written from passFsLib.h.
  10. */
  11. #ifndef __INCntPassFsLibh
  12. #define __INCntPassFsLibh
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. #if CPU==SIMNT
  17. /* Win32 API file control options used by open() and creat() */
  18. #define L_RDONLY        0
  19. #define L_WRONLY        1
  20. #define L_RDWR          2
  21. #define L_ACCMODE       (L_RDONLY | L_WRONLY | L_RDWR)
  22. #define L_APPEND        0x0008
  23. #define L_CREAT         0x0100
  24. #define L_TRUNC         0x0200
  25. #define L_EXCL          0x0400
  26. /* 
  27.  * L_BINARY should match the O_BINARY value in fcntl.h from the toolchain
  28.  * headers (in the host tree.)  For cygwin b19, it should be 0x10000.  For
  29.  * mingw32 the value should be 0x8000.
  30.  */
  31. #define L_BINARY        0x8000
  32. #define HOST_BINARY     L_BINARY
  33. /*******************************************************************************
  34. *
  35. * ARCHCVTFLAGS - map Win32 file flags to VxWorks file flags
  36. *
  37. * This macro tests the file mode flags passed in token <x> and, if necessary,
  38. * converts the VxWorks flag to the corresponding Win32 flag.
  39. *
  40. * CAVEATS
  41. * This macro is intended for ntPassFsLib internal use only.
  42. *
  43. * INTERNAL
  44. * If a particular bit position is not tested in the macro, then it is
  45. * effectively filtered out of the resulting value.
  46. *
  47. * VxWorks and Win32 currently all use the same values for most of the file
  48. * mode flags passed to open() and creat().  However, some Win32 file flags
  49. * have different values than those used in the VxWorks API.  Local versions
  50. * of the Win32 modes are used to map VxWorks file mode flags to Win32 file
  51. * mode flags.  This macro and method is identical to what has been done with
  52. * the HP and Sun simulators in simLib.h.  The macro names are conditionally
  53. * compiled by testing CPU==SIMNT just in case this code is combined with
  54. * definitions in simLib.h.
  55. *
  56. * RETURNS:  A flags value converted to something Win32 understands.
  57. */
  58. #define ARCHCVTFLAGS(x)                                
  59.     (                                                  
  60.     ((x) & O_RDONLY     ? L_RDONLY     : 0) |          
  61.     ((x) & O_WRONLY     ? L_WRONLY     : 0) |          
  62.     ((x) & O_RDWR       ? L_RDWR       : 0) |          
  63.     /* L_ACCMODE : already tested above    */          
  64.     ((x) & O_APPEND     ? L_APPEND     : 0) |          
  65.     ((x) & O_CREAT      ? L_CREAT      : 0) |          
  66.     ((x) & O_TRUNC      ? L_TRUNC      : 0) |          
  67.     ((x) & O_EXCL       ? L_EXCL       : 0) |          
  68.     ((x) & HOST_BINARY  ? L_BINARY     : 0)            
  69.     )
  70. #endif /* CPU==SIMNT */
  71. /* Function declarations */
  72. #if defined(__STDC__) || defined(__cplusplus)
  73. extern void *ntPassFsDevInit (char *devName);
  74. extern STATUS ntPassFsInit (int nPassfs);
  75.       
  76. #else /* __STDC__ */
  77. extern void *ntPassFsDevInit ();
  78. extern STATUS ntPassFsInit ();
  79. #endif /* __STDC__ */
  80. #ifdef __cplusplus
  81. }
  82. #endif
  83. #endif /* __INCntPassFsLibh */