Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4721 → Rev 4722

/branches/network/uspace/srv/net/modules.c
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 );
}
 
/** @}
*/