Aggiornato il comment block dei log RCS
[bertos.git] / kern / sem.h
1 /*!
2  * \file
3  * <!--
4  * Copyright 2001,2004 Develer S.r.l. (http://www.develer.com/)
5  * Copyright 1999,2000,2001 Bernardo Innocenti <bernie@develer.com>
6  * This file is part of DevLib - See devlib/README for information.
7  * -->
8  *
9  * \brief Mutually exclusive semaphores.
10  *        Shared locking not supported in this implementation.
11  *
12  * \version $Id$
13  *
14  * \author Bernardo Innocenti <bernie@develer.com>
15  */
16
17 /*#*
18  *#* $Log$
19  *#* Revision 1.3  2004/08/25 14:12:09  rasky
20  *#* Aggiornato il comment block dei log RCS
21  *#*
22  *#* Revision 1.2  2004/06/03 11:27:09  bernie
23  *#* Add dual-license information.
24  *#*
25  *#* Revision 1.1  2004/05/23 17:27:00  bernie
26  *#* Import kern/ subdirectory.
27  *#*
28  *#*/
29
30 #ifndef KERN_SEM_H
31 #define KERN_SEM_H
32
33 #include "compiler.h"
34 #include <mware/list.h>
35
36 /* Fwd decl */
37 struct Process;
38
39
40 struct Semaphore
41 {
42         struct Process *owner;
43         List            wait_queue;
44         int             nest_count;
45 };
46
47 /*!
48  * \name Process synchronization services
49  * \{
50  */
51 void sem_init(struct Semaphore *s);
52 bool sem_attempt(struct Semaphore *s);
53 void sem_obtain(struct Semaphore *s);
54 void sem_release(struct Semaphore *s);
55 /* \} */
56
57 #endif /* KERN_SEM_H */