From 2d73372f033c24864c9c5407760cf0434d0cddf2 Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko Date: Tue, 9 Jan 2018 17:06:22 +0300 Subject: [PATCH] machinarium: introduce machinarium_stat() --- sources/machinarium.h | 4 ++++ sources/machine_mgr.c | 9 +++++++++ sources/machine_mgr.h | 1 + sources/mm.c | 9 +++++++++ 4 files changed, 23 insertions(+) diff --git a/sources/machinarium.h b/sources/machinarium.h index dd1e6a4d..7d788466 100644 --- a/sources/machinarium.h +++ b/sources/machinarium.h @@ -44,6 +44,10 @@ machinarium_init(void); MACHINE_API void machinarium_free(void); +MACHINE_API void +machinarium_stat(int *count_machine, int *count_coroutine, + int *count_coroutine_cache); + /* machine control */ MACHINE_API int64_t diff --git a/sources/machine_mgr.c b/sources/machine_mgr.c index 4326d0be..449647cd 100644 --- a/sources/machine_mgr.c +++ b/sources/machine_mgr.c @@ -21,6 +21,15 @@ void mm_machinemgr_free(mm_machinemgr_t *mgr) pthread_spin_destroy(&mgr->lock); } +int mm_machinemgr_count(mm_machinemgr_t *mgr) +{ + int count; + pthread_spin_lock(&mgr->lock); + count = mgr->count; + pthread_spin_unlock(&mgr->lock); + return count; +} + void mm_machinemgr_add(mm_machinemgr_t *mgr, mm_machine_t *machine) { pthread_spin_lock(&mgr->lock); diff --git a/sources/machine_mgr.h b/sources/machine_mgr.h index 90ca3300..705897bb 100644 --- a/sources/machine_mgr.h +++ b/sources/machine_mgr.h @@ -19,6 +19,7 @@ struct mm_machinemgr void mm_machinemgr_init(mm_machinemgr_t*); void mm_machinemgr_free(mm_machinemgr_t*); +int mm_machinemgr_count(mm_machinemgr_t*); void mm_machinemgr_add(mm_machinemgr_t*, mm_machine_t*); void mm_machinemgr_delete(mm_machinemgr_t*, mm_machine_t*); mm_machine_t* diff --git a/sources/mm.c b/sources/mm.c index a7f88be7..c6137cdb 100644 --- a/sources/mm.c +++ b/sources/mm.c @@ -45,3 +45,12 @@ machinarium_free(void) mm_coroutine_cache_free(&machinarium.coroutine_cache); mm_tls_free(); } + +MACHINE_API void +machinarium_stat(int *count_machine, int *count_coroutine, + int *count_coroutine_cache) +{ + *count_machine = mm_machinemgr_count(&machinarium.machine_mgr); + *count_coroutine = 0; + *count_coroutine_cache = 0; +}