123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #include <cds/cds.h>
- #include <cds/memory.h>
- #include <cds/sync.h>
- #include <cds/logger.h>
- #if 0
- typedef struct {
- int init_cnt;
- } init_data_t;
- static init_data_t *init = NULL;
- /* these functions are internal and thus are not presented in headers !*/
- int reference_counter_initialize();
- void reference_counter_cleanup();
-
- int cds_initialize()
- {
- int res = 0;
- /* initialization should be called from one process/thread
- * it is not synchronized because it is impossible ! */
- if (!init) {
- init = (init_data_t*)cds_malloc(sizeof(init_data_t));
- if (!init) return -1;
- init->init_cnt = 0;
- }
- if (init->init_cnt > 0) { /* already initialized */
- init->init_cnt++;
- return 0;
- }
- else {
- DEBUG_LOG("init the content\n");
-
- /* !!! put the real initialization here !!! */
- res = reference_counter_initialize();
- }
-
- if (res == 0) init->init_cnt++;
- return res;
- }
- void cds_cleanup()
- {
- if (init) {
- if (--init->init_cnt == 0) {
- DEBUG_LOG("cleaning the content\n");
-
- /* !!! put the real destruction here !!! */
- reference_counter_cleanup();
-
- cds_free(init);
- init = NULL;
- }
- }
- }
- #endif
|