MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / _object_node_delete

Function _object_node_delete

components/lwp/lwp_pid.c:489–538  ·  view source on GitHub ↗

* @brief Delete a node from the user object list of a lightweight process * * @param[in,out] lwp The lightweight process structure whose object list needs updating * @param[in] node The node to be deleted from the LWP's object list * * @return rt_err_t Returns 0 on success, or -1 on failure */

Source from the content-addressed store, hash-verified

487 * @return rt_err_t Returns 0 on success, or -1 on failure
488 */
489static rt_err_t _object_node_delete(struct rt_lwp *lwp, struct lwp_avl_struct *node)
490{
491 rt_err_t ret = -1;
492 rt_object_t object;
493
494 if (!lwp || !node)
495 {
496 return ret;
497 }
498 object = (rt_object_t)node->avl_key;
499 object->lwp_ref_count--;
500 if (object->lwp_ref_count == 0)
501 {
502 /* remove from kernel object list */
503 switch (object->type)
504 {
505 case RT_Object_Class_Semaphore:
506 ret = rt_sem_delete((rt_sem_t)object);
507 break;
508 case RT_Object_Class_Mutex:
509 ret = rt_mutex_delete((rt_mutex_t)object);
510 break;
511 case RT_Object_Class_Event:
512 ret = rt_event_delete((rt_event_t)object);
513 break;
514 case RT_Object_Class_MailBox:
515 ret = rt_mb_delete((rt_mailbox_t)object);
516 break;
517 case RT_Object_Class_MessageQueue:
518 ret = rt_mq_delete((rt_mq_t)object);
519 break;
520 case RT_Object_Class_Timer:
521 ret = rt_timer_delete((rt_timer_t)object);
522 break;
523 case RT_Object_Class_Custom:
524 ret = rt_custom_object_destroy(object);
525 break;
526 default:
527 LOG_E("input object type(%d) error", object->type);
528 break;
529 }
530 }
531 else
532 {
533 ret = 0;
534 }
535 lwp_avl_remove(node, &lwp->object_root);
536 rt_free(node);
537 return ret;
538}
539
540/**
541 * @brief Delete an object from the user object list of a lightweight process

Callers 2

lwp_user_object_deleteFunction · 0.85
lwp_user_object_clearFunction · 0.85

Calls 9

rt_sem_deleteFunction · 0.85
rt_mutex_deleteFunction · 0.85
rt_event_deleteFunction · 0.85
rt_mb_deleteFunction · 0.85
rt_mq_deleteFunction · 0.85
rt_timer_deleteFunction · 0.85
rt_custom_object_destroyFunction · 0.85
lwp_avl_removeFunction · 0.85
rt_freeFunction · 0.85

Tested by

no test coverage detected