Loading...
Searching...
No Matches
globus_thread_rw_mutex.h
/*
* Copyright 1999-2006 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef GLOBUS_THREAD_RW_MUTEX_H
#define GLOBUS_THREAD_RW_MUTEX_H 1
#include "globus_common_include.h"
#include "globus_thread.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct
{
globus_mutex_t mutex;
struct globus_i_rw_mutex_waiter_s * waiters;
struct globus_i_rw_mutex_waiter_s ** tail;
struct globus_i_rw_mutex_waiter_s * idle;
globus_bool_t writing;
int readers;
} globus_rw_mutex_t;
typedef int globus_rw_mutexattr_t;
int
globus_rw_mutex_init(
globus_rw_mutex_t * rw_lock,
globus_rw_mutexattr_t * attr);
int
globus_rw_mutex_readlock(
globus_rw_mutex_t * rw_lock);
int
globus_rw_mutex_writelock(
globus_rw_mutex_t * rw_lock);
int
globus_rw_mutex_readunlock(
globus_rw_mutex_t * rw_lock);
int
globus_rw_mutex_writeunlock(
globus_rw_mutex_t * rw_lock);
int
globus_rw_mutex_destroy(
globus_rw_mutex_t * rw_lock);
int
globus_rw_cond_wait(
globus_cond_t * cond,
globus_rw_mutex_t * rw_lock);
int
globus_rw_cond_timedwait(
globus_cond_t * cond,
globus_rw_mutex_t * rw_lock,
globus_abstime_t * abstime);
#ifdef __cplusplus
}
#endif
#endif /* GLOBUS_THREAD_RW_MUTEX_H */
globus_common_include.h
Include System Headers.
globus_thread.h
Globus Threading Abstraction.
globus_bool_t
int globus_bool_t
Boolean type.
Definition globus_types.h:93
globus_cond_t
Condition variable.
Definition globus_thread.h:125
globus_mutex_t
Mutex.
Definition globus_thread.h:108