MINOR: task: provide 3 task_new_* wrappers to simplify the API
We'll need to improve the API to pass other arguments in the future, so
let's start to adapt better to the current use cases. task_new() is used:
- 18 times as task_new(tid_bit)
- 18 times as task_new(MAX_THREADS_MASK)
- 2 times with a single bit (in a loop)
- 1 in the debug code that uses a mask
This patch provides 3 new functions to achieve this:
- task_new_here() to create a task on the calling thread
- task_new_anywhere() to create a task to be run anywhere
- task_new_on() to create a task to run on a specific thread
The change is trivial and will allow us to later concentrate the
required adaptations to these 3 functions only. It's still possible
to call task_new() if needed but a comment was added to encourage the
use of the new ones instead. The debug code was not changed and still
uses it.
diff --git a/src/check.c b/src/check.c
index aedbed1..9ac66a5 100644
--- a/src/check.c
+++ b/src/check.c
@@ -1388,13 +1388,14 @@
int nbcheck, int srvpos)
{
struct task *t;
- unsigned long thread_mask = MAX_THREADS_MASK;
+ /* task for the check. Process-based checks exclusively run on thread 1. */
if (check->type == PR_O2_EXT_CHK)
- thread_mask = 1;
+ t = task_new_on(1);
+ else
+ t = task_new_anywhere();
- /* task for the check */
- if ((t = task_new(thread_mask)) == NULL) {
+ if (!t) {
ha_alert("Starting [%s:%s] check: out of memory.\n",
check->server->proxy->id, check->server->id);
return 0;