diff --git a/include/proto/applet.h b/include/proto/applet.h
index 766fc92..a6f2633 100644
--- a/include/proto/applet.h
+++ b/include/proto/applet.h
@@ -50,7 +50,7 @@
 {
 	appctx->st0 = appctx->st1 = appctx->st2 = 0;
 	appctx->io_release = NULL;
-	appctx->process_mask = thread_mask;
+	appctx->thread_mask = thread_mask;
 	appctx->state = APPLET_SLEEPING;
 }
 
diff --git a/include/proto/fd.h b/include/proto/fd.h
index 72af70f..e240f5c 100644
--- a/include/proto/fd.h
+++ b/include/proto/fd.h
@@ -404,7 +404,7 @@
 	fdtab[fd].linger_risk = 0;
 	fdtab[fd].cloned = 0;
 	fdtab[fd].cache = 0;
-	fdtab[fd].process_mask = thread_mask;
+	fdtab[fd].thread_mask = thread_mask;
 	SPIN_UNLOCK(FD_LOCK, &fdtab[fd].lock);
 
 	SPIN_LOCK(FDTAB_LOCK, &fdtab_lock);
diff --git a/include/proto/task.h b/include/proto/task.h
index cb98fef..6a89cd9 100644
--- a/include/proto/task.h
+++ b/include/proto/task.h
@@ -127,11 +127,12 @@
 	return t;
 }
 
+/* change the thread affinity of a task to <thread_mask> */
 static inline void task_set_affinity(struct task *t, unsigned long thread_mask)
 {
-
-	t->process_mask = thread_mask;
+	t->thread_mask = thread_mask;
 }
+
 /*
  * Unlink the task from the wait queue, and possibly update the last_timer
  * pointer. A pointer to the task itself is returned. The task *must* already
@@ -202,7 +203,7 @@
 	t->wq.node.leaf_p = NULL;
 	t->rq.node.leaf_p = NULL;
 	t->pending_state = t->state = TASK_SLEEPING;
-	t->process_mask = thread_mask;
+	t->thread_mask = thread_mask;
 	t->nice = 0;
 	t->calls = 0;
 	t->expire = TICK_ETERNITY;
diff --git a/include/types/applet.h b/include/types/applet.h
index b56c563..1c469a5 100644
--- a/include/types/applet.h
+++ b/include/types/applet.h
@@ -67,7 +67,7 @@
 	                                               if the command is terminated or the session released */
 	int cli_severity_output;        /* used within the cli_io_handler to format severity output of informational feedback */
 	struct buffer_wait buffer_wait; /* position in the list of objects waiting for a buffer */
