Lines Matching full:rp
84 RADIX_PROCESS *rp; member
148 static int RADIX_PROCESS_init(RADIX_PROCESS *rp, size_t node_idx, size_t process_idx) in RADIX_PROCESS_init() argument
153 if (!TEST_ptr(rp->gm = ossl_crypto_mutex_new())) in RADIX_PROCESS_init()
157 if (!TEST_ptr(rp->objs = lh_RADIX_OBJ_new(RADIX_OBJ_hash, RADIX_OBJ_cmp))) in RADIX_PROCESS_init()
160 if (!TEST_ptr(rp->threads = sk_RADIX_THREAD_new(NULL))) in RADIX_PROCESS_init()
163 rp->keylog_out = NULL; in RADIX_PROCESS_init()
166 && !TEST_ptr(rp->keylog_out = BIO_new_file(keylog_path, "a"))) in RADIX_PROCESS_init()
169 rp->node_idx = node_idx; in RADIX_PROCESS_init()
170 rp->process_idx = process_idx; in RADIX_PROCESS_init()
171 rp->done_join_all_threads = 0; in RADIX_PROCESS_init()
172 rp->next_thread_idx = 0; in RADIX_PROCESS_init()
176 lh_RADIX_OBJ_free(rp->objs); in RADIX_PROCESS_init()
177 rp->objs = NULL; in RADIX_PROCESS_init()
178 ossl_crypto_mutex_free(&rp->gm); in RADIX_PROCESS_init()
309 static void RADIX_PROCESS_report_state(RADIX_PROCESS *rp, BIO *bio, in RADIX_PROCESS_report_state() argument
313 rp->node_idx, rp->process_idx); in RADIX_PROCESS_report_state()
316 rp->next_thread_idx); in RADIX_PROCESS_report_state()
318 (unsigned long long)ossl_time2ms(rp->time_slip)); in RADIX_PROCESS_report_state()
321 lh_RADIX_OBJ_doall_arg(rp->objs, report_obj, bio); in RADIX_PROCESS_report_state()
324 RADIX_THREAD_report_state(sk_RADIX_THREAD_value(rp->threads, 0), in RADIX_PROCESS_report_state()
331 static void RADIX_PROCESS_report_thread_results(RADIX_PROCESS *rp, BIO *bio) in RADIX_PROCESS_report_thread_results() argument
340 for (i = 1; i < (size_t)sk_RADIX_THREAD_num(rp->threads); ++i) { in RADIX_PROCESS_report_thread_results()
341 rt = sk_RADIX_THREAD_value(rp->threads, i); in RADIX_PROCESS_report_thread_results()
351 rp->node_idx, rp->process_idx, rt->thread_idx, rt->thread_idx); in RADIX_PROCESS_report_thread_results()
372 static int RADIX_PROCESS_join_all_threads(RADIX_PROCESS *rp, int *testresult) in RADIX_PROCESS_join_all_threads() argument
379 if (rp->done_join_all_threads) { in RADIX_PROCESS_join_all_threads()
380 *testresult = rp->thread_composite_testresult; in RADIX_PROCESS_join_all_threads()
384 for (i = 1; i < (size_t)sk_RADIX_THREAD_num(rp->threads); ++i) { in RADIX_PROCESS_join_all_threads()
385 rt = sk_RADIX_THREAD_value(rp->threads, i); in RADIX_PROCESS_join_all_threads()
396 rp->thread_composite_testresult = composite_testresult; in RADIX_PROCESS_join_all_threads()
398 rp->done_join_all_threads = 1; in RADIX_PROCESS_join_all_threads()
400 RADIX_PROCESS_report_thread_results(rp, bio_err); in RADIX_PROCESS_join_all_threads()
412 static void RADIX_PROCESS_cleanup(RADIX_PROCESS *rp) in RADIX_PROCESS_cleanup() argument
416 assert(rp->done_join_all_threads); in RADIX_PROCESS_cleanup()
418 for (i = 0; i < (size_t)sk_RADIX_THREAD_num(rp->threads); ++i) in RADIX_PROCESS_cleanup()
419 RADIX_THREAD_free(sk_RADIX_THREAD_value(rp->threads, i)); in RADIX_PROCESS_cleanup()
421 sk_RADIX_THREAD_free(rp->threads); in RADIX_PROCESS_cleanup()
422 rp->threads = NULL; in RADIX_PROCESS_cleanup()
424 lh_RADIX_OBJ_doall(rp->objs, cleanup_one); in RADIX_PROCESS_cleanup()
425 lh_RADIX_OBJ_free(rp->objs); in RADIX_PROCESS_cleanup()
426 rp->objs = NULL; in RADIX_PROCESS_cleanup()
428 BIO_free_all(rp->keylog_out); in RADIX_PROCESS_cleanup()
429 rp->keylog_out = NULL; in RADIX_PROCESS_cleanup()
430 ossl_crypto_mutex_free(&rp->gm); in RADIX_PROCESS_cleanup()
433 static RADIX_OBJ *RADIX_PROCESS_get_obj(RADIX_PROCESS *rp, const char *name) in RADIX_PROCESS_get_obj() argument
438 return lh_RADIX_OBJ_retrieve(rp->objs, &key); in RADIX_PROCESS_get_obj()
441 static int RADIX_PROCESS_set_obj(RADIX_PROCESS *rp, in RADIX_PROCESS_set_obj() argument
449 existing = RADIX_PROCESS_get_obj(rp, name); in RADIX_PROCESS_set_obj()
454 lh_RADIX_OBJ_delete(rp->objs, existing); in RADIX_PROCESS_set_obj()
460 lh_RADIX_OBJ_insert(rp->objs, obj); in RADIX_PROCESS_set_obj()
467 static int RADIX_PROCESS_set_ssl(RADIX_PROCESS *rp, const char *name, SSL *ssl) in RADIX_PROCESS_set_ssl() argument
474 if (!TEST_true(RADIX_PROCESS_set_obj(rp, name, obj))) { in RADIX_PROCESS_set_ssl()
482 static SSL *RADIX_PROCESS_get_ssl(RADIX_PROCESS *rp, const char *name) in RADIX_PROCESS_get_ssl() argument
484 RADIX_OBJ *obj = RADIX_PROCESS_get_obj(rp, name); in RADIX_PROCESS_get_ssl()
492 static RADIX_THREAD *RADIX_THREAD_new(RADIX_PROCESS *rp) in RADIX_THREAD_new() argument
496 if (!TEST_ptr(rp) in RADIX_THREAD_new()
500 rt->rp = rp; in RADIX_THREAD_new()
509 if (!TEST_true(sk_RADIX_THREAD_push(rp->threads, rt))) { in RADIX_THREAD_new()
514 rt->thread_idx = rp->next_thread_idx++; in RADIX_THREAD_new()
515 assert(rt->thread_idx + 1 == (size_t)sk_RADIX_THREAD_num(rp->threads)); in RADIX_THREAD_new()
628 #define RP() (&radix_process) macro
635 ossl_crypto_mutex_lock(RP()->gm); in get_time()
636 time_slip = RP()->time_slip; in get_time()
637 ossl_crypto_mutex_unlock(RP()->gm); in get_time()
644 ossl_crypto_mutex_lock(RP()->gm); in radix_skip_time()
645 RP()->time_slip = ossl_time_add(RP()->time_slip, t); in radix_skip_time()
646 ossl_crypto_mutex_unlock(RP()->gm); in radix_skip_time()
657 lh_RADIX_OBJ_doall(RP()->objs, per_op_tick_obj); in do_per_op()
826 ossl_crypto_mutex_lock(RP()->gm); in DEF_FUNC()
828 lh_RADIX_OBJ_doall(RP()->objs, cleanup_one); in DEF_FUNC()
829 lh_RADIX_OBJ_flush(RP()->objs); in DEF_FUNC()
836 ossl_crypto_mutex_unlock(RP()->gm); in DEF_FUNC()