\r
\r
#include "cl_memtrack.h"\r
-#include <complib/cl_atomic.h>\r
\r
\r
cl_mem_tracker_t *gp_mem_tracker = NULL;\r
-atomic32_t g_mem_trk_ref = 0;\r
\r
\r
/*\r
cl_status_t status;\r
\r
if( gp_mem_tracker )\r
- {\r
- cl_atomic_inc( &g_mem_trk_ref );\r
return;\r
- }\r
\r
/* Allocate the memory tracker object. */\r
gp_mem_tracker = (cl_mem_tracker_t*)\r
return;\r
}\r
\r
- cl_atomic_inc( &g_mem_trk_ref );\r
-\r
cl_msg_out( "\n\n\n*** Memory tracker object address = %p ***\n\n\n",\r
gp_mem_tracker );\r
}\r
if( !gp_mem_tracker )\r
return;\r
\r
- if( cl_atomic_dec( &g_mem_trk_ref ) )\r
- return;\r
-\r
if( cl_qmap_count( &gp_mem_tracker->alloc_map ) )\r
{\r
/* There are still items in the list. Print them out. */\r
\r
/* Free the memory allocated for the memory tracker object. */\r
__cl_free_priv( gp_mem_tracker );\r
+ gp_mem_tracker = NULL;\r
}\r
\r
\r
\r
/* The global object manager. */\r
cl_obj_mgr_t *gp_obj_mgr = NULL;\r
-atomic32_t g_cl_obj_ref = 0;\r
\r
\r
\r
\r
/* See if the object manager has already been created. */\r
if( gp_obj_mgr )\r
- {\r
- cl_atomic_inc( &g_cl_obj_ref );\r
return CL_SUCCESS;\r
- }\r
\r
/* Allocate the object manager. */\r
gp_obj_mgr = cl_zalloc( sizeof( cl_obj_mgr_t ) );\r
cl_async_proc_construct( &gp_obj_mgr->async_proc_mgr );\r
cl_qpool_construct( &gp_obj_mgr->rel_pool );\r
\r
- cl_atomic_inc( &g_cl_obj_ref );\r
-\r
/* Initialize the spinlock. */\r
status = cl_spinlock_init( &gp_obj_mgr->lock );\r
if( status != CL_SUCCESS )\r
if( !gp_obj_mgr )\r
return;\r
\r
- /* See if this is the last call. */\r
- if( cl_atomic_dec( &g_cl_obj_ref ) )\r
- return;\r
-\r
/* Verify that all object's have been destroyed. */\r
for( p_list_item = cl_qlist_head( &gp_obj_mgr->obj_list );\r
p_list_item != cl_qlist_end( &gp_obj_mgr->obj_list );\r