@@ -17,6 +17,9 @@ int z_impl_k_condvar_init(struct k_condvar *condvar)
17
17
{
18
18
z_waitq_init (& condvar -> wait_q );
19
19
z_object_init (condvar );
20
+
21
+ SYS_PORT_TRACING_OBJ_INIT (k_condvar , condvar , 0 );
22
+
20
23
return 0 ;
21
24
}
22
25
@@ -32,15 +35,23 @@ int z_vrfy_k_condvar_init(struct k_condvar *condvar)
32
35
int z_impl_k_condvar_signal (struct k_condvar * condvar )
33
36
{
34
37
k_spinlock_key_t key = k_spin_lock (& lock );
38
+
39
+ SYS_PORT_TRACING_OBJ_FUNC_ENTER (k_condvar , signal , condvar );
40
+
35
41
struct k_thread * thread = z_unpend_first_thread (& condvar -> wait_q );
36
42
37
43
if (thread != NULL ) {
44
+ SYS_PORT_TRACING_OBJ_FUNC_BLOCKING (k_condvar , signal , condvar , K_FOREVER );
45
+
38
46
arch_thread_return_value_set (thread , 0 );
39
47
z_ready_thread (thread );
40
48
z_reschedule (& lock , key );
41
49
} else {
42
50
k_spin_unlock (& lock , key );
43
51
}
52
+
53
+ SYS_PORT_TRACING_OBJ_FUNC_EXIT (k_condvar , signal , condvar , 0 );
54
+
44
55
return 0 ;
45
56
}
46
57
@@ -61,6 +72,8 @@ int z_impl_k_condvar_broadcast(struct k_condvar *condvar)
61
72
62
73
key = k_spin_lock (& lock );
63
74
75
+ SYS_PORT_TRACING_OBJ_FUNC_ENTER (k_condvar , broadcast , condvar );
76
+
64
77
/* wake up any threads that are waiting to write */
65
78
while ((pending_thread = z_unpend_first_thread (& condvar -> wait_q )) !=
66
79
NULL ) {
@@ -69,6 +82,8 @@ int z_impl_k_condvar_broadcast(struct k_condvar *condvar)
69
82
z_ready_thread (pending_thread );
70
83
}
71
84
85
+ SYS_PORT_TRACING_OBJ_FUNC_EXIT (k_condvar , broadcast , condvar , woken );
86
+
72
87
z_reschedule (& lock , key );
73
88
74
89
return woken ;
@@ -88,12 +103,16 @@ int z_impl_k_condvar_wait(struct k_condvar *condvar, struct k_mutex *mutex,
88
103
k_spinlock_key_t key ;
89
104
int ret ;
90
105
106
+ SYS_PORT_TRACING_OBJ_FUNC_ENTER (k_condvar , wait , condvar );
107
+
91
108
key = k_spin_lock (& lock );
92
109
k_mutex_unlock (mutex );
93
110
94
111
ret = z_pend_curr (& lock , key , & condvar -> wait_q , timeout );
95
112
k_mutex_lock (mutex , K_FOREVER );
96
113
114
+ SYS_PORT_TRACING_OBJ_FUNC_EXIT (k_condvar , wait , condvar , ret );
115
+
97
116
return ret ;
98
117
}
99
118
#ifdef CONFIG_USERSPACE
0 commit comments