unix/SysThread.hpp
Go to the documentation of this file.
1
/*----------------------------------------------------------------------------*/
2
/* */
3
/* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */
4
/* Copyright (c) 2005-2009 Rexx Language Association. All rights reserved. */
5
/* */
6
/* This program and the accompanying materials are made available under */
7
/* the terms of the Common Public License v1.0 which accompanies this */
8
/* distribution. A copy is also available at the following address: */
9
/* http://www.ibm.com/developerworks/oss/CPLv1.0.htm */
10
/* */
11
/* Redistribution and use in source and binary forms, with or */
12
/* without modification, are permitted provided that the following */
13
/* conditions are met: */
14
/* */
15
/* Redistributions of source code must retain the above copyright */
16
/* notice, this list of conditions and the following disclaimer. */
17
/* Redistributions in binary form must reproduce the above copyright */
18
/* notice, this list of conditions and the following disclaimer in */
19
/* the documentation and/or other materials provided with the distribution. */
20
/* */
21
/* Neither the name of Rexx Language Association nor the names */
22
/* of its contributors may be used to endorse or promote products */
23
/* derived from this software without specific prior written permission. */
24
/* */
25
/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
26
/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
27
/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */
28
/* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
29
/* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
30
/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
31
/* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
32
/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */
33
/* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
34
/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
35
/* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
36
/* */
37
/*----------------------------------------------------------------------------*/
38
/******************************************************************************/
39
/* REXX Kernel SysThread.hpp */
40
/* */
41
/* Abstract system thread class. This is just a template class, which no */
42
/* virtual functions defined. This gives the implementing platform a lot of */
43
/* implementation flexibility to use inline methods where appropriate, */
44
/* particularly for functions that are NOPs. The platform is also free to */
45
/* define any internal data necessary to implement the thread functions. */
46
/* */
47
/******************************************************************************/
48
49
#ifndef Included_SysThread
50
#define Included_SysThread
51
52
#include <pthread.h>
53
#include "
rexx.h
"
54
55
56
class
SysThread
{
57
58
public
:
59
60
typedef
enum
61
{
62
LOW_PRIORITY
,
63
MEDIUM_PRIORITY
,
64
GUARDED_PRIORITY
,
65
HIGH_PRIORITY
66
}
ThreadPriority
;
67
68
enum
69
{
70
THREAD_STACK_SIZE
= 1024*96
71
};
72
73
SysThread
() :
attached
(false),
_threadID
(0) { ; }
74
virtual
~SysThread
() { ; }
75
76
SysThread
(pthread_t tID)
77
{
78
_threadID
= (pthread_t)tID;
79
}
80
81
virtual
void
attachThread
();
82
void
setPriority
(
int
priority);
83
virtual
void
dispatch
();
84
void
terminate
();
85
void
startup
();
86
void
shutdown
();
87
void
yield
();
88
inline
uintptr_t
threadID
() {
89
return
(
uintptr_t
)
_threadID
;
90
}
91
bool
equals
(
SysThread
&other);
92
inline
size_t
hash
() {
return
(((
size_t
)
_threadID
) >> 8) * 37; }
93
94
95
protected
:
96
void
createThread
();
97
98
bool
attached
;
// indicates whether this was a created thread or attached
99
pthread_t
_threadID
;
// thread identifier
100
};
101
102
#endif
SysThread
Definition:
unix/SysThread.hpp:56
SysThread::_threadID
pthread_t _threadID
Definition:
unix/SysThread.hpp:99
SysThread::startup
void startup()
Definition:
unix/SysThread.cpp:91
SysThread::~SysThread
virtual ~SysThread()
Definition:
unix/SysThread.hpp:74
SysThread::dispatch
virtual void dispatch()
Definition:
unix/SysThread.cpp:75
SysThread::hash
size_t hash()
Definition:
unix/SysThread.hpp:92
SysThread::shutdown
void shutdown()
Definition:
unix/SysThread.cpp:97
SysThread::attachThread
virtual void attachThread()
Definition:
unix/SysThread.cpp:54
SysThread::createThread
void createThread()
Definition:
unix/SysThread.cpp:123
SysThread::terminate
void terminate()
Definition:
unix/SysThread.cpp:81
SysThread::attached
bool attached
Definition:
unix/SysThread.hpp:98
SysThread::ThreadPriority
ThreadPriority
Definition:
unix/SysThread.hpp:61
SysThread::MEDIUM_PRIORITY
@ MEDIUM_PRIORITY
Definition:
unix/SysThread.hpp:63
SysThread::HIGH_PRIORITY
@ HIGH_PRIORITY
Definition:
unix/SysThread.hpp:65
SysThread::GUARDED_PRIORITY
@ GUARDED_PRIORITY
Definition:
unix/SysThread.hpp:64
SysThread::LOW_PRIORITY
@ LOW_PRIORITY
Definition:
unix/SysThread.hpp:62
SysThread::yield
void yield()
Definition:
unix/SysThread.cpp:103
SysThread::THREAD_STACK_SIZE
@ THREAD_STACK_SIZE
Definition:
unix/SysThread.hpp:70
SysThread::setPriority
void setPriority(int priority)
Definition:
unix/SysThread.cpp:62
SysThread::SysThread
SysThread(pthread_t tID)
Definition:
unix/SysThread.hpp:76
SysThread::SysThread
SysThread()
Definition:
unix/SysThread.hpp:73
SysThread::equals
bool equals(SysThread &other)
Definition:
unix/SysThread.cpp:109
SysThread::threadID
uintptr_t threadID()
Definition:
unix/SysThread.hpp:88
rexx.h
uintptr_t
UINT_PTR uintptr_t
Definition:
windows/rexxapitypes.h:50
oorexx
executor
sandbox
jlf
trunk
common
platform
unix
SysThread.hpp
Generated by
1.9.2