int i2o_msg_post_wait_mem (struct i2o_controller * c, u32 m, unsigned long timeout, struct i2o_dma * dma);
This API allows an OSM to post a message and then be told whether or not the system received a successful reply. If the message times out then the value '-ETIMEDOUT' is returned. This is a special case. In this situation the message may (should) complete at an indefinite time in the future. When it completes it will use the memory buffer attached to the request. If -ETIMEDOUT is returned then the memory buffer must not be freed. Instead the event completion will free them for you. In all other cases the buffer are your problem.
Returns 0 on success, negative error code on timeout or positive error code from reply.