Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4581 → Rev 4582

/branches/network/uspace/srv/net/socket/socket_client.c
38,7 → 38,7
 
#include <assert.h>
#include <async.h>
//#include <fibril_sync.h>
#include <fibril_sync.h>
 
#include <ipc/services.h>
 
62,11 → 62,11
services_t service;
int max_content;
int received;
// fibril_mutex_t receive_lock;
// fibril_condvar_t receive_signal;
fibril_mutex_t receive_lock;
fibril_condvar_t receive_signal;
int accepted;
// fibril_mutex_t accept_lock;
// fibril_condvar_t accept_signal;
fibril_mutex_t accept_lock;
fibril_condvar_t accept_signal;
};
 
INT_MAP_DECLARE( sockets, socket_t );
118,10 → 118,10
socket->service = service;
socket->received = 0;
socket->accepted = 0;
// fibril_mutex_initialize( & socket->receive_lock );
// fibril_condvar_initialize( & socket->receive_signal );
// fibril_mutex_initialize( & socket->accept_lock );
// fibril_condvar_initialize( & socket->accept_signal );
fibril_mutex_initialize( & socket->receive_lock );
fibril_condvar_initialize( & socket->receive_signal );
fibril_mutex_initialize( & socket->accept_lock );
fibril_condvar_initialize( & socket->accept_signal );
}
 
void socket_connection( ipc_callid_t iid, ipc_call_t * icall ){
142,10 → 142,10
ERROR_CODE = ENOTSOCK;
break;
}
// fibril_mutex_lock( & socket->receive_lock );
fibril_mutex_lock( & socket->receive_lock );
++ socket->received;
// fibril_condvar_signal( & socket->receive_signal );
// fibril_mutex_unlock( & socket->receive_lock );
fibril_condvar_signal( & socket->receive_signal );
fibril_mutex_unlock( & socket->receive_lock );
ERROR_CODE = EOK;
break;
case NET_SOCKET_ACCEPTED:
154,7 → 154,7
ERROR_CODE = ENOTSOCK;
break;
}
// fibril_mutex_lock( & socket->accept_lock );
fibril_mutex_lock( & socket->accept_lock );
new_socket = ( socket_ref ) malloc( sizeof( socket_t ));
if( ! new_socket ){
ERROR_CODE = ENOMEM;
165,8 → 165,8
break;
}
++ socket->accepted;
// fibril_condvar_signal( & socket->accept_signal );
// fibril_mutex_unlock( & socket->accept_lock );
fibril_condvar_signal( & socket->accept_signal );
fibril_mutex_unlock( & socket->accept_lock );
break;
/* case NET_SOCKET_MTU:
socket = sockets_find( socket_get_sockets(), SOCKET_GET_SOCKET_ID( & call ));
277,9 → 277,9
if( ! addrlen ) return NO_DATA;
socket = sockets_find( socket_get_sockets(), socket_id );
if( ! socket ) return ENOTSOCK;
// fibril_mutex_lock( & socket->accept_lock );
fibril_mutex_lock( & socket->accept_lock );
while( socket->accepted <= 0 ){
// fibril_condvar_wait( & socket->accept_signal, & socket->accept_lock );
fibril_condvar_wait( & socket->accept_signal, & socket->accept_lock );
}
message_id = async_send_3( socket->phone, NET_SOCKET_ACCEPT, socket->socket_id, 0, socket->service, NULL );
ipc_data_read_start( socket->phone, cliaddr, * addrlen );
287,7 → 287,7
if( result > 0 ){
-- socket->accepted;
}
// fibril_mutex_unlock( & socket->accept_lock );
fibril_mutex_unlock( & socket->accept_lock );
return ( int ) result;
}
 
335,9 → 335,9
if( ! datalength ) return NO_DATA;
socket = sockets_find( socket_get_sockets(), socket_id );
if( ! socket ) return ENOTSOCK;
// fibril_mutex_lock( & socket->receive_lock );
fibril_mutex_lock( & socket->receive_lock );
while( socket->received <= 0 ){
// fibril_condvar_wait( & socket->receive_signal, & socket->receive_lock );
fibril_condvar_wait( & socket->receive_signal, & socket->receive_lock );
}
message_id = async_send_3( socket->phone, NET_SOCKET_RECV, socket->socket_id, flags, socket->service, NULL );
ipc_data_read_start( socket->phone, data, datalength );
345,7 → 345,7
if( result > 0 ){
-- socket->received;
}
// fibril_mutex_unlock( & socket->receive_lock );
fibril_mutex_unlock( & socket->receive_lock );
return ( int ) result;
}
 
360,9 → 360,9
if( ! datalength ) return NO_DATA;
socket = sockets_find( socket_get_sockets(), socket_id );
if( ! socket ) return ENOTSOCK;
// fibril_mutex_lock( & socket->receive_lock );
fibril_mutex_lock( & socket->receive_lock );
while( socket->received <= 0 ){
// fibril_condvar_wait( & socket->receive_signal, & socket->receive_lock );
fibril_condvar_wait( & socket->receive_signal, & socket->receive_lock );
}
message_id = async_send_3( socket->phone, NET_SOCKET_RECVFROM, socket->socket_id, flags, socket->service, NULL );
if( ipc_data_read_start( socket->phone, fromaddr, * addrlen ) == EOK ){
372,7 → 372,7
if( result > 0 ){
-- socket->received;
}
// fibril_mutex_unlock( & socket->receive_lock );
fibril_mutex_unlock( & socket->receive_lock );
return ( int ) result;
}