Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*******************************************************************
  2.  *
  3.  *  ttmutex.h                                                1.0
  4.  *
  5.  *    Mutual exclusion object / dummy generic interface.
  6.  *
  7.  *  Copyright 1996-1999 by
  8.  *  David Turner, Robert Wilhelm, and Werner Lemberg.
  9.  *
  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.
  15.  *
  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).
  20.  *
  21.  *         Please read the technical documentation for more details.
  22.  *
  23.  ******************************************************************/
  24.  
  25. #ifndef TTMUTEX_H
  26. #define TTMUTEX_H
  27.  
  28. #include "ttconfig.h"
  29.  
  30.  
  31.   typedef  void*  TMutex;  /* typeless reference to a mutex */
  32.  
  33. #ifdef TT_CONFIG_OPTION_THREAD_SAFE /* thread-safe and re-entrant builds */
  34.  
  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) )
  39.  
  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    */
  44.  
  45. #else  /* for the single-thread build */
  46.  
  47. #define MUTEX_Create( mutex )   /* nothing */
  48. #define MUTEX_Destroy( mutex )  /* nothing */
  49. #define MUTEX_Lock( mutex )     /* nothing */
  50. #define MUTEX_Release( mutex )  /* nothing */
  51.  
  52.   /* No code will be generated for mutex operations */
  53.  
  54. #endif /* TT_CONFIG_OPTION_THREAD_SAFE */
  55.  
  56. #endif /* TTMUTEX_H */
  57.  
  58.  
  59. /* END */
  60.