return 0;
}
+static void remove_csw_element_from_waiting_list(struct proc_info* pi, guint64 state)
+{
+ GList *iterator = transition_context.waitings;
+
+ while (iterator != NULL) {
+ struct change_state_wait *csw = (struct change_state_wait *)iterator->data;
+ if (csw->pi->pid == pi->pid && csw->state == state) {
+ transition_context.waitings = g_list_remove_link(transition_context.waitings, iterator);
+ free(g_steal_pointer(&iterator->data));
+ g_list_free(iterator);
+ return;
+ }
+ iterator = g_list_next(iterator);
+ }
+}
+
void remove_change_state_wait(pid_t pid, guint64 state)
{
struct proc_info *pi = NULL;
_D("pid=%d(%s) removed csw for %#"PRIx64, pi->pid, pi->comm, state);
pi->state_bitmap &= ~state;
+ remove_csw_element_from_waiting_list(pi, state);
if (pi->state_bitmap == 0) {
proc_list = g_list_remove_link(proc_list, l);
free(g_steal_pointer(&l->data));