perl plugin: Added debugging output to display the ithread behavior.
[collectd.git] / src / perl.c
index 889ab56..fbbe591 100644 (file)
@@ -91,6 +91,11 @@ typedef struct {
        c_ithread_t *head;
        c_ithread_t *tail;
 
+#if COLLECT_DEBUG
+       /* some usage stats */
+       int number_of_threads;
+#endif /* COLLECT_DEBUG */
+
        pthread_mutex_t mutex;
 } c_ithread_list_t;
 
@@ -749,6 +754,10 @@ static c_ithread_t *c_ithread_create (PerlInterpreter *base)
                ? NULL
                : perl_clone (base, CLONEf_KEEP_PTR_TABLE);
 
+#if COLLECT_DEBUG
+       ++perl_threads->number_of_threads;
+#endif /* COLLECT_DEBUG */
+
        t->next = NULL;
 
        if (NULL == perl_threads->tail) {
@@ -784,6 +793,9 @@ static int perl_init (void)
 
                aTHX = t->interp;
        }
+
+       log_debug ("perl_init: c_ithread: interp = %p (active threads: %i)\n",
+                       aTHX, perl_threads->number_of_threads);
        return pplugin_call_all (aTHX_ PLUGIN_INIT);
 } /* static int perl_init (void) */
 
@@ -803,6 +815,9 @@ static int perl_read (void)
 
                aTHX = t->interp;
        }
+
+       log_debug ("perl_read: c_ithread: interp = %p (active threads: %i)\n",
+                       aTHX, perl_threads->number_of_threads);
        return pplugin_call_all (aTHX_ PLUGIN_READ);
 } /* static int perl_read (void) */
 
@@ -822,6 +837,9 @@ static int perl_write (const data_set_t *ds, const value_list_t *vl)
 
                aTHX = t->interp;
        }
+
+       log_debug ("perl_write: c_ithread: interp = %p (active threads: %i)\n",
+                       aTHX, perl_threads->number_of_threads);
        return pplugin_call_all (aTHX_ PLUGIN_WRITE, ds, vl);
 } /* static int perl_write (const data_set_t *, const value_list_t *) */
 
@@ -869,6 +887,9 @@ static int perl_shutdown (void)
                aTHX = t->interp;
        }
 
+       log_debug ("perl_shutdown: c_ithread: interp = %p (active threads: %i)\n",
+                       aTHX, perl_threads->number_of_threads);
+
        plugin_unregister_log ("perl");
        plugin_unregister_init ("perl");
        plugin_unregister_read ("perl");