~drizzle-trunk/drizzle/development

1689.2.10 by Brian Aker
Move thread_var out to its own include file.
1
/* Copyright (C) 2000 MySQL AB
2
3
   This program is free software; you can redistribute it and/or modify
4
   it under the terms of the GNU General Public License as published by
5
   the Free Software Foundation; version 2 of the License.
6
7
   This program is distributed in the hope that it will be useful,
8
   but WITHOUT ANY WARRANTY; without even the implied warranty of
9
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
   GNU General Public License for more details.
11
12
   You should have received a copy of the GNU General Public License
13
   along with this program; if not, write to the Free Software
1802.10.2 by Monty Taylor
Update all of the copyright headers to include the correct address.
14
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
15
16
/* Defines to make different thread packages compatible */
17
2234 by Brian Aker
Mass removal of ifdef/endif in favor of pragma once.
18
#pragma once
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
19
20
#include <pthread.h>
2415.1.4 by Brian Aker
Wrap thread specfic
21
#include <boost/thread/condition_variable.hpp>
22
#include <boost/thread/mutex.hpp>
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
23
#include <boost/thread/recursive_mutex.hpp>
1812.3.7 by Brian Aker
Typdef our lock type.
24
#include <boost/thread/shared_mutex.hpp>
2415.1.4 by Brian Aker
Wrap thread specfic
25
#include <boost/thread/thread.hpp>
26
#include <boost/thread/tss.hpp>
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
27
2280.1.6 by Olaf van der Spek
Refactor
28
namespace drizzled {
29
namespace internal {
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
30
31
struct st_my_thread_var
32
{
1812.3.5 by Brian Aker
Move to boost condition_any
33
  boost::condition_variable_any suspend;
1786.2.1 by Brian Aker
Current boost work (more conversion).
34
  boost::mutex mutex;
2280.1.6 by Olaf van der Spek
Refactor
35
  boost::mutex* volatile current_mutex;
36
  boost::condition_variable_any* volatile current_cond;
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
37
  uint64_t id;
2280.1.6 by Olaf van der Spek
Refactor
38
  bool volatile abort;
39
  void* opt_info;
1782 by Brian Aker
This modifies our thread system to be based on boost, and it fixes a
40
2280.1.6 by Olaf van der Spek
Refactor
41
  st_my_thread_var(uint64_t id0) :
42
    current_mutex(NULL),
43
    current_cond(NULL),
44
    id(id0),
1782 by Brian Aker
This modifies our thread system to be based on boost, and it fixes a
45
    abort(false),
2280.1.6 by Olaf van der Spek
Refactor
46
    opt_info(NULL)
1782 by Brian Aker
This modifies our thread system to be based on boost, and it fixes a
47
  { 
48
  }
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
49
};
50
2415.1.4 by Brian Aker
Wrap thread specfic
51
typedef boost::thread_specific_ptr<st_my_thread_var> thread_local_st;
52
53
thread_local_st& my_thread_var2();
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
54
55
} /* namespace internal */
56
} /* namespace drizzled */