| #ifndef AWS_COMMON_CONDITION_VARIABLE_H |
| #define AWS_COMMON_CONDITION_VARIABLE_H |
|
|
| |
| |
| |
| |
|
|
| #include <aws/common/common.h> |
| #ifndef _WIN32 |
| # include <pthread.h> |
| #endif |
|
|
| AWS_PUSH_SANE_WARNING_LEVEL |
|
|
| struct aws_mutex; |
|
|
| struct aws_condition_variable; |
|
|
| typedef bool(aws_condition_predicate_fn)(void *); |
|
|
| struct aws_condition_variable { |
| #ifdef _WIN32 |
| void *condition_handle; |
| #else |
| pthread_cond_t condition_handle; |
| #endif |
| bool initialized; |
| }; |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| #ifdef _WIN32 |
| # define AWS_CONDITION_VARIABLE_INIT {.condition_handle = NULL, .initialized = true} |
| #else |
| # define AWS_CONDITION_VARIABLE_INIT {.condition_handle = PTHREAD_COND_INITIALIZER, .initialized = true} |
| #endif |
|
|
| AWS_EXTERN_C_BEGIN |
|
|
| |
| |
| |
| AWS_COMMON_API |
| int aws_condition_variable_init(struct aws_condition_variable *condition_variable); |
|
|
| |
| |
| |
| AWS_COMMON_API |
| void aws_condition_variable_clean_up(struct aws_condition_variable *condition_variable); |
|
|
| |
| |
| |
| AWS_COMMON_API |
| int aws_condition_variable_notify_one(struct aws_condition_variable *condition_variable); |
|
|
| |
| |
| |
| AWS_COMMON_API |
| int aws_condition_variable_notify_all(struct aws_condition_variable *condition_variable); |
|
|
| |
| |
| |
| |
| |
| AWS_COMMON_API |
| int aws_condition_variable_wait(struct aws_condition_variable *condition_variable, struct aws_mutex *mutex); |
|
|
| |
| |
| |
| |
| |
| AWS_COMMON_API |
| int aws_condition_variable_wait_pred( |
| struct aws_condition_variable *condition_variable, |
| struct aws_mutex *mutex, |
| aws_condition_predicate_fn *pred, |
| void *pred_ctx); |
|
|
| |
| |
| |
| |
| |
| AWS_COMMON_API |
| int aws_condition_variable_wait_for( |
| struct aws_condition_variable *condition_variable, |
| struct aws_mutex *mutex, |
| int64_t time_to_wait); |
|
|
| |
| |
| |
| |
| |
| AWS_COMMON_API |
| int aws_condition_variable_wait_for_pred( |
| struct aws_condition_variable *condition_variable, |
| struct aws_mutex *mutex, |
| int64_t time_to_wait, |
| aws_condition_predicate_fn *pred, |
| void *pred_ctx); |
|
|
| AWS_EXTERN_C_END |
| AWS_POP_SANE_WARNING_LEVEL |
|
|
| #endif |
|
|