| 
    
   | 
   | 
  
     
    
    
The following intrinsics have been added to make dealing with
user mapped files simpler. The intrinsics provide for basic pointer
manipulation, data movement and memory initialization. These intrinsics
safely hadle all cross-SID buffer problems, removing the user from
having to deal with these situations. These intrinsics can be safely
used on long-mapped or large-mapped files.
    
     
    
NM callable only.
    
This routine can be used to perform arithmetic on a 64-bit pointer value. Byte
offsets can be added to or subtracted from a pointer by specifying eithger a
positive or negative offset value.
    Syntax
                   @64       I64     @64         I32
  HPFADDTOPOINTER (base_ptr, offset, return_ptr, status);
    Parameters
  - base_ptr
 
  64-bit pointer by reference (required)
       
      The base_ptr can be a 64-bit pointer to an object of any type.  
  - offset
 
  64-bit signed integer by reference (required)
       
      The offset can be any positive or negative value. Specifying a positive
      value will move the return_ptr forward from the previous base_ptr, while
      a negative value will move the return_ptr backward from the
      base_ptr.  
  - return_ptr
 
  64-bit pointer by reference (required)
       
      The return_ptr is an output parameter that will have the new pointer
      value returned to it. It can be a 64-bit pointer to an object of
      any type  
  - status
 
  32-bit signed integer by reference (optional)
       
      Returns the status of the HPFADDTOPOINTER call. If no errors or warnings
      are encountered, status returns 32 bits of zero. If errors or warnings
      are encountered, status is interpretted as two 16-bit fields.Bits (0:16)
      comprise status.info. A negative value indicates an error condition, and
      a positive value indicates a warning condition.Bits (16:16) comprise
      status.subsys. The value represents the subsystem that set the status
      information.  
 
    Operation Notes
    
No attemt is made to verify that the pointer value returned
is a legitimate pointer to a valid object. Any invalid pointers
will be detected and generate errors when the pointers are dereferenced.
    Related Information
  - Manual
 
  Accessing Files Programmer's Guide  
 
    
     
    
NM callable only.
    
This routine can be used to efficiently initialize a buffer
with a specified character value.
    Syntax
               I64    @64         CV         I32
  HPFFILLDATA (count, buffer_ptr, fill_char, status);
    Parameters
  - count
 
  64-bit signed integer by reference (required)
       
      A positive count of the number of bytes in the buffer indicated by the
      buffer_ptr parameter that should be initialized.  
  - buffer_ptr
 
  64-bit pointer by value (required)
       
      A pointer to the buffer that should be initialized. The buffer_ptr may
      point to any valid object in your stack, heap, or a file that has been
      opened with user mapped access.  
  - fill_char
 
  Character value by value (required)
       
      The character value that should be used to initialize the specified
      buffer. Any value in the range of 0 through 255 can be specified,
      including all printable and non-printable ASCII characters.  
  - status
 
  32-bit signed integer by reference (optional)
       
      Returns the status of the HPFFILLDATA call. If no errors or warnings are
      encountered, status returns 32 bits of zero. If errors or warnings are
      encountered, status is interpretted as two 16-bit fields. Bits
      (0:16) comprise status.info. A negative value indicates an error
      condition, and a positive value indicates a warning condition. Bits
      (16:16) comprise status.subsys. The value represents the subsystem that
      set the status information.  
 
    Operation Notes
    
None.
    Related Information
  - Manual
 
  Accessing Files Programmer's Guide  
 
    
     
    
NM callable only.
    
This routine can be used to efficiently move data from a source
buffer to a target buffer.
    Syntax
               I64    @64         @64         I32
  HPFMOVEDATA (count, source_ptr, target_ptr, status);
    Parameters
  - count
 
  64-bit signed integer by reference (required)
       
      The count parameter allows the caller to specify the number of bytes to
      move from the source buffer to the target buffer.  
  - source_ptr
 
  64-bit pointer by value (required)
       
      The source_ptr can be a 64-bit pointer to any valid object that the
      calling process has access to. The buffer may be in the caller's stack,
      heap, or obtained by opening a file with user mapped access  
  - target_ptr
 
  64-bit pointer by value (required)
       
      The target_ptr can be a 64-bi pointer to any valid object that the
      calling proceThis intrinsic is especially useful when the source
      and target buffers are overlapping. The HPFMOVEDATARTOL intrinsic
      is typically used when the target buffer's address is to
      the right (larger) of the source buffer's address. Moving
      the data from the right to the left ensures that the data in the
      source buffer is copied to the target buffer before it is overwritten
      itselfss has access to. The buffer may be in the caller's stack, heap,
      or obtained by opening a file with user mapped access.  
  - status
 
  32-bit signed integer by reference (optional)
       
      Returns the status of the HPFMOVEDATA call. If no errors
      or warnings are encountered, status returns 32 bits of zero. If
      errors or warnings are encountered, status is
      interpretted as two 16-bit fields.Bits (0:16) comprise status.info.
      A negative value indicates an error condition, and a positive value
      indicates a warning condition.Bits (16:16) comprise status.subsys. The
      value represents the subsystem that set the status information.  
 
    Operation Notes
    
