home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e065 / 2.ddi / UIO_TRAN.C < prev    next >
Encoding:
C/C++ Source or Header  |  1991-08-28  |  2.9 KB  |  104 lines

  1. /*********************************************************************/
  2. /*                                                                   */
  3. /*    uio_tran.c - Transfer buffer utilities for both host and UIO   */
  4. /*                                                                   */
  5. /*    Author: John C. Fairman           August 31, 1990              */
  6. /*    Copyright 1990 by Neuralware Inc.                              */
  7. /*                                                                   */
  8. /*    $Author   :  $                                                 */
  9. /*    $Date     :  $                                                 */
  10. /*    $Source   :  $                                                 */
  11. /*    $Revision :  $                                                 */
  12. /*    $Log      :  $                                                 */
  13. /*                                                                   */
  14. /*********************************************************************/
  15.  
  16. #include "host.h"
  17.  
  18. #if defined(SUN)
  19. #include <sys/types.h>
  20. #endif
  21.  
  22. #ifdef MAC
  23. #include <StdDef.h>
  24. #endif
  25. #if defined(IBP) || defined(I860)
  26. #include <stddef.h>
  27. #endif
  28.  
  29. #define SKIP_COMPAT_DATA       1
  30. #include "userutl.h"
  31. #include "uio_strc.h"
  32. #include "uio_tran.h"
  33. #include "uio_tran.pro"
  34.  
  35. #ifdef THINK_C
  36. #include "macuio.redef"
  37. #endif
  38.  
  39. /* FUNCTION */
  40. EXPORT UNINT get_data_size(count, data_type)
  41. NINT count;
  42. NINT data_type;
  43. {
  44.   UNINT size;
  45.  
  46.   size = ((data_type & 0x00F0) >> 4);
  47.   size *= count;
  48.   return(size);
  49. }
  50.  
  51. /* FUNCTION */
  52. EXPORT VOID Put_data_into_transfer_buffer(buffer, count, data_type)
  53. BUFFER_CHAR *buffer;
  54. NINT        count;
  55. NINT        data_type;
  56. {
  57.   UNINT size;
  58.  
  59.   size = get_data_size(count, data_type);
  60.   Data_transfer_ptr->data_descriptor.num_elements = (BUFFER_INT)count;
  61.   Data_transfer_ptr->data_descriptor.data_type = (BUFFER_INT)data_type;
  62.   if (size > SIZE_OF_UIO_BUFFER)
  63.     UIO_error_value = (NINT)OUTPUT_OVERFLOW;
  64.   else
  65.     if (buffer != (BUFFER_CHAR *)(Data_transfer_ptr->data_area.data))
  66.       MOVEMEM(Data_transfer_ptr->data_area.data, buffer, size);
  67. }
  68.  
  69. /* */
  70. /* FUNCTION */
  71. EXPORT VOID Get_data_from_transfer_buffer(buffer, count, data_type)
  72. BUFFER_CHAR *buffer;
  73. NINT        count;
  74. NINT        data_type;
  75. {
  76.   UNINT size;
  77.  
  78.   if (Data_transfer_ptr->data_descriptor.num_elements ==
  79.     (BUFFER_INT)count)
  80.   {
  81.     if (Data_transfer_ptr->data_descriptor.data_type ==
  82.       (BUFFER_INT)data_type)
  83.     {
  84.       size = get_data_size(count, data_type);
  85.       if (size > SIZE_OF_UIO_BUFFER)
  86.         UIO_error_value = (NINT)INPUT_OVERFLOW;
  87.       else
  88.       {
  89.         if (buffer !=
  90.           (BUFFER_CHAR *)(Data_transfer_ptr->data_area.data))
  91.         {
  92.           MOVEMEM(buffer, Data_transfer_ptr->data_area.data, size);
  93.         }
  94.       }
  95.       return;
  96.     }
  97.   }
  98.   UIO_error_value = (NINT)INPUT_CORRUPTION;
  99. }
  100.  
  101. /* */
  102.  
  103.  
  104.