Main Page | Data Structures | File List | Data Fields | Globals | Related Pages

include/critsec.h

Go to the documentation of this file.
00001 
00008 /*
00009  *  The contents of this file are subject to the Mozilla Public License
00010  *  Version 1.0 (the "License"); you may not use this file except in
00011  *  compliance with the License. You may obtain a copy of the License
00012  *  at http://www.mozilla.org/MPL/
00013  *
00014  *  Software distributed under the License is distributed on an "AS IS"
00015  *  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
00016  *  the License for the specific language governing rights and
00017  *  limitations under the License.
00018  *
00019  *  The Original Code is legOS code, released October 17, 1999.
00020  *
00021  *  The Initial Developer of the Original Code is Markus L. Noga.
00022  *  Portions created by Markus L. Noga are Copyright (C) 1999
00023  *  Markus L. Noga. All Rights Reserved.
00024  *
00025  *  Contributor(s): Joseph A. Woolley <jawoolley@users.sourceforge.net>
00026  */
00027 
00028 #if !defined(__critsec_h__)
00029 #define __critsec_h__
00030 
00031 #if defined(__cplusplus)
00032 extern "C" {
00033 #endif // __cplusplus
00034 
00035 #include <config.h>
00036 
00037 #if defined(CONF_TM) && defined(CONF_CRITICAL_SECTIONS)
00038 #include <sys/tm.h>
00039 #include <atomic.h>
00040 
00041 #ifndef DOXYGEN_SHOULD_SKIP_INTERNALS
00042 
00043 
00048 struct critsec {
00049   atomic_t count;
00050   tdata_t* task;
00051 };
00052 #endif //  DOXYGEN_SHOULD_SKIP_INTERNALS
00053 
00055 typedef struct critsec critsec_t;
00056 
00058 
00060 #define locked_decrement(counter) atomic_dec(counter)
00061 
00063 
00069 extern wakeup_t wait_critical_section(wakeup_t data);
00070 
00072 
00079 #define initialize_critical_section(cs) (cs)->count=0
00080 
00082 
00090 extern int enter_critical_section(critsec_t* cs);
00091 
00093 
00101 #define leave_critical_section(cs) atomic_dec(&(cs)->count)
00102 
00104 
00111 #define destroy_critical_section(cs)
00112 
00113 #endif // CONF_TM && CONF_CRITICAL_SECTIONS
00114 
00115 #if defined(__cplusplus)
00116 }
00117 #endif // __cplusplus
00118 
00119 #endif // __critsec_h__

brickOS is released under the Mozilla Public License.
Original code copyright 1998-2002 by the authors.

Generated on Mon Feb 16 21:01:52 2004 for brickOS C by doxygen 1.3.5