When calling the HPFMOVEDATA intrinsic it is important to
ensure that the source and target buffers are not overlapping. The
results of a HPFMOVEDATA call when source and target buffers are
overlapping are undefined. If source and target buffers are overlapping, the
HPFMOVEDATALTOR or HPFMOVEDATARTOL intrinsics should be used.
    Related Information
  - Manual
 
  Accessing Files Programmer's Guide  
 
    
     
    
NM callable only.
    
This routine can be used to efficiently move data from a source
buffer to a target buffer. If the source and target buffers were
viewed horizontally, like a line of text, the data movement is performed
by starting at leftmost position of the source buffer (to the leftmost position
of the target buffer) and proceeding to the rightmost.
    Syntax
                   I64    @64         @64         I32
  HPFMOVEDATALTOR (count, source_ptr, target_ptr, status);
    Parameters
  - count
 
  64-bit signed integer by reference (required)
       
      The count parameter allows the caller to specify the number of bytes to
      move from the source buffer to the target buffer.  
  - source_ptr
 
  64-bit pointer by value (required)
       
      The source_ptr can be a 64-bit pointer to any valid object that the
      calling process has access to. The buffer may be in the caller's stack,
      heap, or obtained by opening a file with user mapped access  
  - target_ptr
 
  64-bit pointer by value (required)
       
      The target_ptr can be a 64-bi pointer to any valid object that the
      calling process has access to. The buffer may be in the caller's stack,
      heap, or obtained by opening a file with user mapped access.  
  - status
 
  32-bit signed integer by reference (optional)
       
      Returns the status of the HPFMOVEDATALTOR call. If
      no errors or warnings are encountered, status returns 32 bits of
      zero. If errors or warnings are encountered, status is
      interpretted as two 16-bit fields.Bits (0:16) comprise status.info.
      A negative value indicates an error condition, and a positive value
      indicates a warning condition.Bits (16:16) comprise status.subsys. The
      value represents the subsystem that set the status information.  
 
    Operation Notes
    
This intrinsic is especially useful when the source and target
buffers are overlapping. The HPFMOVEDATALTOR intrinsic is typically
used when the target buffer's address is to the left (smaller)
of the source buffer's address. Moving the data from the
left to the right ensures that the data in the source buffer is
copied to the target buffer before it is overwritten itself.
    Related Information
  - Manual
 
  Accessing Files Programmer's Guide  
 
    
     
    
NM callable only.
    
This routine can be used to efficiently move data from a source
buffer to a target buffer. If the source and target buffers were
viewed horizontally, like a line of text, the data movement is performed
by starting at rightmost position of the source buffer (to the rightmost
position of the target buffer) and proceeding to the leftmost.
    Syntax
                   I64    @64         @64         I32
  HPFMOVEDATARTOL (count, source_ptr, target_ptr, status);
    Parameters
  - count
 
  64-bit signed integer by reference (required)
       
      The count parameter allows the caller to specify the number of bytes to
      move from the source buffer to the target buffer.  
  - source_ptr
 
  64-bit pointer by value (required)
       
      The source_ptr can be a 64-bit pointer to any valid object that the
      calling process has access to. The buffer may be in the caller's stack,
      heap, or obtained by opening a file with user mapped access  
  - target_ptr
 
  64-bit pointer by value (required)
       
      The target_ptr can be a 64-bi pointer to any valid object that the
      calling process has access to. The buffer may be in the caller's stack,
      heap, or obtained by opening a file with user mapped access.  
  - status
 
  32-bit signed integer by reference (optional)
       
      Returns the status of the HPFMOVEDATARTOL call. If
      no errors or warnings are encountered, status returns 32 bits of
      zero. If errors or warnings are encountered, status is
      interpretted as two 16-bit fields.Bits (0:16) comprise status.info.
      A negative value indicates an error condition, and a positive value
      indicates a warning condition.Bits (16:16) comprise status.subsys. The
      value represents the subsystem that set the status information.  
 
    Operation Notes
    
This intrinsic is especially useful when the source and target
buffers are overlapping. The HPFMOVEDATARTOL intrinsic is typically
used when the target buffer's address is to the right (larger)
of the source buffer's address. Moving the data from the
right to the left ensures that the data in the source buffer is
copied to the target buffer before it is overwritten itself.
    Related Information
  - Manual
 
  Accessing Files Programmer's Guide  
 
    
    
     
    
     
   |