diff --git a/doc/configuration.txt b/doc/configuration.txt
index cc397e188..9082fcc0f 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -13559,6 +13559,11 @@ table_cnt([
]) : integer
stick-table or in the designated stick-table. See also src_conn_cnt and
table_avl for other entry counting methods.
+thread : integer
+ Returns an integer value corresponding to the position of the thread calling
+ the function, between 0 and (global.nbthread-1). This is useful for logging
+ and debugging purposes.
+
var() : undefined
Returns a variable with the stored type. If the variable is not set, the
sample fetch fails. The name of the variable starts with an indication
diff --git a/src/sample.c b/src/sample.c
index f1cfad4f3..9389766f4 100644
--- a/src/sample.c
+++ b/src/sample.c
@@ -2595,6 +2595,15 @@ smp_fetch_proc(const struct arg *args, struct sample *smp, const char *kw, void
return 1;
}
+/* returns the number of the current thread (between 1 and nbthread */
+static int
+smp_fetch_thread(const struct arg *args, struct sample *smp, const char *kw, void *private)
+{
+ smp->data.type = SMP_T_SINT;
+ smp->data.u.sint = tid;
+ return 1;
+}
+
/* generate a random 32-bit integer for whatever purpose, with an optional
* range specified in argument.
*/
@@ -2753,6 +2762,7 @@ static struct sample_fetch_kw_list smp_kws = {ILH, {
{ "hostname", smp_fetch_hostname, 0, NULL, SMP_T_STR, SMP_USE_INTRN },
{ "nbproc", smp_fetch_nbproc,0, NULL, SMP_T_SINT, SMP_USE_INTRN },
{ "proc", smp_fetch_proc, 0, NULL, SMP_T_SINT, SMP_USE_INTRN },
+ { "thread", smp_fetch_thread, 0, NULL, SMP_T_SINT, SMP_USE_INTRN },
{ "rand", smp_fetch_rand, ARG1(0,SINT), NULL, SMP_T_SINT, SMP_USE_INTRN },
{ "stopping", smp_fetch_stopping, 0, NULL, SMP_T_BOOL, SMP_USE_INTRN },