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 },