summaryrefslogtreecommitdiff
path: root/performance-tests/Synch-Benchmarks/Benchmark.cpp
blob: 54b82c346b87fa586d0ab202fb52034614ffa3a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// $Id$

#define  ACE_BUILD_SVC_DLL
#include "Benchmark.h"

#if defined (ACE_HAS_THREADS)

// Global variables (used by the dynamically linked services).
ACE_Svc_Export int synch_count;
int buffer;

// Initialize the static variables.
/* static */
sig_atomic_t Benchmark::done_ = 0;

sig_atomic_t
Benchmark::done (void)
{
  return Benchmark::done_;
}

int
Benchmark::thr_id (void)
{
#if defined (ACE_HAS_PTHREADS) || defined (ACE_HAS_DCETHREADS) || defined (VXWORKS)
  // This invokes the thread-specific storage smart pointer.
  return this->id_->thr_id ();
#else
  return ACE_Thread::self ();
#endif /* ACE_HAS_PTHREADS || ACE_HAS_DCETHREADS || VXWORKS */
}

void
Benchmark::done (sig_atomic_t d)
{
  Benchmark::done_ = d;
}

int
Benchmark::svc (void)
{
  return -1;
}

int
Benchmark::init (int, char **)
{
  return 1;
}

int
Benchmark::info (char **, size_t) const
{
  return -1;
}

int
Benchmark::fini (void)
{
  return -1;
}

void *
Benchmark::svc_run (Benchmark *bp)
{
  return (void *) (bp->svc () == -1 ? -1 : 0);
}

#if defined (ACE_HAS_PTHREADS) || defined (ACE_HAS_DCETHREADS) || defined (VXWORKS)
/* static */
MT_INT Thr_ID::thread_id_ (0);

Thr_ID::Thr_ID (void)
  : thr_id_ (++Thr_ID::thread_id_)
{
}

int
Thr_ID::thr_id (void)
{
  return this->thr_id_;
}

void
Thr_ID::thr_id (int i)
{
  this->thr_id_ = i;
}

#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
template class ACE_TSS<Thr_ID>;
template class ACE_Atomic_Op<ACE_Thread_Mutex, int>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate ACE_TSS<Thr_ID>
#pragma instantiate ACE_Atomic_Op<ACE_Thread_Mutex, int>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */

#endif /* ACE_HAS_PTHREADS || ACE_HAS_DCETHREADS || VXWORKS */
#endif /* ACE_HAS_THREADS */