MINOR: activity: add per-thread statistics on FD takeover

The FD takeover operation might have certain impacts explaining
unexpected activities, so it's important to report such a counter
there. We thus count the number of times a thread has stolen an
FD from another thread.
diff --git a/include/haproxy/activity-t.h b/include/haproxy/activity-t.h
index 6fc5844..5301cee 100644
--- a/include/haproxy/activity-t.h
+++ b/include/haproxy/activity-t.h
@@ -52,7 +52,7 @@
 	unsigned int empty_rq;     // calls to process_runnable_tasks() with nothing for the thread
 	unsigned int long_rq;      // process_runnable_tasks() left with tasks in the run queue
 	unsigned int cpust_total;  // sum of half-ms stolen per thread
-	/* one unused entry left before end of first cache line */
+	unsigned int fd_takeover;  // number of times this thread stole another one's FD
 	ALWAYS_ALIGN(64);
 
 	struct freq_ctr cpust_1s;  // avg amount of half-ms stolen over last second
diff --git a/src/backend.c b/src/backend.c
index 51d954b..7048787 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -1103,6 +1103,7 @@
 		mt_list_for_each_entry_safe(conn, &mt_list[i], list, elt1, elt2) {
 			if (conn->mux->takeover && conn->mux->takeover(conn) == 0) {
 				MT_LIST_DEL_SAFE(elt1);
+				_HA_ATOMIC_ADD(&activity[tid].fd_takeover, 1);
 				found = 1;
 				break;
 			}
diff --git a/src/cli.c b/src/cli.c
index 3438fff..c1964df 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -1174,6 +1174,7 @@
 	chunk_appendf(&trash, "accq_full:");    SHOW_TOT(thr, activity[thr].accq_full);
 #ifdef USE_THREAD
 	chunk_appendf(&trash, "accq_ring:");    SHOW_TOT(thr, (accept_queue_rings[thr].tail - accept_queue_rings[thr].head + ACCEPT_QUEUE_SIZE) % ACCEPT_QUEUE_SIZE);
+	chunk_appendf(&trash, "fd_takeover:");  SHOW_TOT(thr, activity[thr].fd_takeover);
 #endif
 
 #if defined(DEBUG_DEV)