From 1ba97cbec5fb3fff28653bfff17c81a6357343c6 Mon Sep 17 00:00:00 2001 From: Brad Smith Date: Sat, 8 Mar 2025 12:55:19 -0500 Subject: [PATCH] netbsd: add initial support - thread id - thread naming --- configure.ac | 1 + src/Makefile.am | 5 +++++ src/meson.build | 6 ++++++ src/netbsd/thread.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 src/netbsd/thread.c diff --git a/configure.ac b/configure.ac index 155eb5fab6..c92326fba4 100644 --- a/configure.ac +++ b/configure.ac @@ -494,6 +494,7 @@ AS_IF([test "${SYS}" = "mingw32"],[ ]) AM_CONDITIONAL([HAVE_FREEBSD], [test "${SYS}" = "freebsd"]) +AM_CONDITIONAL([HAVE_NETBSD], [test "${SYS}" = "netbsd"]) AM_CONDITIONAL([HAVE_OPENBSD], [test "${SYS}" = "openbsd"]) AM_CONDITIONAL([HAVE_LINUX], [test "${SYS}" = "linux"]) AM_CONDITIONAL([HAVE_ANDROID], [test "${VENDOR}" = "android"]) diff --git a/src/Makefile.am b/src/Makefile.am index bf19d3d4c6..1ebca1a82f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -494,6 +494,11 @@ libvlccore_la_SOURCES += \ freebsd/thread.c endif +if HAVE_NETBSD +libvlccore_la_SOURCES += \ + netbsd/thread.c +endif + if HAVE_OPENBSD libvlccore_la_SOURCES += \ openbsd/cpu.c \ diff --git a/src/meson.build b/src/meson.build index 21b8c1febd..b2d36fccfe 100644 --- a/src/meson.build +++ b/src/meson.build @@ -405,6 +405,12 @@ else ] endif + if host_system == 'netbsd' + libvlccore_sources += [ + 'netbsd/thread.c', + ] + endif + if host_system == 'openbsd' libvlccore_sources += [ 'openbsd/cpu.c', diff --git a/src/netbsd/thread.c b/src/netbsd/thread.c new file mode 100644 index 0000000000..7bcdaaf7a1 --- /dev/null +++ b/src/netbsd/thread.c @@ -0,0 +1,45 @@ +/***************************************************************************** + * netbsd/thread.c: NetBSD specifics for threading + ***************************************************************************** + * Copyright (C) 2020 Rémi Denis-Courmont + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include + +#include +#include +#include + +unsigned long vlc_thread_id(void) +{ + static _Thread_local lwpid_t tid = -1; + + if (unlikely(tid == -1)) + tid = _lwp_self(); + + return tid; +} + +void (vlc_thread_set_name)(const char *name) +{ + pthread_setname_np(pthread_self(), "%s", (void *)name); +}