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; |
} |
|