# axis2_thread_mutex.h

    00001
    00002 /*
    00003  * Licensed to the Apache Software Foundation (ASF) under one or more
    00004  * contributor license agreements.  See the NOTICE file distributed with
    00005  * this work for additional information regarding copyright ownership.
    00006  * The ASF licenses this file to You under the Apache License, Version 2.0
    00007  * (the "License"); you may not use this file except in compliance with
    00008  * the License.  You may obtain a copy of the License at
    00009  *
    00010  *      http://www.apache.org/licenses/LICENSE-2.0
    00011  *
    00012  * Unless required by applicable law or agreed to in writing, software
    00013  * distributed under the License is distributed on an "AS IS" BASIS,
    00014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    00015  * See the License for the specific language governing permissions and
    00016  * limitations under the License.
    00017  */
    00018
    00019 #ifndef AXIS2_THREAD_MUTEX_H
    00020 #define AXIS2_THREAD_MUTEX_H
    00021
    00027 #include <axis2_const.h>
    00028 #include <axutil_allocator.h>
    00029
    00030 #ifdef __cplusplus
    00031 extern "C"
    00032 {
    00033 #endif                          /* __cplusplus */
    00034
    00042     typedef struct axutil_thread_mutex_t axutil_thread_mutex_t;
    00043
    00044 #define AXIS2_THREAD_MUTEX_DEFAULT  0x0
    00046 #define AXIS2_THREAD_MUTEX_NESTED   0x1
    00048 #define AXIS2_THREAD_MUTEX_UNNESTED 0x2
    00066     AXIS2_EXTERN axutil_thread_mutex_t *AXIS2_CALL
    00067
    00068     axutil_thread_mutex_create(
    00069         axutil_allocator_t * allocator,
    00070         unsigned int flags);
    00071
    00077     AXIS2_EXTERN axis2_status_t AXIS2_CALL
    00078     axutil_thread_mutex_lock(
    00079         axutil_thread_mutex_t * mutex);
    00080
    00086     AXIS2_EXTERN axis2_status_t AXIS2_CALL
    00087     axutil_thread_mutex_trylock(
    00088         axutil_thread_mutex_t * mutex);
    00089
    00094     AXIS2_EXTERN axis2_status_t AXIS2_CALL
    00095     axutil_thread_mutex_unlock(
    00096         axutil_thread_mutex_t * mutex);
    00097
    00102     AXIS2_EXTERN axis2_status_t AXIS2_CALL
    00103     axutil_thread_mutex_destroy(
    00104         axutil_thread_mutex_t * mutex);
    00105
    00108 #ifdef __cplusplus
    00109 }
    00110 #endif
    00111
    00112 #endif                          /* AXIS2_THREAD_MUTEX_H */