fluke_error_t fluke_ipc_send(fluke_ref_t *destination, fluke_ipc_params_t *ipc_params);
This function sends a one-way message to the port referred to by the destination port reference. The message transmission will have at-most-once semantics: it may or may not arrive at its destination, but if it does arrive, it will be seen by the server only once, and its contents will be uncorrupted by network bit errors and such. (Whether a message is subject to being modified maliciously depends on the security policies of the Fluke implementation and the surrounding environment.) There are no guarantees about message ordering. In some Fluke implementations it is possible for messages to arrive at the server in a different order from which they were sent. There may be architecture-specific restrictions on buffer alignment, and padding may be added to request and reply messages in transit.If an error occurs during message transmission, it may or may not be detected by the Fluke implementation. If an error is detected, an appropriate error code may be returned. Otherwise, this function returns FLUKE_SUCCESS, and the message may or may not reach its destination. Thus, the application should only use the return code as a hint, and must still be prepared to tolerate arbitrary message loss.
- destination
- A pointer to a port reference indicating the port to send the message to.
- ipc_params
- A pointer to a structure describing data and references to send.
Returns one of the following codes: All of these have an implicit FLUKE_ prefix.
- SUCCESS
- The transfer may have succeeded.
- INVALID_DEST
- The IPC target referenced by destination is invalid, e.g. because the port it refers to was destroyed or the server task was terminated.
If any of the following errors is detected by the Fluke implementation, it causes the current thread to take a synchronous exception with one of the following codes. All of these have an implicit FLUKE_INSANITY_ prefix.
- NO_OBJECT
- No active object was found at destination. A pointer in the ipc_params send reference array does not refer to an active object.
- NOT_REF
- The object at destination is not a reference object. An object in the ipc_params send reference array is not a reference object.
- NOT_PORT_REF
- The object at destination is a reference object, but not a reference to a port.
- INVALID_OBJECT
- The state of the object at destination is invalid or the state of an object in the ipc_params send reference array is invalid.
- BUFFER_TOO_SMALL
- The initial send data was smaller than FLUKE_MIN_MSG_SIZE.
- BUFFER_UNALIGNED
- A message buffer was not aligned properly according to the architecture-specific requirements.
fluke_ipc_wait_receive