00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef ISC_CONDITION_H
00021 #define ISC_CONDITION_H 1
00022
00023
00024
00025 #include <isc/lang.h>
00026 #include <isc/mutex.h>
00027 #include <isc/result.h>
00028 #include <isc/types.h>
00029
00030 typedef pthread_cond_t isc_condition_t;
00031
00032 #define isc_condition_init(cp) \
00033 ((pthread_cond_init((cp), NULL) == 0) ? \
00034 ISC_R_SUCCESS : ISC_R_UNEXPECTED)
00035
00036 #if ISC_MUTEX_PROFILE
00037 #define isc_condition_wait(cp, mp) \
00038 ((pthread_cond_wait((cp), &((mp)->mutex)) == 0) ? \
00039 ISC_R_SUCCESS : ISC_R_UNEXPECTED)
00040 #else
00041 #define isc_condition_wait(cp, mp) \
00042 ((pthread_cond_wait((cp), (mp)) == 0) ? \
00043 ISC_R_SUCCESS : ISC_R_UNEXPECTED)
00044 #endif
00045
00046 #define isc_condition_signal(cp) \
00047 ((pthread_cond_signal((cp)) == 0) ? \
00048 ISC_R_SUCCESS : ISC_R_UNEXPECTED)
00049
00050 #define isc_condition_broadcast(cp) \
00051 ((pthread_cond_broadcast((cp)) == 0) ? \
00052 ISC_R_SUCCESS : ISC_R_UNEXPECTED)
00053
00054 #define isc_condition_destroy(cp) \
00055 ((pthread_cond_destroy((cp)) == 0) ? \
00056 ISC_R_SUCCESS : ISC_R_UNEXPECTED)
00057
00058 ISC_LANG_BEGINDECLS
00059
00060 isc_result_t
00061 isc_condition_waituntil(isc_condition_t *, isc_mutex_t *, isc_time_t *);
00062
00063 ISC_LANG_ENDDECLS
00064
00065 #endif