* between destruction and AL callbacks (PnP, Query, Destruction).\r
* The lock provides protection\r
*/\r
- cl_mutex_acquire( &p_adapter->mutex );\r
+ KeWaitForMutexObject(\r
+ &p_adapter->mutex, Executive, KernelMode, FALSE, NULL );\r
cl_obj_lock( &p_adapter->obj );\r
p_adapter->state = IB_PNP_PORT_REMOVE;\r
\r
\r
cl_obj_unlock( &p_adapter->obj );\r
\r
- cl_mutex_release( &p_adapter->mutex );\r
+ KeReleaseMutex( &p_adapter->mutex, FALSE );\r
\r
cl_obj_destroy( &p_adapter->obj );\r
\r
cl_spinlock_construct( &p_adapter->send_stat_lock );\r
cl_spinlock_construct( &p_adapter->recv_stat_lock );\r
cl_qpool_construct( &p_adapter->item_pool );\r
- cl_mutex_construct( &p_adapter->mutex );\r
+ KeInitializeMutex( &p_adapter->mutex, 0 );\r
cl_vector_construct( &p_adapter->ip_vector );\r
\r
cl_perf_construct( &p_adapter->perf );\r
return IB_ERROR;\r
}\r
\r
- cl_status = cl_mutex_init( &p_adapter->mutex );\r
- if( cl_status != CL_SUCCESS )\r
- {\r
- IPOIB_TRACE_EXIT( IPOIB_DBG_ERROR,\r
- ("cl_mutex_init returned %s\n", cl_status_text[cl_status]) );\r
- return IB_ERROR;\r
- }\r
\r
/* We manually manage the size and capacity of the vector. */\r
cl_status = cl_vector_init( &p_adapter->ip_vector, 0,\r
cl_qpool_destroy( &p_adapter->item_pool );\r
cl_spinlock_destroy( &p_adapter->recv_stat_lock );\r
cl_spinlock_destroy( &p_adapter->send_stat_lock );\r
- cl_mutex_destroy( &p_adapter->mutex );\r
cl_obj_deinit( p_obj );\r
\r
cl_perf_destroy( &p_adapter->perf, TRUE );\r
CL_ASSERT( p_adapter );\r
\r
/* Synchronize with destruction */\r
- cl_mutex_acquire( &p_adapter->mutex );\r
+ KeWaitForMutexObject(\r
+ &p_adapter->mutex, Executive, KernelMode, FALSE, NULL );\r
cl_obj_lock( &p_adapter->obj );\r
old_state = p_adapter->state;\r
cl_obj_unlock( &p_adapter->obj );\r
if( old_state == IB_PNP_PORT_REMOVE )\r
{\r
- cl_mutex_release( &p_adapter->mutex );\r
+ KeReleaseMutex( &p_adapter->mutex, FALSE );\r
IPOIB_TRACE_EXIT( IPOIB_DBG_PNP,\r
("Aborting - Adapter destroying.\n") );\r
return IB_NOT_DONE;\r
break;\r
}\r
\r
- cl_mutex_release( &p_adapter->mutex );\r
+ KeReleaseMutex( &p_adapter->mutex, FALSE );\r
\r
IPOIB_EXIT( IPOIB_DBG_PNP );\r
return status;\r
p_adapter = PARENT_STRUCT( context, ipoib_adapter_t, obj );\r
\r
/* Synchronize with destruction */\r
- cl_mutex_acquire( &p_adapter->mutex );\r
+ KeWaitForMutexObject(\r
+ &p_adapter->mutex, Executive, KernelMode, FALSE, NULL );\r
\r
cl_obj_lock( &p_adapter->obj );\r
\r
/* Dereference the adapter since the previous registration is now gone. */\r
cl_obj_deref( &p_adapter->obj );\r
\r
- cl_mutex_release( &p_adapter->mutex );\r
+ KeReleaseMutex( &p_adapter->mutex, FALSE );\r
\r
IPOIB_EXIT( IPOIB_DBG_INIT );\r
}\r