33,7 → 33,9 |
/** @file |
* Generic module functions implementation. |
*/ |
|
#include <async.h> |
#include <malloc.h> |
|
#include <ipc/ipc.h> |
#include <ipc/services.h> |
117,5 → 119,32 |
} |
} |
|
int data_receive( void ** data, size_t * length ){ |
ERROR_DECLARE; |
|
ipc_callid_t callid; |
|
if( !( data && length )) return EBADMEM; |
if( ! ipc_data_write_receive( & callid, length )) return EINVAL; |
* data = malloc( * length ); |
if( !( * data )) return ENOMEM; |
if( ERROR_OCCURRED( ipc_data_write_finalize( callid, * data, * length ))){ |
free( data ); |
return ERROR_CODE; |
} |
return EOK; |
} |
|
int data_reply( void * data, size_t data_length ){ |
size_t length; |
ipc_callid_t callid; |
|
if(( ! ipc_data_read_receive( & callid, & length )) |
|| ( length < data_length )){ |
return EINVAL; |
} |
return ipc_data_read_finalize( callid, data, data_length ); |
} |
|
/** @} |
*/ |