Home | History | Annotate | Download | only in dethread
      1 #ifndef _DEMUTEX_H
      2 #define _DEMUTEX_H
      3 /*-------------------------------------------------------------------------
      4  * drawElements Thread Library
      5  * ---------------------------
      6  *
      7  * Copyright 2014 The Android Open Source Project
      8  *
      9  * Licensed under the Apache License, Version 2.0 (the "License");
     10  * you may not use this file except in compliance with the License.
     11  * You may obtain a copy of the License at
     12  *
     13  *      http://www.apache.org/licenses/LICENSE-2.0
     14  *
     15  * Unless required by applicable law or agreed to in writing, software
     16  * distributed under the License is distributed on an "AS IS" BASIS,
     17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     18  * See the License for the specific language governing permissions and
     19  * limitations under the License.
     20  *
     21  *//*!
     22  * \file
     23  * \brief Mutex class.
     24  *//*--------------------------------------------------------------------*/
     25 
     26 #include "deDefs.h"
     27 
     28 DE_BEGIN_EXTERN_C
     29 
     30 typedef deUintptr	deMutex;
     31 
     32 /*--------------------------------------------------------------------*//*!
     33  * \brief Mutex attributes.
     34  *//*--------------------------------------------------------------------*/
     35 typedef enum deMutexFlag_e
     36 {
     37 	/**
     38 	 * \brief Create recursive mutex.
     39 	 *
     40 	 * Recursive mutex can be locked multiple times from single thread
     41 	 * and it is unlocked when lock count from owning thread reaches
     42 	 * zero.
     43 	 */
     44 	DE_MUTEX_RECURSIVE		= (1 << 0)
     45 } deMutexFlag;
     46 
     47 /*--------------------------------------------------------------------*//*!
     48  * \brief Mutex attributes.
     49  *//*--------------------------------------------------------------------*/
     50 typedef struct deMutexAttributes_s
     51 {
     52 	deUint32		flags;
     53 } deMutexAttributes;
     54 
     55 deMutex		deMutex_create		(const deMutexAttributes* attributes);
     56 void		deMutex_destroy		(deMutex mutex);
     57 void		deMutex_lock		(deMutex mutex);
     58 deBool		deMutex_tryLock		(deMutex mutex);
     59 void		deMutex_unlock		(deMutex mutex);
     60 
     61 DE_END_EXTERN_C
     62 
     63 #endif /* _DEMUTEX_H */
     64