Orocos Real-Time Toolkit
2.8.3
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
rtt
internal
ListLockFree.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
tag: Peter Soetens Wed Jan 18 14:11:39 CET 2006 ListLockFree.cxx
3
4
ListLockFree.cxx - description
5
-------------------
6
begin : Wed January 18 2006
7
copyright : (C) 2006 Peter Soetens
8
email : peter.soetens@mech.kuleuven.be
9
10
***************************************************************************
11
* This library is free software; you can redistribute it and/or *
12
* modify it under the terms of the GNU General Public *
13
* License as published by the Free Software Foundation; *
14
* version 2 of the License. *
15
* *
16
* As a special exception, you may use this file as part of a free *
17
* software library without restriction. Specifically, if other files *
18
* instantiate templates or use macros or inline functions from this *
19
* file, or you compile this file and link it with other files to *
20
* produce an executable, this file does not by itself cause the *
21
* resulting executable to be covered by the GNU General Public *
22
* License. This exception does not however invalidate any other *
23
* reasons why the executable file might be covered by the GNU General *
24
* Public License. *
25
* *
26
* This library is distributed in the hope that it will be useful, *
27
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
28
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
29
* Lesser General Public License for more details. *
30
* *
31
* You should have received a copy of the GNU General Public *
32
* License along with this library; if not, write to the Free Software *
33
* Foundation, Inc., 59 Temple Place, *
34
* Suite 330, Boston, MA 02111-1307 USA *
35
* *
36
***************************************************************************/
37
38
39
40
#ifdef ORO_PRAGMA_INTERFACE
41
#pragma implementation
42
#endif
43
#include "
ListLockFree.hpp
"
44
45
46
namespace
RTT
{
47
namespace
internal
{
48
49
void
RTT_API
intrusive_ptr_add_ref
(
RTT::internal::IntrusiveStorage
* p ) {
50
oro_atomic_inc
( &p->
ref
);
51
}
52
53
void
RTT_API
intrusive_ptr_release
(
RTT::internal::IntrusiveStorage
* p ) {
54
if
(
oro_atomic_dec_and_test
( &p->
ref
) )
55
delete
p;
56
}
57
58
IntrusiveStorage::IntrusiveStorage
() {
59
oro_atomic_set
(&
ref
,0);
60
}
61
IntrusiveStorage::~IntrusiveStorage
() {
62
}
63
64
#if defined(__GNUC__)
65
// Force an instantiation, so that the compiler checks the syntax.
66
template
class
ListLockFree<double>
;
67
#endif
68
}
69
}
ListLockFree.hpp
RTT::internal::intrusive_ptr_add_ref
void RTT_API intrusive_ptr_add_ref(RTT::internal::IntrusiveStorage *p)
Definition:
ListLockFree.cpp:49
RTT_API
#define RTT_API
Definition:
rtt-config.h:97
RTT::internal::intrusive_ptr_release
void RTT_API intrusive_ptr_release(RTT::internal::IntrusiveStorage *p)
Definition:
ListLockFree.cpp:53
oro_atomic_inc
void oro_atomic_inc(oro_atomic_t *a)
Increment a atomically.
oro_atomic_dec_and_test
int oro_atomic_dec_and_test(oro_atomic_t *a)
Decrement a atomically and test for zero.
internal
RTT::internal::IntrusiveStorage::IntrusiveStorage
IntrusiveStorage()
Definition:
ListLockFree.cpp:58
oro_atomic_set
void oro_atomic_set(oro_atomic_t *a, int n)
Sets the current counter value of the atomic structure a to n.
RTT::internal::IntrusiveStorage
Definition:
ListLockFree.hpp:55
RTT::internal::IntrusiveStorage::~IntrusiveStorage
virtual ~IntrusiveStorage()
Definition:
ListLockFree.cpp:61
RTT
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.
Definition:
Activity.cpp:51
RTT::internal::IntrusiveStorage::ref
oro_atomic_t ref
Definition:
ListLockFree.hpp:57
RTT::internal::ListLockFree
A simple lock-free list implementation to append or erase data of type T.
Definition:
ListLockFree.hpp:85
Generated on Fri Apr 5 2019 12:14:51 for Orocos Real-Time Toolkit by
1.8.11