a0IFReadPartLock()

Starts a partial non-blocking lock-and-read.


Syntax

a0tError a0IFReadPartLock(
a0tLock *lock,
a0tDMARegion *region,
int gfirst,
int gcount,
a0tRequest *request,
a0tFormat *format,
void *address,
int count );

Arguments

Namerd/wrDescription
lock write Lock to be set to the DMA region.
region read DMA region to read.
gfirst read First element of the DMA region to read.
gcount read Number of elements to read.
request write Request descriptor to hold the status.
format read Format of the data to receive.
address write Address of the data to receive.
count read Number of elements of the data to receive.

Description

This function starts a non-blocking lock followed by a read from a specific DMA region region. It posts a request to lock-and-read the remote data with its own format information, but starting at the element gfirst, with gcount elements. The data received locally will be treated as count elements of the format and will be stored starting at address.

The elements read of the DMA region region stay locked after the return of this function. The lock lock must be passed to a function like a0Unlock() to release the locked DMA region.

On return of this function, the variable pointed by request contains an opaque request that should be used later to wait or test the completion of the lock-and-read operation.


Return Values

If an error condition occurs, it returns the error code, otherwise it returns A0ErrOk. Possible values are as follows:
Error CodeDescription
A0ErrFailSend It was not possible to send a request.
A0ErrFailReceive It was not possible to receive a reply.
A0ErrInvFormat The format has an invalid type.
A0ErrNotImplem The format has an unimplemented type.
A0ErrOkSuccessful completion.

See Also

a0FReadPartLock() a0IFReadLock() a0IFReadPart() a0IFWriteUnlock() a0Unlock() a0SetLockRead() a0ILock() a0WaitRequest() a0TestRequest()