Communicator e3000 MPE/iX Release 6.5 (Non-Platform Software Release C.65.00 (30216-90291)

50 Chapter3
Growth Solution
MPE/iX Large Files Overview
HPFMOVEDATALTOR
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-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.
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 interpreted 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.
NOTE
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.