posix: deprecate PTHREAD_RWLOCK for POSIX_READER_WRITER_LOCKS
This change deprecates CONFIG_PTHREAD_RWLOCK in favour of CONFIG_POSIX_READER_WRITER_LOCKS, which maps directly to the name of the standard POSIX Option. Annoyingly, the POSIX_RW_LOCKS Option Group is inconsistently named. However, it is more convenient for us to use the Option name since it is also the format used by the sysconf() variable (_SC_READER_WRITER_LOCKS). Signed-off-by: Chris Friedt <cfriedt@tenstorrent.com>
This commit is contained in:
parent
f270de7362
commit
70e2b02c8e
9 changed files with 41 additions and 12 deletions
|
@ -66,7 +66,7 @@ POSIX System Interfaces
|
||||||
:ref:`_POSIX_CLOCK_SELECTION<posix_option_group_clock_selection>`, 200809L, :kconfig:option:`CONFIG_POSIX_CLOCK_SELECTION`
|
:ref:`_POSIX_CLOCK_SELECTION<posix_option_group_clock_selection>`, 200809L, :kconfig:option:`CONFIG_POSIX_CLOCK_SELECTION`
|
||||||
_POSIX_MAPPED_FILES, -1, :ref:`†<posix_undefined_behaviour>`
|
_POSIX_MAPPED_FILES, -1, :ref:`†<posix_undefined_behaviour>`
|
||||||
_POSIX_MEMORY_PROTECTION, -1, :ref:`†<posix_undefined_behaviour>`
|
_POSIX_MEMORY_PROTECTION, -1, :ref:`†<posix_undefined_behaviour>`
|
||||||
:ref:`_POSIX_READER_WRITER_LOCKS<posix_option_reader_writer_locks>`, 200809L, :kconfig:option:`CONFIG_PTHREAD_IPC`
|
:ref:`_POSIX_READER_WRITER_LOCKS<posix_option_reader_writer_locks>`, 200809L, :kconfig:option:`CONFIG_POSIX_READER_WRITER_LOCKS`
|
||||||
:ref:`_POSIX_REALTIME_SIGNALS<posix_option_group_realtime_signals>`, -1,
|
:ref:`_POSIX_REALTIME_SIGNALS<posix_option_group_realtime_signals>`, -1,
|
||||||
:ref:`_POSIX_SEMAPHORES<posix_option_group_semaphores>`, 200809L, :kconfig:option:`CONFIG_PTHREAD_IPC`
|
:ref:`_POSIX_SEMAPHORES<posix_option_group_semaphores>`, 200809L, :kconfig:option:`CONFIG_PTHREAD_IPC`
|
||||||
:ref:`_POSIX_SPIN_LOCKS<posix_option_group_spin_locks>`, 200809L, :kconfig:option:`CONFIG_POSIX_SPIN_LOCKS`
|
:ref:`_POSIX_SPIN_LOCKS<posix_option_group_spin_locks>`, 200809L, :kconfig:option:`CONFIG_POSIX_SPIN_LOCKS`
|
||||||
|
|
|
@ -71,7 +71,7 @@
|
||||||
#define _POSIX_RAW_SOCKETS _POSIX_VERSION
|
#define _POSIX_RAW_SOCKETS _POSIX_VERSION
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_PTHREAD_IPC
|
#ifdef CONFIG_POSIX_READER_WRITER_LOCKS
|
||||||
#define _POSIX_READER_WRITER_LOCKS _POSIX_VERSION
|
#define _POSIX_READER_WRITER_LOCKS _POSIX_VERSION
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -153,7 +153,7 @@ int pthread_condattr_setclock(pthread_condattr_t *att, clockid_t clock_id);
|
||||||
*
|
*
|
||||||
* Initialize a rwlock with the default rwlock attributes.
|
* Initialize a rwlock with the default rwlock attributes.
|
||||||
*/
|
*/
|
||||||
#define PTHREAD_RWLOCK_INITIALIZER (-1)
|
#define POSIX_RWLOCK_INITIALIZER (-1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mutex attributes - type
|
* Mutex attributes - type
|
||||||
|
|
|
@ -168,7 +168,7 @@ enum {
|
||||||
COND_CODE_1(CONFIG_NET_SOCKETS_PACKET, (_POSIX_RAW_SOCKETS), (-1L))
|
COND_CODE_1(CONFIG_NET_SOCKETS_PACKET, (_POSIX_RAW_SOCKETS), (-1L))
|
||||||
#define __z_posix_sysconf_SC_RE_DUP_MAX _POSIX_RE_DUP_MAX
|
#define __z_posix_sysconf_SC_RE_DUP_MAX _POSIX_RE_DUP_MAX
|
||||||
#define __z_posix_sysconf_SC_READER_WRITER_LOCKS \
|
#define __z_posix_sysconf_SC_READER_WRITER_LOCKS \
|
||||||
COND_CODE_1(CONFIG_PTHREAD_IPC, (_POSIX_READER_WRITER_LOCKS), (-1L))
|
COND_CODE_1(CONFIG_POSIX_READER_WRITER_LOCKS, (_POSIX_READER_WRITER_LOCKS), (-1L))
|
||||||
#define __z_posix_sysconf_SC_REALTIME_SIGNALS (-1L)
|
#define __z_posix_sysconf_SC_REALTIME_SIGNALS (-1L)
|
||||||
#define __z_posix_sysconf_SC_REGEXP (-1L)
|
#define __z_posix_sysconf_SC_REGEXP (-1L)
|
||||||
#define __z_posix_sysconf_SC_SAVED_IDS (-1L)
|
#define __z_posix_sysconf_SC_SAVED_IDS (-1L)
|
||||||
|
|
|
@ -73,8 +73,8 @@ zephyr_library_sources_ifdef(CONFIG_PTHREAD_COND cond.c)
|
||||||
zephyr_library_sources_ifdef(CONFIG_PTHREAD_KEY key.c)
|
zephyr_library_sources_ifdef(CONFIG_PTHREAD_KEY key.c)
|
||||||
zephyr_library_sources_ifdef(CONFIG_PTHREAD_MUTEX mutex.c)
|
zephyr_library_sources_ifdef(CONFIG_PTHREAD_MUTEX mutex.c)
|
||||||
zephyr_library_sources_ifdef(CONFIG_PTHREAD pthread.c)
|
zephyr_library_sources_ifdef(CONFIG_PTHREAD pthread.c)
|
||||||
zephyr_library_sources_ifdef(CONFIG_PTHREAD_RWLOCK rwlock.c)
|
|
||||||
zephyr_library_sources_ifdef(CONFIG_POSIX_PRIORITY_SCHEDULING sched.c)
|
zephyr_library_sources_ifdef(CONFIG_POSIX_PRIORITY_SCHEDULING sched.c)
|
||||||
|
zephyr_library_sources_ifdef(CONFIG_POSIX_READER_WRITER_LOCKS rwlock.c)
|
||||||
zephyr_library_sources_ifdef(CONFIG_PTHREAD_IPC semaphore.c)
|
zephyr_library_sources_ifdef(CONFIG_PTHREAD_IPC semaphore.c)
|
||||||
|
|
||||||
zephyr_library_include_directories(
|
zephyr_library_include_directories(
|
||||||
|
|
|
@ -120,6 +120,15 @@ config PTHREAD_BARRIER
|
||||||
|
|
||||||
Please use CONFIG_POSIX_BARRIERS instead.
|
Please use CONFIG_POSIX_BARRIERS instead.
|
||||||
|
|
||||||
|
config PTHREAD_RWLOCK
|
||||||
|
bool "pthread_spinlock_t support [DEPRECATED]"
|
||||||
|
select DEPRECATED
|
||||||
|
select POSIX_READER_WRITER_LOCKS
|
||||||
|
help
|
||||||
|
This option is deprecated.
|
||||||
|
|
||||||
|
Please use CONFIG_POSIX_READER_WRITER_LOCKS instead.
|
||||||
|
|
||||||
config PTHREAD_SPINLOCK
|
config PTHREAD_SPINLOCK
|
||||||
bool "pthread_spinlock_t support [DEPRECATED]"
|
bool "pthread_spinlock_t support [DEPRECATED]"
|
||||||
select DEPRECATED
|
select DEPRECATED
|
||||||
|
|
|
@ -2,7 +2,27 @@
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
TYPE = PTHREAD_RWLOCK
|
menuconfig POSIX_READER_WRITER_LOCKS
|
||||||
type = pthread_rwlock_t
|
bool "POSIX reader-writer locks"
|
||||||
type-function = pthread_rwlock_timedrdlock
|
default y if POSIX_API
|
||||||
rsource "Kconfig.template.pooled_ipc_type"
|
help
|
||||||
|
Select 'y' here to enable POSIX reader-writer locks.
|
||||||
|
|
||||||
|
For more information please see
|
||||||
|
https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_subprofiles.html
|
||||||
|
|
||||||
|
if POSIX_READER_WRITER_LOCKS
|
||||||
|
|
||||||
|
config MAX_PTHREAD_RWLOCK_COUNT
|
||||||
|
int "Maximum number of POSIX reader-writer locks"
|
||||||
|
default 5
|
||||||
|
help
|
||||||
|
Maximum simultaneously active reader-writer locks in a POSIX application.
|
||||||
|
|
||||||
|
Note: this is a non-standard option.
|
||||||
|
|
||||||
|
module = PTHREAD_RWLOCK
|
||||||
|
module-str = POSIX Reader-Writer Locks
|
||||||
|
source "subsys/logging/Kconfig.template.log_config"
|
||||||
|
|
||||||
|
endif # POSIX_READER_WRITER_LOCKS
|
||||||
|
|
|
@ -86,7 +86,7 @@ struct posix_rwlock *to_posix_rwlock(pthread_rwlock_t *rwlock)
|
||||||
size_t bit;
|
size_t bit;
|
||||||
struct posix_rwlock *rwl;
|
struct posix_rwlock *rwl;
|
||||||
|
|
||||||
if (*rwlock != PTHREAD_RWLOCK_INITIALIZER) {
|
if (*rwlock != POSIX_RWLOCK_INITIALIZER) {
|
||||||
return get_posix_rwlock(*rwlock);
|
return get_posix_rwlock(*rwlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ int pthread_rwlock_init(pthread_rwlock_t *rwlock,
|
||||||
struct posix_rwlock *rwl;
|
struct posix_rwlock *rwl;
|
||||||
|
|
||||||
ARG_UNUSED(attr);
|
ARG_UNUSED(attr);
|
||||||
*rwlock = PTHREAD_RWLOCK_INITIALIZER;
|
*rwlock = POSIX_RWLOCK_INITIALIZER;
|
||||||
|
|
||||||
rwl = to_posix_rwlock(rwlock);
|
rwl = to_posix_rwlock(rwlock);
|
||||||
if (rwl == NULL) {
|
if (rwl == NULL) {
|
||||||
|
|
|
@ -59,7 +59,7 @@ ZTEST(posix_headers, test_pthread_h)
|
||||||
|
|
||||||
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
|
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
|
||||||
pthread_mutex_t mu = PTHREAD_MUTEX_INITIALIZER;
|
pthread_mutex_t mu = PTHREAD_MUTEX_INITIALIZER;
|
||||||
/* pthread_rwlock_t lock = PTHREAD_RWLOCK_INITIALIZER; */ /* not implemented */
|
/* pthread_rwlock_t lock = POSIX_READER_WRITER_LOCKS_INITIALIZER; */ /* not implemented */
|
||||||
|
|
||||||
zassert_not_null(pthread_atfork);
|
zassert_not_null(pthread_atfork);
|
||||||
zassert_not_null(pthread_attr_destroy);
|
zassert_not_null(pthread_attr_destroy);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue