flbase.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /*
  2.  * $Log:   P:/user/amir/lite/vcs/flbase.c_v  $
  3.  * 
  4.  *    Rev 1.2   06 Oct 1997 19:42:18   danig
  5.  * Changed LEushortlong & Unaligned4 to arrays
  6.  * 
  7.  *    Rev 1.1   10 Sep 1997 16:32:08   danig
  8.  * Got rid of generic names
  9.  * 
  10.  *    Rev 1.0   28 Aug 1997 16:42:00   danig
  11.  * Initial revision.
  12.  */
  13. /************************************************************************/
  14. /*                                                                      */
  15. /* FAT-FTL Lite Software Development Kit */
  16. /* Copyright (C) M-Systems Ltd. 1995-1997 */
  17. /* */
  18. /************************************************************************/
  19. #include "flbase.h"
  20. #ifdef TFFS_BIG_ENDIAN
  21. /*----------------------------------------------------------------------*/
  22. /*         Little / Big - Endian Conversion Routines */
  23. /*----------------------------------------------------------------------*/
  24. void toLEushort(unsigned char FAR0 *le, unsigned n)
  25. {
  26.   le[1] = (unsigned char)(n >> 8);
  27.   le[0] = (unsigned char)n;
  28. }
  29. unsigned short fromLEushort(unsigned char const FAR0 *le)
  30. {
  31.   return ((short)le[1] << 8) + le[0];
  32. }
  33. void toLEulong(unsigned char FAR0 *le, unsigned long n)
  34. {
  35.   le[3] = (unsigned char)(n >> 24);
  36.   le[2] = (unsigned char)(n >> 16);
  37.   le[1] = (unsigned char)(n >> 8);
  38.   le[0] = (unsigned char)n;
  39. }
  40. unsigned long fromLEulong(unsigned char const FAR0 *le)
  41. {
  42.   return ((long)le[3] << 24) +
  43.  ((long)le[2] << 16) +
  44.  ((long)le[1] << 8) +
  45.  le[0];
  46. }
  47. extern void copyShort(unsigned char FAR0 *to, unsigned char const FAR0 *from)
  48. {
  49.   to[0] = from[0];
  50.   to[1] = from[1];
  51. }
  52. extern void copyLong(unsigned char FAR0 *to, unsigned char const FAR0 *from)
  53. {
  54.   to[0] = from[0];
  55.   to[1] = from[1];
  56.   to[2] = from[2];
  57.   to[3] = from[3];
  58. }
  59. #else
  60. void toUNAL(unsigned char FAR0 *unal, unsigned n)
  61. {
  62.   unal[1] = (unsigned char)(n >> 8);
  63.   unal[0] = (unsigned char)n;
  64. }
  65. unsigned short fromUNAL(unsigned char const FAR0 *unal)
  66. {
  67.   return ((short)unal[1] << 8) + unal[0];
  68. }
  69. void toUNALLONG(Unaligned FAR0 *unal, unsigned long n)
  70. {
  71.   toUNAL(unal[0],(unsigned short) n);
  72.   toUNAL(unal[1],(unsigned short) (n >> 16));
  73. }
  74. unsigned long fromUNALLONG(Unaligned const FAR0 *unal)
  75. {
  76.   return fromUNAL(unal[0]) +
  77.  ((unsigned long) fromUNAL(unal[1]) << 16);
  78. }
  79. #endif /* TFFS_BIG_ENDIAN */
  80. int     tffscmpWords
  81.         (
  82.         void *buf1,                     /* first buffer to compare */
  83.         void *buf2,                     /* second buffer */
  84.         int   nbytes                    /* length in bytes */
  85.         )
  86.         {
  87.         short *b1;
  88.         short *b2;
  89.         b1 = buf1;
  90.         b2 = buf2;
  91.         
  92.         for (; nbytes > 0; nbytes -= 2)
  93.             if (*(b1)++ != *(b2)++)
  94.                 return nbytes;
  95.         return  0;
  96.         }