diff --git a/lib/libspl/include/thread.h b/lib/libspl/include/thread.h index 64328e2913..a72f6d2b1b 100644 --- a/lib/libspl/include/thread.h +++ b/lib/libspl/include/thread.h @@ -1,96 +1,30 @@ /* - * Copyright (c) 2006 OmniTI, Inc. All rights reserved - * This header file distributed under the terms of the CDDL. - * Portions Copyright 2004 Sun Microsystems, Inc. All Rights reserved. + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. */ -#include -#include -#include +#ifndef _LIBSPL_THREAD_H +#define _LIBSPL_THREAD_H -#ifndef _SYS_THREAD_H -#define _SYS_THREAD_H - -typedef pthread_t thread_t; -typedef pthread_mutex_t mutex_t; -typedef pthread_cond_t cond_t; - -#define THR_BOUND 1 -#define THR_DETACHED 2 -#define THR_DAEMON 4 - -#define USYNC_THREAD 0x00 /* private to a process */ -#define USYNC_PROCESS 0x01 /* shared by processes */ - -#define thr_self() pthread_self() -#define thr_sigsetmask pthread_sigmask -#define __nthreads() 2 /* XXX: Force multi-thread */ - -static inline int -thr_create(void *stack_base, size_t stack_size, - void *(*start_func)(void *), void *arg, - long flags, thread_t *new_thread_id) -{ - pthread_attr_t attr; - int rc; - - pthread_attr_init(&attr); - - if (flags & THR_DETACHED) - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - - rc = pthread_create(new_thread_id, &attr, start_func, arg); - pthread_attr_destroy(&attr); - - return rc; -} -#endif /* _SYS_THREAD_H */ - -#ifndef _SYS_MUTEX_H -#define _SYS_MUTEX_H - -static inline int -_mutex_held(mutex_t *mp) -{ - int rc; - - rc = pthread_mutex_trylock(mp); - if (rc) - return rc; - - pthread_mutex_unlock(mp); - return rc; -} - -static inline void -_mutex_init(mutex_t *mp, int type, void *arg) -{ - pthread_mutex_init(mp, NULL); -} - -#define mutex_init(mp, type, arg) _mutex_init(mp, type, arg) -#define mutex_lock(mp) pthread_mutex_lock(mp) -#define mutex_unlock(mp) pthread_mutex_unlock(mp) -#define mutex_destroy(mp) pthread_mutex_destroy(mp) -#define mutex_trylock(mp) pthread_mutex_trylock(mp) -#define DEFAULTMUTEX PTHREAD_MUTEX_INITIALIZER -#define DEFAULTCV PTHREAD_COND_INITIALIZER -#define MUTEX_HELD(mp) _mutex_held(mp) -#endif /* _SYS_MUTEX_H */ - -#ifndef _SYS_CONDVAR_H -#define _SYS_CONDVAR_H - -#define cond_init(c, type, arg) pthread_cond_init(c, NULL) -#define cond_wait(c, m) pthread_cond_wait(c, m) -#define _cond_wait(c, m) pthread_cond_wait(c, m) -#define cond_signal(c) pthread_cond_signal(c) -#define cond_broadcast(c) pthread_cond_broadcast(c) -#define cond_destroy(c) pthread_cond_destroy(c) -#define cond_timedwait pthread_cond_timedwait -#define _cond_timedwait pthread_cond_timedwait -#endif /* _SYS_CONDVAR_H */ - -#ifndef RTLD_FIRST -#define RTLD_FIRST 0 -#endif +#endif /* _LIBSPL_THREAD_H */