1
/*******************************************************************
5
* Mutual exclusion object / dummy generic interface.
7
* Copyright 1996-1999 by
8
* David Turner, Robert Wilhelm, and Werner Lemberg.
10
* This file is part of the FreeType project, and may only be used
11
* modified and distributed under the terms of the FreeType project
12
* license, LICENSE.TXT. By continuing to use, modify, or distribute
13
* this file you indicate that you have read the license and
14
* understand and accept it fully.
16
* Note: This file provides a generic interface. The implementation
17
* to compile depends on your system and the type of
18
* library you want to build (either singly-threaded,
19
* thread-safe or re-entrant).
21
* Please read the technical documentation for more details.
23
******************************************************************/
31
typedef void* TMutex; /* typeless reference to a mutex */
33
#ifdef TT_CONFIG_OPTION_THREAD_SAFE /* thread-safe and re-entrant builds */
35
#define MUTEX_Create( mutex ) TT_Mutex_Create ( &(mutex) )
36
#define MUTEX_Destroy( mutex ) TT_Mutex_Delete ( &(mutex) )
37
#define MUTEX_Lock( mutex ) TT_Mutex_Lock ( &(mutex) )
38
#define MUTEX_Release( mutex ) TT_Mutex_Release( &(mutex) )
40
LOCAL_DEF void TT_Mutex_Create ( TMutex* mutex ); /* Create a new mutex */
41
LOCAL_DEF void TT_Mutex_Delete ( TMutex* mutex ); /* Delete a mutex */
42
LOCAL_DEF void TT_Mutex_Lock ( TMutex* mutex ); /* Lock a mutex. */
43
LOCAL_DEF void TT_Mutex_Release( TMutex* mutex ); /* Release a mutex */
45
#else /* for the single-thread build */
47
#define MUTEX_Create( mutex ) /* nothing */
48
#define MUTEX_Destroy( mutex ) /* nothing */
49
#define MUTEX_Lock( mutex ) /* nothing */
50
#define MUTEX_Release( mutex ) /* nothing */
52
/* No code will be generated for mutex operations */
54
#endif /* TT_CONFIG_OPTION_THREAD_SAFE */
56
#endif /* TTMUTEX_H */