All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <horms@kernel.org>
To: Anjali Kulkarni <anjali.k.kulkarni@oracle.com>
Cc: davem@davemloft.net, Liam.Howlett@oracle.com,
	edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
	mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com,
	vincent.guittot@linaro.org, dietmar.eggemann@arm.com,
	rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de,
	vschneid@redhat.com, jiri@resnulli.us,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	akpm@linux-foundation.org, shuah@kernel.org,
	linux-kselftest@vger.kernel.org, peili.io@oracle.com
Subject: Re: [PATCH net-next v5 3/3] connector/cn_proc: Selftest for threads
Date: Fri, 18 Oct 2024 11:04:40 +0100	[thread overview]
Message-ID: <20241018100440.GF1697@kernel.org> (raw)
In-Reply-To: <20241017181436.2047508-4-anjali.k.kulkarni@oracle.com>

On Thu, Oct 17, 2024 at 11:14:36AM -0700, Anjali Kulkarni wrote:
> Test to check if setting PROC_CN_MCAST_NOTIFY in proc connector API, allows
> a thread's non-zero exit status to be returned to proc_filter.
> 
> The threads.c program creates 2 child threads. 1st thread handles signal
> SIGSEGV, and 2nd thread needs to indicate some error condition (value 1)
> to the kernel, instead of using pthread_exit() with 1.
> 
> In both cases, child sends notify_netlink_thread_exit(exit_code) to kernel,
> to let kernel know it has exited abnormally with exit_code.
> 
> Compile:
>     make thread
>     make proc_filter
> Run:
>     ./threads
> 
> Signed-off-by: Anjali Kulkarni <anjali.k.kulkarni@oracle.com>
> ---
>  tools/testing/selftests/connector/Makefile    |  23 +-
>  .../testing/selftests/connector/proc_filter.c |  34 ++-
>  tools/testing/selftests/connector/thread.c    | 232 ++++++++++++++++++
>  .../selftests/connector/thread_filter.c       |  96 ++++++++
>  4 files changed, 378 insertions(+), 7 deletions(-)
>  create mode 100644 tools/testing/selftests/connector/thread.c
>  create mode 100644 tools/testing/selftests/connector/thread_filter.c
> 
> diff --git a/tools/testing/selftests/connector/Makefile b/tools/testing/selftests/connector/Makefile
> index 92188b9bac5c..bf335826bc3b 100644
> --- a/tools/testing/selftests/connector/Makefile
> +++ b/tools/testing/selftests/connector/Makefile
> @@ -1,5 +1,26 @@
>  # SPDX-License-Identifier: GPL-2.0
> -CFLAGS += -Wall $(KHDR_INCLUDES)
> +KERNEL="../../../.."
> +
> +CFLAGS += -Wall $(KHDR_INCLUDES) -I $(KERNEL)/include/uapi -I $(KERNEL)/include
> +
> +proc_filter: proc_filter.o
> +	cc proc_filter.o -o proc_filter
> +
> +proc_filter.o: proc_filter.c
> +	cc -c proc_filter.c -o proc_filter.o $(CFLAGS)
> +
> +thread: thread.o thread_filter.o
> +	cc thread.o thread_filter.o -o thread
> +
> +thread.o: thread.c $(DEPS)
> +		cc -c thread.c -o thread.o $(CFLAGS)
> +
> +thread_filter.o: thread_filter.c
> +		cc -c thread_filter.c -o thread_filter.o $(CFLAGS)
> +
> +define EXTRA_CLEAN
> +	rm *.o thread
> +endef
>  
>  TEST_GEN_PROGS = proc_filter
>  

I am a little confused by this, as it seems to result in user-space
code using kernel headers. Is that expected?

$ make -C tools/testing/selftests/connector
...
cc -c proc_filter.c -o proc_filter.o -Wall -isystem /home/horms/projects/linux/linux/tools/testing/selftests/../../../usr/include -I "../../../.."/include/uapi -I "../../../.."/include -D_GNU_SOURCE=
In file included from ../../../../include/uapi/linux/netlink.h:7,
                 from proc_filter.c:11:
../../../../include/uapi/linux/types.h:10:2: warning: #warning "Attempt to use kernel headers from user space, see https://kernelnewbies.org/KernelHeaders" [-Wcpp]
   10 | #warning "Attempt to use kernel headers from user space, see https://kernelnewbies.org/KernelHeaders"
      |  ^~~~~~~
...

> diff --git a/tools/testing/selftests/connector/thread.c b/tools/testing/selftests/connector/thread.c

...

> +static inline void init_threads(pthread_attr_t *attr)

Please don't use inline in .c files unless there is a demonstrable,
usually performance, reason to do so.

Likewise twice more in this patch and once in patch 1/3.

> +{
> +	int ret;
> +
> +	ret = pthread_attr_init(attr);
> +	if (ret != 0) {
> +		perror("pthread_attr_init failed");
> +		exit(ret);
> +	}
> +
> +	ret = pthread_attr_setdetachstate(attr, PTHREAD_CREATE_DETACHED);
> +	if (ret != 0) {
> +		perror("pthread_attr_setdetachstate failed");
> +		exit(ret);
> +	}
> +}

...

  reply	other threads:[~2024-10-18 10:04 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-17 18:14 [PATCH net-next v5 0/3] Threads support in proc connector Anjali Kulkarni
2024-10-17 18:14 ` [PATCH net-next v5 1/3] connector/cn_proc: Add hash table for threads Anjali Kulkarni
2024-10-17 18:14 ` [PATCH net-next v5 2/3] connector/cn_proc: Kunit tests for threads hash table Anjali Kulkarni
2024-10-18  0:13   ` Stanislav Fomichev
2024-10-18  0:34     ` Anjali Kulkarni
2024-10-18  0:55       ` Stanislav Fomichev
2024-10-18  1:08         ` Anjali Kulkarni
2024-10-18 14:30           ` Stanislav Fomichev
2024-10-22 20:36         ` Anjali Kulkarni
2024-10-22 23:50           ` Stanislav Fomichev
2024-10-23  2:03             ` Anjali Kulkarni
2024-10-23  2:24               ` Anjali Kulkarni
2024-10-23 15:05                 ` Stanislav Fomichev
2024-10-23 15:58                   ` Anjali Kulkarni
2024-10-19  1:28   ` kernel test robot
2024-10-19  2:51   ` kernel test robot
2024-10-17 18:14 ` [PATCH net-next v5 3/3] connector/cn_proc: Selftest for threads Anjali Kulkarni
2024-10-18 10:04   ` Simon Horman [this message]
2024-10-18 15:36     ` Anjali Kulkarni
2024-10-18  9:49 ` [PATCH net-next v5 0/3] Threads support in proc connector Simon Horman
2024-10-18 15:31   ` Anjali Kulkarni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241018100440.GF1697@kernel.org \
    --to=horms@kernel.org \
    --cc=Liam.Howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=anjali.k.kulkarni@oracle.com \
    --cc=bsegall@google.com \
    --cc=davem@davemloft.net \
    --cc=dietmar.eggemann@arm.com \
    --cc=edumazet@google.com \
    --cc=jiri@resnulli.us \
    --cc=juri.lelli@redhat.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=peili.io@oracle.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=shuah@kernel.org \
    --cc=vincent.guittot@linaro.org \
    --cc=vschneid@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.