Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4504 → Rev 4505

/branches/network/uspace/srv/net/structures/packet/packet_remote.c
36,6 → 36,7
*/
 
#include <async.h>
#include <errno.h>
 
#include <ipc/ipc.h>
#include <sys/mman.h>
45,6 → 46,7
 
#include "packet.h"
#include "packet_client.h"
#include "packet_header.h"
#include "packet_messages.h"
 
/** Obtains the packet from the packet server as the shared memory block.
63,12 → 65,17
ERROR_DECLARE;
 
unsigned int size;
packet_t next;
 
if( ! packet ) return EINVAL;
* packet = pm_find( packet_id );
if( * packet ) return EOK;
ERROR_PROPAGATE( async_req_1_1( phone, NET_PACKET_GET_SIZE, packet_id, & size ));
return packet_return( phone, packet, packet_id, size );
if( !( * packet )){
ERROR_PROPAGATE( async_req_1_1( phone, NET_PACKET_GET_SIZE, packet_id, & size ));
ERROR_PROPAGATE( packet_return( phone, packet, packet_id, size ));
}
if(( ** packet ).next ){
return packet_translate( phone, & next, ( ** packet ).next );
}else return EOK;
}
 
int packet_return( int phone, packet_ref packet, packet_id_t packet_id, size_t size ){
97,10 → 104,15
unsigned int size;
packet_t packet;
 
if( ERROR_OCCURRED( async_req_4_2( phone, NET_PACKET_CREATE_4, max_content, addr_len, max_prefix, max_suffix, ( ipcarg_t * ) & packet_id, & size ))
|| ERROR_OCCURRED( packet_return( phone, & packet, packet_id, size ))){
if( ERROR_OCCURRED( async_req_4_2( phone, NET_PACKET_CREATE_4, max_content, addr_len, max_prefix, max_suffix, ( ipcarg_t * ) & packet_id, & size ))){
return NULL;
}
packet = pm_find( packet_id );
if( ! packet ){
if( ERROR_OCCURRED( packet_return( phone, & packet, packet_id, size ))){
return NULL;
}
}
return packet;
}
 
111,10 → 123,15
unsigned int size;
packet_t packet;
 
if( ERROR_OCCURRED( async_req_1_2( phone, NET_PACKET_CREATE_1, content, ( ipcarg_t * ) & packet_id, & size ))
|| ERROR_OCCURRED( packet_return( phone, & packet, packet_id, size ))){
if( ERROR_OCCURRED( async_req_1_2( phone, NET_PACKET_CREATE_1, content, ( ipcarg_t * ) & packet_id, & size ))){
return NULL;
}
packet = pm_find( packet_id );
if( ! packet ){
if( ERROR_OCCURRED( packet_return( phone, & packet, packet_id, size ))){
return NULL;
}
}
return packet;
}