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
100
101
102
103
104
105
106
107
108
|
/* Copyright (c) 2003-2006 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
#ifndef EMULATOR_H
#define EMULATOR_H
//===========================================================================
//
// .DESCRIPTION
// This is the main fuction for the AXE VM emulator.
// It contains some global objects and a run method.
//
//===========================================================================
#include <kernel_types.h>
#include <TransporterRegistry.hpp>
extern class JobTable globalJobTable;
extern class TimeQueue globalTimeQueue;
extern class FastScheduler globalScheduler;
extern class TransporterRegistry globalTransporterRegistry;
extern struct GlobalData globalData;
#ifdef VM_TRACE
extern class SignalLoggerManager globalSignalLoggers;
#endif
#ifndef NO_EMULATED_JAM
#define EMULATED_JAM_SIZE 1024
#define JAM_MASK ((EMULATED_JAM_SIZE * 4) - 1)
extern Uint8 theEmulatedJam[];
extern Uint32 theEmulatedJamIndex;
// last block entry, used in dumpJam() if jam contains no block entries
extern Uint32 theEmulatedJamBlockNumber;
#else
const Uint8 theEmulatedJam[]=0;
const Uint32 theEmulatedJamIndex=0;
#endif
struct EmulatorData {
class Configuration * theConfiguration;
class WatchDog * theWatchDog;
class ThreadConfig * theThreadConfig;
class SimBlockList * theSimBlockList;
class SocketServer * m_socket_server;
class Ndbd_mem_manager * m_mem_manager;
/**
* Constructor
*
* Sets all the pointers to NULL
*/
EmulatorData();
/**
* Create all the objects
*/
void create();
/**
* Destroys all the objects
*/
void destroy();
};
extern struct EmulatorData globalEmulatorData;
enum NdbShutdownType {
NST_Normal,
NST_Watchdog,
NST_ErrorHandler,
NST_ErrorHandlerSignal,
NST_Restart,
NST_ErrorInsert,
NST_ErrorHandlerStartup
};
enum NdbRestartType {
NRT_Default = 0,
NRT_NoStart_Restart = 1, // -n
NRT_DoStart_Restart = 2, //
NRT_NoStart_InitialStart = 3, // -n -i
NRT_DoStart_InitialStart = 4 // -i
};
/**
* Shutdown/restart Ndb
*
* @param type - Type of shutdown/restart
* @param restartType - Type of restart (only valid if type == NST_Restart)
*/
void
NdbShutdown(NdbShutdownType type,
NdbRestartType restartType = NRT_Default);
#endif
|