thread.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2004, 2005, 2007, 2013  Internet Systems Consortium, Inc. ("ISC")
00003  * Copyright (C) 1998-2001  Internet Software Consortium.
00004  *
00005  * Permission to use, copy, modify, and/or distribute this software for any
00006  * purpose with or without fee is hereby granted, provided that the above
00007  * copyright notice and this permission notice appear in all copies.
00008  *
00009  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
00010  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
00011  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
00012  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
00013  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
00014  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
00015  * PERFORMANCE OF THIS SOFTWARE.
00016  */
00017 
00018 /* $Id: thread.h,v 1.26 2007/06/19 23:47:18 tbox Exp $ */
00019 
00020 #ifndef ISC_THREAD_H
00021 #define ISC_THREAD_H 1
00022 
00023 /*! \file */
00024 
00025 #include <pthread.h>
00026 
00027 #include <isc/lang.h>
00028 #include <isc/result.h>
00029 
00030 ISC_LANG_BEGINDECLS
00031 
00032 typedef pthread_t isc_thread_t;
00033 typedef void * isc_threadresult_t;
00034 typedef void * isc_threadarg_t;
00035 typedef isc_threadresult_t (*isc_threadfunc_t)(isc_threadarg_t);
00036 typedef pthread_key_t isc_thread_key_t;
00037 
00038 isc_result_t
00039 isc_thread_create(isc_threadfunc_t, isc_threadarg_t, isc_thread_t *);
00040 
00041 void
00042 isc_thread_setconcurrency(unsigned int level);
00043 
00044 void
00045 isc_thread_yield(void);
00046 
00047 /* XXX We could do fancier error handling... */
00048 
00049 #define isc_thread_join(t, rp) \
00050         ((pthread_join((t), (rp)) == 0) ? \
00051          ISC_R_SUCCESS : ISC_R_UNEXPECTED)
00052 
00053 #define isc_thread_self \
00054         (unsigned long)pthread_self
00055 
00056 #define isc_thread_key_create pthread_key_create
00057 #define isc_thread_key_getspecific pthread_getspecific
00058 #define isc_thread_key_setspecific pthread_setspecific
00059 #define isc_thread_key_delete pthread_key_delete
00060 
00061 ISC_LANG_ENDDECLS
00062 
00063 #endif /* ISC_THREAD_H */

Generated on Tue Apr 28 17:41:05 2015 by Doxygen 1.5.4 for BIND9 Internals 9.11.0pre-alpha