OpenBSD port

This commit is contained in:
Matthieu Herrb 2023-08-14 10:12:52 +02:00
parent 90f920465c
commit 53d10f48b5
10 changed files with 140 additions and 78 deletions

View file

@ -1,41 +1,20 @@
# $FreeBSD$
PACKAGE=lib${LIB}
LIB= stdthreads LIB= stdthreads
SHLIB_MAJOR= 0
INCS= threads.h HDR= threads.h
SRCS= threads.h call_once.c cnd.c mtx.c thrd.c tss.c SRCS= threads.h call_once.c cnd.c mtx.c thrd.c tss.c
MAN= thrd_create.3 MAN= thrd_create.3
MLINKS= thrd_create.3 call_once.3 \
thrd_create.3 cnd_broadcast.3 \
thrd_create.3 cnd_destroy.3 \
thrd_create.3 cnd_init.3 \
thrd_create.3 cnd_signal.3 \
thrd_create.3 cnd_timedwait.3 \
thrd_create.3 cnd_wait.3 \
thrd_create.3 mtx_destroy.3 \
thrd_create.3 mtx_init.3 \
thrd_create.3 mtx_lock.3 \
thrd_create.3 mtx_timedlock.3 \
thrd_create.3 mtx_trylock.3 \
thrd_create.3 mtx_unlock.3 \
thrd_create.3 thrd_current.3 \
thrd_create.3 thrd_detach.3 \
thrd_create.3 thrd_equal.3 \
thrd_create.3 thrd_exit.3 \
thrd_create.3 thrd_join.3 \
thrd_create.3 thrd_sleep.3 \
thrd_create.3 thrd_yield.3 \
thrd_create.3 tss_create.3 \
thrd_create.3 tss_delete.3 \
thrd_create.3 tss_get.3 \
thrd_create.3 tss_set.3
CPPFLAGS+= -Wno-incompatible-pointer-types-discards-qualifiers
LIBADD= pthread LIBADD= pthread
VERSION_DEF= ${SRCTOP}/lib/libc/Versions.def VERSION_SCRIPT= ${.CURDIR}/Symbol.map
SYMBOL_MAPS= ${.CURDIR}/Symbol.map
includes:
@cd ${.CURDIR}; j="cmp -s ${HDR} ${DESTDIR}/usr/include/${HDR} || \
${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} \
-m 444 ${HDR} ${DESTDIR}/usr/include"; \
echo $$j; \
eval "$$j"; \
.include <bsd.lib.mk> .include <bsd.lib.mk>

View file

@ -1,31 +1,30 @@
/* {
* $FreeBSD$ global:
*/ call_once;
cnd_broadcast;
FBSD_1.3 { cnd_destroy;
call_once; cnd_init;
cnd_broadcast; cnd_signal;
cnd_destroy; cnd_timedwait;
cnd_init; cnd_wait;
cnd_signal; mtx_destroy;
cnd_timedwait; mtx_init;
cnd_wait; mtx_lock;
mtx_destroy; mtx_timedlock;
mtx_init; mtx_trylock;
mtx_lock; mtx_unlock;
mtx_timedlock; thrd_create;
mtx_trylock; thrd_current;
mtx_unlock; thrd_detach;
thrd_create; thrd_equal;
thrd_current; thrd_exit;
thrd_detach; thrd_join;
thrd_equal; thrd_sleep;
thrd_exit; thrd_yield;
thrd_join; tss_create;
thrd_sleep; tss_delete;
thrd_yield; tss_get;
tss_create; tss_set;
tss_delete; local:
tss_get; *;
tss_set;
}; };

View file

@ -25,12 +25,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $FreeBSD$
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__FBSDID("$FreeBSD$"); #include "locks_annotate.h"
#include <pthread.h> #include <pthread.h>
#include "threads.h" #include "threads.h"

4
cnd.c
View file

@ -25,12 +25,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $FreeBSD$
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__FBSDID("$FreeBSD$"); #include "locks_annotate.h"
#include <errno.h> #include <errno.h>
#include <pthread.h> #include <pthread.h>

94
locks_annotate.h Normal file
View file

@ -0,0 +1,94 @@
/*-
* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Berkeley Software Design, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)cdefs.h 8.8 (Berkeley) 1/9/95
*/
#ifndef _LOCKS_ANNOTATE_H
#define _LOCKS_ANNOTATE_H
/*
* Lock annotations.
*
* Clang provides support for doing basic thread-safety tests at
* compile-time, by marking which locks will/should be held when
* entering/leaving a functions.
*
* Furthermore, it is also possible to annotate variables and structure
* members to enforce that they are only accessed when certain locks are
* held.
*/
#if __has_extension(c_thread_safety_attributes)
#define __lock_annotate(x) __attribute__((x))
#else
#define __lock_annotate(x)
#endif
/* Structure implements a lock. */
#define __lockable __lock_annotate(lockable)
/* Function acquires an exclusive or shared lock. */
#define __locks_exclusive(...) \
__lock_annotate(exclusive_lock_function(__VA_ARGS__))
#define __locks_shared(...) \
__lock_annotate(shared_lock_function(__VA_ARGS__))
/* Function attempts to acquire an exclusive or shared lock. */
#define __trylocks_exclusive(...) \
__lock_annotate(exclusive_trylock_function(__VA_ARGS__))
#define __trylocks_shared(...) \
__lock_annotate(shared_trylock_function(__VA_ARGS__))
/* Function releases a lock. */
#define __unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__))
/* Function asserts that an exclusive or shared lock is held. */
#define __asserts_exclusive(...) \
__lock_annotate(assert_exclusive_lock(__VA_ARGS__))
#define __asserts_shared(...) \
__lock_annotate(assert_shared_lock(__VA_ARGS__))
/* Function requires that an exclusive or shared lock is or is not held. */
#define __requires_exclusive(...) \
__lock_annotate(exclusive_locks_required(__VA_ARGS__))
#define __requires_shared(...) \
__lock_annotate(shared_locks_required(__VA_ARGS__))
#define __requires_unlocked(...) \
__lock_annotate(locks_excluded(__VA_ARGS__))
/* Function should not be analyzed. */
#define __no_lock_analysis __lock_annotate(no_thread_safety_analysis)
#endif

4
mtx.c
View file

@ -25,12 +25,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $FreeBSD$
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__FBSDID("$FreeBSD$"); #include "locks_annotate.h"
#include <errno.h> #include <errno.h>
#include <pthread.h> #include <pthread.h>

2
shlib_version Normal file
View file

@ -0,0 +1,2 @@
major=0
minor=0

4
thrd.c
View file

@ -25,12 +25,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $FreeBSD$
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__FBSDID("$FreeBSD$"); #include "locks_annotate.h"
#include <pthread.h> #include <pthread.h>
#include <stdint.h> #include <stdint.h>
#include <stdlib.h> #include <stdlib.h>

View file

@ -22,8 +22,6 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" $FreeBSD$
.\"
.Dd December 26, 2011 .Dd December 26, 2011
.Dt THRD_CREATE 3 .Dt THRD_CREATE 3
.Os .Os

4
tss.c
View file

@ -25,12 +25,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $FreeBSD$
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__FBSDID("$FreeBSD$"); #include "locks_annotate.h"
#include <pthread.h> #include <pthread.h>
#include "threads.h" #include "threads.h"