/* * 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. */ #ifndef _SYS_THREAD_H #define _SYS_THREAD_H #include #include #include 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 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; } #define mutex_init(mp, type, arg) pthread_mutex_init(mp, NULL) #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) 1 /* XXX: Use mutex_trylock() */ #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 #ifndef RTLD_FIRST #define RTLD_FIRST 0 #endif #endif /* _SYS_THREAD_H */