summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/graph.y
diff options
context:
space:
mode:
Diffstat (limited to 'libglusterfs/src/graph.y')
0 files changed, 0 insertions, 0 deletions
.pool = event_pool; data.readfd = fd[1]; /* From the main thread register an event on the pipe fd[0], */ idx = event_register (event_pool, fd[0], poller_destroy_handler, &data, 1, 0); if (idx < 0) goto out; /* Enter the destroy mode first, set this before reconfiguring to 0 * threads, to prevent further reconfigure to thread count > 0. */ pthread_mutex_lock (&event_pool->mutex); { threadcount = event_pool->eventthreadcount; event_pool->destroy = 1; } pthread_mutex_unlock (&event_pool->mutex); ret = event_reconfigure_threads (event_pool, 0); if (ret < 0) goto out; /* Write something onto the write end of the pipe(fd[1]) so that * poll wakes up and calls the handler, poller_destroy_handler() */ pthread_mutex_lock (&event_pool->mutex); { /* Write to pipe(fd[1]) and then wait for 1 second or until * a poller thread that is dying, broadcasts. Make sure we * do not loop forever by limiting to 10 retries */ int retry = 0; while (event_pool->activethreadcount > 0 && (retry++ < (threadcount + 10))) { if (sys_write (fd[1], "dummy", 6) == -1) { break; } sleep_till.tv_sec = time (NULL) + 1; ret = pthread_cond_timedwait (&event_pool->cond,