mirror_zfs/lib/libspl/include
Alejandro Colomar db7f1a91de
Use _Noreturn (C11; GNU89) properly
A function that returns with no value is a different thing from a
function that doesn't return at all.  Those are two orthogonal
concepts, commonly confused.

pthread_create(3) expects a pointer to a start routine that has a
very precise prototype:

    void *(*start_routine)(void *);

However, other thread functions, such as kernel ones, expect:

    void (*start_routine)(void *);

Providing a different one is incorrect, and has only been working
because the ABIs happen to produce a compatible function.

We should use '_Noreturn void', since it's the natural type, and
then provide a '_Noreturn void *' wrapper for pthread functions.

For consistency, replace most cases of __NORETURN or
__attribute__((noreturn)) by _Noreturn.  _Noreturn is understood
by -std=gnu89, so it should be safe to use everywhere.

Ref: https://github.com/openzfs/zfs/pull/13110#discussion_r808450136
Ref: https://software.codidact.com/posts/285972
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Co-authored-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
Closes #13120
2022-03-04 16:25:22 -08:00
..
os Remove NOTE(CONSTCOND) and note.h 2021-07-26 12:07:53 -07:00
rpc Changes to make openzfs build within FreeBSD buildworld 2020-07-31 21:30:31 -07:00
sys Use _Noreturn (C11; GNU89) properly 2022-03-04 16:25:22 -08:00
util Drop unnecessary srcdir paths 2020-06-24 18:20:18 -07:00
assert.h Add --enable-asan and --enable-ubsan switches 2022-02-03 14:35:38 -08:00
atomic.h More aggsum optimizations 2021-06-07 09:02:47 -07:00
libdevinfo.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
libgen.h zpool import -d to specify device path 2018-01-26 10:49:46 -08:00
libshare.h lib{efi,avl,share,tpool,zfs_core,zfsbootenv,zutil}: -fvisibility=hidden 2021-06-09 17:04:32 -07:00
limits.h Fix -Werror,-Wmacro-redefined in limits.h 2020-09-01 16:22:09 -07:00
locale.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
Makefile.am libspl: include: ia32: remove 2022-01-26 11:37:45 -08:00
statcommon.h Add linux libspl support 2010-08-31 13:41:59 -07:00
stdio.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
stdlib.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
string.h Check for strlcat and strlcpy 2018-12-11 16:01:41 -08:00
stropts.h Add linux libspl support 2010-08-31 13:41:59 -07:00
thread.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
tzfile.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
ucred.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
umem.h module/*.ko: prune .data, global .rodata 2022-01-14 15:37:55 -08:00
unistd.h Retire HAVE_IOCTL_* configure checks 2014-08-28 07:45:54 -07:00
zone.h libspl: Provide platform-specific zone implementations 2020-08-31 19:43:30 -07:00