home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / kaffe-0.5p4-src.tgz / tar.out / contrib / kaffe / kaffevm / locks.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  1KB  |  62 lines

  1. /*
  2.  * locks.h
  3.  * Manage locking system
  4.  * This include the mutex's and cv's.
  5.  *
  6.  * Copyright (c) 1996 Systems Architecture Research Centre,
  7.  *           City University, London, UK.
  8.  *
  9.  * See the file "license.terms" for information on usage and redistribution
  10.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  11.  *
  12.  * Written by Tim Wilkinson <tim@sarc.city.ac.uk>, February-August 1996.
  13.  */
  14.  
  15. #ifndef __locks_h
  16. #define __locks_h
  17.  
  18. #include "md.h"
  19.  
  20. extern int64 waitforever;
  21.  
  22. #if defined(USE_INTERNAL_THREADS)
  23.  
  24. struct _thread;
  25.  
  26. typedef struct _iMux {
  27.     struct _thread*        holder;
  28.     int            count;
  29.     struct _thread*        muxWaiters;
  30. } iMux;
  31.  
  32. typedef struct _iCv {
  33.     struct _thread*        cvWaiters;
  34.     struct _iMux*        mux;
  35. } iCv;
  36.  
  37. extern void internalLockMutex(iMux*);
  38. extern void internalUnlockMutex(iMux*);
  39. extern void internalWaitCond(iMux*, iCv*, int64);
  40. extern void internalSignalCond(iCv*);
  41. extern void internalBroadcastCond(iCv*);
  42.  
  43. #define    lockMutex(_obj)        internalLockMutex(&(_obj)->mux)
  44. #define    unlockMutex(_obj)    internalUnlockMutex(&(_obj)->mux)
  45. #define    waitCond(_obj, _tm)    internalWaitCond(&(_obj)->mux,&(_obj)->cv,(_tm))
  46. #define    signalCond(_obj)    internalSignalCond(&(_obj)->cv)
  47. #define    broadcastCond(_obj)    internalBroadcastCond(&(_obj)->cv)
  48.  
  49. #else
  50. /*
  51.  * Don't know what we'll do for native threading yet.
  52.  */
  53. #define    lockMutex(_obj)        ???
  54. #define    unlockMutex(_obj)    ???
  55. #define    waitCond(_obj, _tm)    ???
  56. #define    signalCond(_obj)    ???
  57. #define    broadcastCond(_obj)    ???
  58.  
  59. #endif
  60.  
  61. #endif
  62.