~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
18
#ifndef DRIZZLED_INTERNAL_THREAD_VAR_H
19
#define DRIZZLED_INTERNAL_THREAD_VAR_H
20
21
#include <pthread.h>
22
#include <boost/thread/recursive_mutex.hpp>
23
#include <boost/thread/mutex.hpp>
1812.3.7 by Brian Aker
Typdef our lock type.
24
#include <boost/thread/shared_mutex.hpp>
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
25
#include <boost/thread/condition_variable.hpp>
26
27
namespace drizzled
28
{
29
namespace internal
30
{
31
1782 by Brian Aker
This modifies our thread system to be based on boost, and it fixes a
32
static pthread_t wrapper_pthread_self()
33
{
34
  return pthread_self();
35
}
36
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
37
struct st_my_thread_var
38
{
1812.3.5 by Brian Aker
Move to boost condition_any
39
  boost::condition_variable_any suspend;
1786.2.1 by Brian Aker
Current boost work (more conversion).
40
  boost::mutex mutex;
41
  boost::mutex * volatile current_mutex;
1812.3.5 by Brian Aker
Move to boost condition_any
42
  boost::condition_variable_any * volatile current_cond;
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
43
  pthread_t pthread_self;
44
  uint64_t id;
45
  int volatile abort;
46
  struct st_my_thread_var *next,**prev;
47
  void *opt_info;
1782 by Brian Aker
This modifies our thread system to be based on boost, and it fixes a
48
49
  st_my_thread_var() :
50
    current_mutex(0),
51
    current_cond(0),
52
    id(0),
53
    abort(false),
54
    next(0),
55
    prev(0),
56
    opt_info(0)
57
  { 
58
    pthread_self= wrapper_pthread_self();
59
  }
60
61
  ~st_my_thread_var()
62
  {
63
  }
1689.2.10 by Brian Aker
Move thread_var out to its own include file.
64
};
65
66
extern struct st_my_thread_var *_my_thread_var(void);
67
#define my_thread_var (::drizzled::internal::_my_thread_var())
68
69
} /* namespace internal */
70
} /* namespace drizzled */
71
72
#endif /* DRIZZLED_INTERNAL_THREAD_VAR_H */