The Pedigree Project
0.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
src
system
include
pedigree
kernel
process
ConditionVariable.h
1
/*
2
* Copyright (c) 2008-2014, Pedigree Developers
3
*
4
* Please see the CONTRIB file in the root of the source tree for a full
5
* list of contributors.
6
*
7
* Permission to use, copy, modify, and distribute this software for any
8
* purpose with or without fee is hereby granted, provided that the above
9
* copyright notice and this permission notice appear in all copies.
10
*
11
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18
*/
19
20
#ifndef KERNEL_PROCESS_CONDITIONVARIABLE_H
21
#define KERNEL_PROCESS_CONDITIONVARIABLE_H
22
23
#include "pedigree/kernel/Spinlock.h"
24
#include "pedigree/kernel/compiler.h"
25
#include "pedigree/kernel/time/Time.h"
26
#include "pedigree/kernel/utilities/List.h"
27
#include "pedigree/kernel/utilities/Result.h"
28
#include "pedigree/kernel/utilities/new"
29
30
class
Mutex
;
31
class
Thread
;
32
36
class
EXPORTED_PUBLIC
ConditionVariable
37
{
38
public
:
39
enum
Error
40
{
41
NoError,
42
TimedOut,
43
ThreadTerminating,
44
MutexNotLocked,
45
MutexNotAcquired
46
};
47
48
typedef
Result<bool, Error>
WaitResult
;
49
50
ConditionVariable
();
51
~
ConditionVariable
();
52
64
WaitResult wait(
Mutex
&mutex, Time::Timestamp &timeout);
65
67
WaitResult wait(
Mutex
&mutex);
68
70
void
signal();
71
73
void
broadcast();
74
75
private
:
77
Spinlock
m_Lock
;
78
80
List<Thread *>
m_Waiters
;
81
82
#ifndef THREADS
83
void
*m_Private;
85
#endif
86
};
87
88
#endif
ConditionVariable::m_Lock
Spinlock m_Lock
Lock around m_Waiters.
Definition:
ConditionVariable.h:77
EXPORTED_PUBLIC
#define EXPORTED_PUBLIC
Definition:
system/include/pedigree/kernel/compiler.h:78
ConditionVariable::m_Waiters
List< Thread * > m_Waiters
Threads waiting for a signal.
Definition:
ConditionVariable.h:80
Mutex
Definition:
Mutex.h:58
Result
Definition:
Result.h:36
Spinlock
Definition:
Spinlock.h:27
List< Thread * >
Thread
Definition:
Thread.h:54
Error
Definition:
errors.h:24
ConditionVariable
Definition:
ConditionVariable.h:36
Generated on Fri Jan 24 2020 06:46:12 for The Pedigree Project by
1.8.11