aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/processing/processor.h
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-06-19 13:29:09 +0200
committerTobias Brunner <tobias@strongswan.org>2012-06-25 17:38:59 +0200
commit26d77eb3e61b2ff929dff96bbb53a5d22d76ce4f (patch)
tree5d5b7bd7bb2cd6a721c65b82f8ce2a8b3f4fdf22 /src/libstrongswan/processing/processor.h
parent7fec83af28f233a02b7ae08c6fd4de65799cb6b4 (diff)
downloadstrongswan-26d77eb3e61b2ff929dff96bbb53a5d22d76ce4f.tar.bz2
strongswan-26d77eb3e61b2ff929dff96bbb53a5d22d76ce4f.tar.xz
Centralized thread cancellation in processor_t
This ensures that no threads are active when plugins and the rest of the daemon are unloaded. callback_job_t was simplified a lot in the process as its main functionality is now contained in processor_t. The parent-child relationships were abandoned as these were only needed to simplify job cancellation.
Diffstat (limited to 'src/libstrongswan/processing/processor.h')
-rw-r--r--src/libstrongswan/processing/processor.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/libstrongswan/processing/processor.h b/src/libstrongswan/processing/processor.h
index 05e88a2cf..94860f5d3 100644
--- a/src/libstrongswan/processing/processor.h
+++ b/src/libstrongswan/processing/processor.h
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2012 Tobias Brunner
* Copyright (C) 2005-2007 Martin Willi
* Copyright (C) 2005 Jan Hutter
* Hochschule fuer Technik Rapperswil
@@ -78,14 +79,21 @@ struct processor_t {
*
* If the number of threads is smaller than number of currently running
* threads, thread count is decreased. Use 0 to disable the processor.
- * This call blocks if it decreases thread count until threads have
- * terminated, so make sure there are not too many blocking jobs.
+ *
+ * This call does not block and wait for threads to terminate if the number
+ * of threads is reduced. Instead use cancel() for that during shutdown.
*
* @param count number of threads to allocate
*/
void (*set_threads)(processor_t *this, u_int count);
/**
+ * Sets the number of threads to 0 and cancels all blocking jobs, then waits
+ * for all threads to be terminated.
+ */
+ void (*cancel)(processor_t *this);
+
+ /**
* Destroy a processor object.
*/
void (*destroy) (processor_t *processor);