Code

Use plugin_thread_create() rather than pthread_create() in all plugins.
authorSebastian Harl <sh@tokkee.org>
Sun, 14 Oct 2012 15:52:39 +0000 (17:52 +0200)
committerSebastian Harl <sh@tokkee.org>
Sun, 14 Oct 2012 15:52:39 +0000 (17:52 +0200)
This function copies the plugin context from the calling thread to the new
thread. While this might not strictly be necessary in most/many cases, this
will make sure that any code within a plugin uses the same context
information, thus avoiding possible problems in the future.

12 files changed:
src/amqp.c
src/dns.c
src/email.c
src/exec.c
src/gmond.c
src/ipmi.c
src/network.c
src/pinba.c
src/ping.c
src/python.c
src/rrdtool.c
src/unixsock.c

index 30a85810139fd489d2e440ad5e39fce220d1bbec..db65791626c69c0faf6b9e8feff87269a8f29f95 100644 (file)
@@ -610,7 +610,7 @@ static int camqp_subscribe_init (camqp_config_t *conf) /* {{{ */
     tmp = subscriber_threads + subscriber_threads_num;
     memset (tmp, 0, sizeof (*tmp));
 
-    status = pthread_create (tmp, /* attr = */ NULL,
+    status = plugin_thread_create (tmp, /* attr = */ NULL,
             camqp_subscribe_thread, conf);
     if (status != 0)
     {
index 08a036924b77d07bf1b4e3a0ec818ca1291e26c8..fe3b672a21d844b2190c80e7b2f7bffd9adb9b50 100644 (file)
--- a/src/dns.c
+++ b/src/dns.c
@@ -286,7 +286,7 @@ static int dns_init (void)
        if (listen_thread_init != 0)
                return (-1);
 
-       status = pthread_create (&listen_thread, NULL, dns_child_loop,
+       status = plugin_thread_create (&listen_thread, NULL, dns_child_loop,
                        (void *) 0);
        if (status != 0)
        {
index 8fc5509f3e7e5ece33a15015b0ffa40fde6d6ede..787f39170b2fc7402b1b8ca20405c8136e2e2a00 100644 (file)
@@ -481,8 +481,8 @@ static void *open_connection (void __attribute__((unused)) *arg)
                        collectors[i] = (collector_t *)smalloc (sizeof (collector_t));
                        collectors[i]->socket = NULL;
 
-                       if (0 != (err = pthread_create (&collectors[i]->thread, &ptattr,
-                                                       collect, collectors[i]))) {
+                       if (0 != (err = plugin_thread_create (&collectors[i]->thread,
+                                                       &ptattr, collect, collectors[i]))) {
                                char errbuf[1024];
                                log_err ("pthread_create() failed: %s",
                                                sstrerror (errno, errbuf, sizeof (errbuf)));
@@ -555,7 +555,7 @@ static int email_init (void)
 {
        int err = 0;
 
-       if (0 != (err = pthread_create (&connector, NULL,
+       if (0 != (err = plugin_thread_create (&connector, NULL,
                                open_connection, NULL))) {
                char errbuf[1024];
                disabled = 1;
index 6dfdfe6a16b5ff357e689564cabcf3b9e3213053..da6e367d633dc3019849c65028c4ad89946dbb9f 100644 (file)
@@ -814,7 +814,7 @@ static int exec_read (void) /* {{{ */
 
     pthread_attr_init (&attr);
     pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
-    pthread_create (&t, &attr, exec_read_one, (void *) pl);
+    plugin_thread_create (&t, &attr, exec_read_one, (void *) pl);
   } /* for (pl) */
 
   return (0);
@@ -857,7 +857,7 @@ static int exec_notification (const notification_t *n, /* {{{ */
 
     pthread_attr_init (&attr);
     pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
-    pthread_create (&t, &attr, exec_notification_one, (void *) pln);
+    plugin_thread_create (&t, &attr, exec_notification_one, (void *) pln);
   } /* for (pl) */
 
   return (0);
index 3c746c48887c3e678d42e2417b3d11bd38a7b1ec..28be0920ccf51cd43731f9fd2e4549e780fe4ea5 100644 (file)
@@ -879,7 +879,7 @@ static int mc_receive_thread_start (void) /* {{{ */
 
   mc_receive_thread_loop = 1;
 
-  status = pthread_create (&mc_receive_thread_id, /* attr = */ NULL,
+  status = plugin_thread_create (&mc_receive_thread_id, /* attr = */ NULL,
       mc_receive_thread, /* args = */ NULL);
   if (status != 0)
   {
index 7eafea866240c9f790d9e5139a7eef6c096da1eb..fada5bdc3462a1d40396c9aa3fc4fe71f1dbe1e9 100644 (file)
@@ -669,7 +669,7 @@ static int c_ipmi_init (void)
 
   c_ipmi_active = 1;
 
-  status = pthread_create (&thread_id, /* attr = */ NULL, thread_main,
+  status = plugin_thread_create (&thread_id, /* attr = */ NULL, thread_main,
       /* user data = */ NULL);
   if (status != 0)
   {
index 59c2be7c034c773778cfa546e00c42c240285374..369da94d63c8253a3d5ca6b1567421653d1e8202 100644 (file)
@@ -3320,7 +3320,7 @@ static int network_init (void)
        if (dispatch_thread_running == 0)
        {
                int status;
-               status = pthread_create (&dispatch_thread_id,
+               status = plugin_thread_create (&dispatch_thread_id,
                                NULL /* no attributes */,
                                dispatch_thread,
                                NULL /* no argument */);
@@ -3340,7 +3340,7 @@ static int network_init (void)
        if (receive_thread_running == 0)
        {
                int status;
-               status = pthread_create (&receive_thread_id,
+               status = plugin_thread_create (&receive_thread_id,
                                NULL /* no attributes */,
                                receive_thread,
                                NULL /* no argument */);
index a6fd06fe2d56352a0a7e29cba18b394dd32559d2..48a2431d9cbabf6f1994d43f43e80c112e701237 100644 (file)
@@ -645,7 +645,7 @@ static int plugin_init (void) /* {{{ */
   if (collector_thread_running)
     return (0);
 
-  status = pthread_create (&collector_thread_id,
+  status = plugin_thread_create (&collector_thread_id,
       /* attrs = */ NULL,
       collector_thread,
       /* args = */ NULL);
index b536f42966639f4d7e3ca260e238b7944440294f..417a7ac7912f29ffbca634aa75863dc5cbb23dff 100644 (file)
@@ -361,7 +361,7 @@ static int start_thread (void) /* {{{ */
 
   ping_thread_loop = 1;
   ping_thread_error = 0;
-  status = pthread_create (&ping_thread_id, /* attr = */ NULL,
+  status = plugin_thread_create (&ping_thread_id, /* attr = */ NULL,
       ping_thread, /* arg = */ (void *) 0);
   if (status != 0)
   {
index 4a828b44c6352c6a3be8c5757b2cc6ddebafb96f..350bd14a34811a710c8d2245edeb1ff7cf017fe4 100644 (file)
@@ -922,7 +922,7 @@ static int cpy_init(void) {
        pthread_sigmask(SIG_BLOCK, &sigset, NULL);
        state = PyEval_SaveThread();
        if (do_interactive) {
-               if (pthread_create(&thread, NULL, cpy_interactive, NULL)) {
+               if (plugin_thread_create(&thread, NULL, cpy_interactive, NULL)) {
                        ERROR("python: Error creating thread for interactive interpreter.");
                }
        }
index 56a82d0321b8a875fdc1a8b5c93e312550388b77..cac5c21b0617bf3b20e2cc3b8bb9b1d480116ea2 100644 (file)
@@ -1195,7 +1195,7 @@ static int rrd_init (void)
 
        pthread_mutex_unlock (&cache_lock);
 
-       status = pthread_create (&queue_thread, /* attr = */ NULL,
+       status = plugin_thread_create (&queue_thread, /* attr = */ NULL,
                        rrd_queue_thread, /* args = */ NULL);
        if (status != 0)
        {
index d729477bbc54db999322dedfe581834dc9725c21..337978df444e17ac5dbccdbf88ad7d71330024fd 100644 (file)
@@ -355,7 +355,8 @@ static void *us_server_thread (void __attribute__((unused)) *arg)
                pthread_attr_init (&th_attr);
                pthread_attr_setdetachstate (&th_attr, PTHREAD_CREATE_DETACHED);
 
-               status = pthread_create (&th, &th_attr, us_handle_client, (void *) remote_fd);
+               status = plugin_thread_create (&th, &th_attr,
+                               us_handle_client, (void *) remote_fd);
                if (status != 0)
                {
                        char errbuf[1024];
@@ -434,7 +435,8 @@ static int us_init (void)
 
        loop = 1;
 
-       status = pthread_create (&listen_thread, NULL, us_server_thread, NULL);
+       status = plugin_thread_create (&listen_thread, NULL,
+                       us_server_thread, NULL);
        if (status != 0)
        {
                char errbuf[1024];