X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=include%2Fyaz%2Fmutex.h;h=4a740e53ca8d2b61d631fb2e1ae663fb0060cdce;hp=6ef4382bfc0d6db97419c18c11fd4144560c70ee;hb=211fa151f2239cfecd08a212e00be8d27f7a35a7;hpb=79c68f7855e83d0a9c641dadb8a0a378cf343c92 diff --git a/include/yaz/mutex.h b/include/yaz/mutex.h index 6ef4382..4a740e5 100644 --- a/include/yaz/mutex.h +++ b/include/yaz/mutex.h @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2010 Index Data. + * Copyright (C) 1995-2011 Index Data. * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -33,6 +33,7 @@ #define YAZ_MUTEX_H #include +#include #include YAZ_BEGIN_CDECL @@ -40,6 +41,9 @@ YAZ_BEGIN_CDECL /** \brief YAZ MUTEX opaque pointer */ typedef struct yaz_mutex *YAZ_MUTEX; +/** \brief YAZ condition opaque pointer */ +typedef struct yaz_cond *YAZ_COND; + /** \brief create MUTEX \param mutexp is pointer to MUTEX handle (*mutexp must be NULL) @@ -80,8 +84,49 @@ YAZ_EXPORT void yaz_mutex_destroy(YAZ_MUTEX *mutexp); This function should be called after a MUTEX is created but before it is used for locking. */ +YAZ_EXPORT void yaz_mutex_set_name(YAZ_MUTEX mutex, int log_level, const char *name); +/** \brief creates condition variable + \param p reference to condition handle + + Upon successful completion *p holds the condition handle; *p = 0 + on error. +*/ +YAZ_EXPORT void yaz_cond_create(YAZ_COND *p); + +/** \brief destroys condition variable + \param p reference to condition handle + + Upon completion *p holds 0. +*/ +YAZ_EXPORT +void yaz_cond_destroy(YAZ_COND *p); + +struct timeval; + +/** \brief waits for condition + \param p condition variable handle + \param m mutex + \param abstime wait until this time; 0 for indefinite wait + + Semantics like pthread_cond_wait. +*/ +YAZ_EXPORT +int yaz_cond_wait(YAZ_COND p, YAZ_MUTEX m, const struct timeval *abstime); + +/** \brief unblock one thread waiting for block + \param p condition variable handle +*/ +YAZ_EXPORT +int yaz_cond_signal(YAZ_COND p); + +/** \brief unblock all threads waiting for block + \param p condition variable handle +*/ +YAZ_EXPORT +int yaz_cond_broadcast(YAZ_COND p); + YAZ_END_CDECL #endif