/*\r
* Add a dependent relationship between two objects.\r
*/\r
-void\r
+cl_status_t\r
cl_obj_insert_rel(\r
IN cl_obj_rel_t * const p_rel,\r
IN cl_obj_t * const p_parent_obj,\r
IN cl_obj_t * const p_child_obj )\r
{\r
+ cl_status_t status;\r
CL_ASSERT( p_rel && p_parent_obj && p_child_obj );\r
\r
cl_spinlock_acquire( &p_parent_obj->lock );\r
- cl_obj_insert_rel_parent_locked( p_rel, p_parent_obj, p_child_obj );\r
+ status = cl_obj_insert_rel_parent_locked( p_rel, p_parent_obj, p_child_obj );\r
cl_spinlock_release( &p_parent_obj->lock );\r
+ return status;\r
}\r
\r
\r
/*\r
* Add a dependent relationship between two objects.\r
*/\r
-void\r
+cl_status_t\r
cl_obj_insert_rel_parent_locked(\r
IN cl_obj_rel_t * const p_rel,\r
IN cl_obj_t * const p_parent_obj,\r
{\r
CL_ASSERT( p_rel && p_parent_obj && p_child_obj );\r
\r
+ if(p_parent_obj->state != CL_INITIALIZED)\r
+ return CL_INVALID_STATE;\r
/* The child object needs to maintain a reference on the parent. */\r
cl_obj_ref( p_parent_obj );\r
cl_obj_ref( p_child_obj );\r
(cl_list_item_t*)&p_rel->pool_item );\r
\r
cl_spinlock_release( &p_child_obj->lock );\r
+ return CL_SUCCESS;\r
}\r
\r
\r
*\r
* SYNOPSIS\r
*/\r
-CL_EXPORT void CL_API\r
+CL_EXPORT cl_status_t CL_API\r
cl_obj_insert_rel(\r
IN cl_obj_rel_t * const p_rel,\r
IN cl_obj_t * const p_parent_obj,\r
*\r
* SYNOPSIS\r
*/\r
-CL_EXPORT void CL_API\r
+CL_EXPORT cl_status_t CL_API\r
cl_obj_insert_rel_parent_locked(\r
IN cl_obj_rel_t * const p_rel,\r
IN cl_obj_t * const p_parent_obj,\r