Lines Matching refs:trk

97     pmix_progress_tracker_t *trk = (pmix_progress_tracker_t*)cbdata;  in dummy_timeout_cb()  local
99 pmix_event_add(&trk->block, &long_timeout); in dummy_timeout_cb()
108 pmix_progress_tracker_t *trk = (pmix_progress_tracker_t*)t->t_arg; in progress_engine() local
110 while (trk->ev_active) { in progress_engine()
111 pmix_event_loop(trk->ev_base, PMIX_EVLOOP_ONCE); in progress_engine()
117 static void stop_progress_engine(pmix_progress_tracker_t *trk) in stop_progress_engine() argument
119 assert(trk->ev_active); in stop_progress_engine()
120 trk->ev_active = false; in stop_progress_engine()
124 pmix_event_base_loopexit(trk->ev_base); in stop_progress_engine()
126 pmix_thread_join(&trk->engine, NULL); in stop_progress_engine()
129 static int start_progress_engine(pmix_progress_tracker_t *trk) in start_progress_engine() argument
131 assert(!trk->ev_active); in start_progress_engine()
132 trk->ev_active = true; in start_progress_engine()
135 trk->engine.t_run = progress_engine; in start_progress_engine()
136 trk->engine.t_arg = trk; in start_progress_engine()
138 int rc = pmix_thread_start(&trk->engine); in start_progress_engine()
148 pmix_progress_tracker_t *trk; in pmix_progress_thread_init() local
161 PMIX_LIST_FOREACH(trk, &tracking, pmix_progress_tracker_t) { in pmix_progress_thread_init()
162 if (0 == strcmp(name, trk->name)) { in pmix_progress_thread_init()
164 ++trk->refcount; in pmix_progress_thread_init()
166 return trk->ev_base; in pmix_progress_thread_init()
170 trk = PMIX_NEW(pmix_progress_tracker_t); in pmix_progress_thread_init()
171 if (NULL == trk) { in pmix_progress_thread_init()
176 trk->name = strdup(name); in pmix_progress_thread_init()
177 if (NULL == trk->name) { in pmix_progress_thread_init()
179 PMIX_RELEASE(trk); in pmix_progress_thread_init()
183 if (NULL == (trk->ev_base = pmix_event_base_create())) { in pmix_progress_thread_init()
185 PMIX_RELEASE(trk); in pmix_progress_thread_init()
191 pmix_event_assign(&trk->block, trk->ev_base, -1, PMIX_EV_PERSIST, in pmix_progress_thread_init()
192 dummy_timeout_cb, trk); in pmix_progress_thread_init()
193 pmix_event_add(&trk->block, &long_timeout); in pmix_progress_thread_init()
196 PMIX_CONSTRUCT(&trk->engine, pmix_thread_t); in pmix_progress_thread_init()
197 trk->engine_constructed = true; in pmix_progress_thread_init()
198 if (PMIX_SUCCESS != (rc = start_progress_engine(trk))) { in pmix_progress_thread_init()
200 PMIX_RELEASE(trk); in pmix_progress_thread_init()
203 pmix_list_append(&tracking, &trk->super); in pmix_progress_thread_init()
205 return trk->ev_base; in pmix_progress_thread_init()
210 pmix_progress_tracker_t *trk; in pmix_progress_thread_stop() local
222 PMIX_LIST_FOREACH(trk, &tracking, pmix_progress_tracker_t) { in pmix_progress_thread_stop()
223 if (0 == strcmp(name, trk->name)) { in pmix_progress_thread_stop()
225 --trk->refcount; in pmix_progress_thread_stop()
228 if (trk->refcount > 0) { in pmix_progress_thread_stop()
233 if (trk->ev_active) { in pmix_progress_thread_stop()
234 stop_progress_engine(trk); in pmix_progress_thread_stop()
236 pmix_list_remove_item(&tracking, &trk->super); in pmix_progress_thread_stop()
237 PMIX_RELEASE(trk); in pmix_progress_thread_stop()
247 pmix_progress_tracker_t *trk; in pmix_progress_thread_finalize() local
259 PMIX_LIST_FOREACH(trk, &tracking, pmix_progress_tracker_t) { in pmix_progress_thread_finalize()
260 if (0 == strcmp(name, trk->name)) { in pmix_progress_thread_finalize()
262 if (trk->refcount > 0) { in pmix_progress_thread_finalize()
266 pmix_list_remove_item(&tracking, &trk->super); in pmix_progress_thread_finalize()
267 PMIX_RELEASE(trk); in pmix_progress_thread_finalize()
280 pmix_progress_tracker_t *trk; in pmix_progress_thread_pause() local
292 PMIX_LIST_FOREACH(trk, &tracking, pmix_progress_tracker_t) { in pmix_progress_thread_pause()
293 if (0 == strcmp(name, trk->name)) { in pmix_progress_thread_pause()
294 if (trk->ev_active) { in pmix_progress_thread_pause()
295 stop_progress_engine(trk); in pmix_progress_thread_pause()
307 pmix_progress_tracker_t *trk; in pmix_progress_thread_resume() local
319 PMIX_LIST_FOREACH(trk, &tracking, pmix_progress_tracker_t) { in pmix_progress_thread_resume()
320 if (0 == strcmp(name, trk->name)) { in pmix_progress_thread_resume()
321 if (trk->ev_active) { in pmix_progress_thread_resume()
325 return start_progress_engine(trk); in pmix_progress_thread_resume()