-	unsigned long process_mask;     /* mask of thread IDs authorized to process the applet */
+	unsigned long thread_mask;      /* mask of thread IDs authorized to process the applet */
 
 	union {
 		struct {
diff --git a/include/types/fd.h b/include/types/fd.h
index e196aec..2da6599 100644
--- a/include/types/fd.h
+++ b/include/types/fd.h
@@ -94,7 +94,7 @@
 struct fdtab {
 	void (*iocb)(int fd);                /* I/O handler */
 	void *owner;                         /* the connection or listener associated with this fd, NULL if closed */
-	unsigned long process_mask;          /* mask of thread IDs authorized to process the task */
+	unsigned long thread_mask;           /* mask of thread IDs authorized to process the task */
 #ifdef USE_THREAD
 	HA_SPINLOCK_T lock;
 #endif
diff --git a/include/types/task.h b/include/types/task.h
index 799e6c5..236324d 100644
--- a/include/types/task.h
+++ b/include/types/task.h
@@ -72,7 +72,7 @@
 	void *context;			/* the task's context */
 	struct eb32_node wq;		/* ebtree node used to hold the task in the wait queue */
 	int expire;			/* next expiration date for this task, in ticks */
-	unsigned long process_mask;	/* mask of thread IDs authorized to process the task */
+	unsigned long thread_mask;	/* mask of thread IDs authorized to process the task */
 };
 
 /*
diff --git a/src/applet.c b/src/applet.c
index 427062e..47f30c4 100644
--- a/src/applet.c
+++ b/src/applet.c
@@ -43,7 +43,7 @@
 	curr = LIST_NEXT(&applet_active_queue, typeof(curr), runq);
 	while (&curr->runq != &applet_active_queue) {
 		next = LIST_NEXT(&curr->runq, typeof(next), runq);
-		if (curr->process_mask & tid_bit) {
+		if (curr->thread_mask & tid_bit) {
 			LIST_DEL(&curr->runq);
 			curr->state = APPLET_RUNNING;
 			LIST_ADDQ(&applet_cur_queue, &curr->runq);
diff --git a/src/ev_epoll.c b/src/ev_epoll.c
index d26c3a2..65e5164 100644
--- a/src/ev_epoll.c
+++ b/src/ev_epoll.c
@@ -136,7 +136,7 @@
 		unsigned int e = epoll_events[count].events;
 		fd = epoll_events[count].data.fd;
 
-		if (!fdtab[fd].owner || !(fdtab[fd].process_mask & tid_bit))
+		if (!fdtab[fd].owner || !(fdtab[fd].thread_mask & tid_bit))
 			continue;
 
 		/* it looks complicated but gcc can optimize it away when constants
diff --git a/src/ev_kqueue.c b/src/ev_kqueue.c
index 2ae2774..00dc965 100644
--- a/src/ev_kqueue.c
+++ b/src/ev_kqueue.c
@@ -122,7 +122,7 @@
 		unsigned int n = 0;
 		fd = kev[count].ident;
 
-		if (!fdtab[fd].owner || !(fdtab[fd].process_mask & tid_bit))
+		if (!fdtab[fd].owner || !(fdtab[fd].thread_mask & tid_bit))
 			continue;
 
 		if (kev[count].filter ==  EVFILT_READ) {
diff --git a/src/ev_poll.c b/src/ev_poll.c
index f7632b6..edeffa8 100644
--- a/src/ev_poll.c
+++ b/src/ev_poll.c
@@ -112,7 +112,7 @@
 
 		for (count = 0, fd = fds * 8*sizeof(**fd_evts); count < 8*sizeof(**fd_evts) && fd < maxfd; count++, fd++) {
 
-			if (!fdtab[fd].owner || !(fdtab[fd].process_mask & tid_bit))
+			if (!fdtab[fd].owner || !(fdtab[fd].thread_mask & tid_bit))
 				continue;
 
 			sr = (rn >> count) & 1;
diff --git a/src/ev_select.c b/src/ev_select.c
index 4f5a2d1..5dad408 100644
--- a/src/ev_select.c
+++ b/src/ev_select.c
@@ -141,7 +141,7 @@
 			/* if we specify read first, the accepts and zero reads will be
 			 * seen first. Moreover, system buffers will be flushed faster.
 			 */
-			if (!fdtab[fd].owner || !(fdtab[fd].process_mask & tid_bit))
+			if (!fdtab[fd].owner || !(fdtab[fd].thread_mask & tid_bit))
 				continue;
 
 			if (FD_ISSET(fd, tmp_evts[DIR_RD]))
diff --git a/src/fd.c b/src/fd.c
index ea5d683..e8419aa 100644
--- a/src/fd.c
+++ b/src/fd.c
@@ -202,7 +202,7 @@
 	fdtab[fd].owner = NULL;
 	fdtab[fd].updated = 0;
 	fdtab[fd].new = 0;
-	fdtab[fd].process_mask = 0;
+	fdtab[fd].thread_mask = 0;
 	if (do_close)
 		close(fd);
 	SPIN_UNLOCK(FD_LOCK, &fdtab[fd].lock);
@@ -245,7 +245,7 @@
 	for (entry = 0; entry < fd_cache_num; ) {
 		fd = fd_cache[entry];
 
-		if (!(fdtab[fd].process_mask & tid_bit))
+		if (!(fdtab[fd].thread_mask & tid_bit))
 			goto next;
 		if (SPIN_TRYLOCK(FD_LOCK, &fdtab[fd].lock))
 			goto next;
diff --git a/src/task.c b/src/task.c
index 7623da9..1768e07 100644
--- a/src/task.c
+++ b/src/task.c
@@ -229,7 +229,7 @@
 		while (local_tasks_count < 16) {
 			t = eb32_entry(rq_next, struct task, rq);
 			rq_next = eb32_next(rq_next);
-			if (t->process_mask & tid_bit) {
+			if (t->thread_mask & tid_bit) {
 				/* detach the task from the queue */
 				__task_unlink_rq(t);
 				t->state |= TASK_RUNNING;
