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

Function rt_thread_free_sig

src/signal.c:545–579  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

543}
544
545void rt_thread_free_sig(rt_thread_t tid)
546{
547 rt_base_t level;
548 struct siginfo_node *si_node;
549 rt_sighandler_t *sig_vectors;
550
551 level = rt_spin_lock_irqsave(&_thread_signal_lock);
552 si_node = (struct siginfo_node *)tid->si_list;
553 tid->si_list = RT_NULL;
554
555 sig_vectors = tid->sig_vectors;
556 tid->sig_vectors = RT_NULL;
557 rt_spin_unlock_irqrestore(&_thread_signal_lock, level);
558
559 if (si_node)
560 {
561 struct rt_slist_node *node;
562 struct rt_slist_node *node_to_free;
563
564 LOG_D("free signal info list");
565 node = &(si_node->list);
566 do
567 {
568 node_to_free = node;
569 node = node->next;
570 si_node = rt_slist_entry(node_to_free, struct siginfo_node, list);
571 rt_mp_free(si_node);
572 } while (node);
573 }
574
575 if (sig_vectors)
576 {
577 RT_KERNEL_FREE(sig_vectors);
578 }
579}
580
581/**
582 * @ingroup group_thread_management

Callers 2

rt_defunct_executeFunction · 0.85

Calls 3

rt_mp_freeFunction · 0.85
rt_spin_lock_irqsaveFunction · 0.70

Tested by

no test coverage detected