File: engine.h

package info (click to toggle)
evms 2.5.2-1.sarge2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 14,248 kB
  • ctags: 15,488
  • sloc: ansic: 201,340; perl: 12,421; sh: 4,262; makefile: 1,516; yacc: 316; sed: 16
file content (178 lines) | stat: -rw-r--r-- 5,584 bytes parent folder | download
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
/*
 *
 *   (C) Copyright IBM Corp. 2001, 2003
 *
 *   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; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
 *
 */

#include <semaphore.h>
#include "lists.h"

/* Global data exported by engine.c */

extern evms_version_t engine_version;
extern evms_version_t engine_api_version;
extern evms_version_t engine_services_api_version;
extern evms_version_t engine_plugin_api_version;
extern evms_version_t engine_fsim_api_version;
extern evms_version_t engine_cluster_api_version;
extern evms_version_t engine_container_api_version;
extern evms_version_t engine_cluster_api_version;
extern evms_version_t engine_daemon_msg_version;

extern ece_nodeid_t   no_nodeid;
extern ece_nodeid_t * current_nodeid;
extern char         * current_node_name;
extern boolean        local_focus;

extern anchor_t plugins_list;
extern anchor_t disks_list;
extern anchor_t segments_list;
extern anchor_t containers_list;
extern anchor_t regions_list;
extern anchor_t EVMS_objects_list;
extern anchor_t volumes_list;
extern anchor_t kill_sectors_list;
extern anchor_t volume_delete_list;
extern anchor_t deactivate_list;
extern anchor_t rename_volume_list;

extern plugin_record_t * local_disk_manager;
extern plugin_record_t * replace_plugin;
extern plugin_record_t * cluster_manager;
extern cluster_functions_t * ece_funcs;
extern plugin_record_t * cluster_segment_manager;

extern int dm_control_fd;

extern engine_mode_t    engine_mode;
extern debug_level_t    debug_level;

extern char           * log_file_name;
extern int              log_file_fd;
extern boolean          log_usec;
extern boolean          log_pid;
extern u_char           log_buf[];
extern pthread_mutex_t  log_mutex;
#define LOG_BUF_SIZE    (MAX_USER_MESSAGE_LEN + 1024)

extern int           lock_file_fd;
extern size_t        lock_file_size;
extern lock_file_t * lock_file;

extern sem_t   shutdown_sem;

extern boolean is_2_4_kernel;

extern pthread_attr_t pthread_attr_detached;

extern char metadata_db_name[];
extern int metadata_db_fd;


/*
 * Global functions exported by engine.c
 */

/* External APIs provided by engine.c */

extern int evms_get_api_version(evms_version_t * version);

extern int evms_open_engine(char           * node_name,
			    engine_mode_t    mode,
                            ui_callbacks_t * callbacks,
                            debug_level_t    level,
                            char           * log_name);

extern int evms_changes_pending(boolean                 * result,
				change_record_array_t * * changes);

extern int evms_get_debug_level(debug_level_t * level);

extern int evms_set_debug_level(debug_level_t level);

extern int evms_get_kernel_info_level(debug_level_t * level);

extern int evms_set_kernel_info_level(debug_level_t level);

extern int evms_write_log_entry(debug_level_t level,
                                char        * module_name,
                                char        * fmt,
                                ...) __PRINTF_ATTRIBUTE__(3,4);

extern int evms_get_plugin_list(evms_plugin_code_t    type,
                                plugin_search_flags_t flags,
                                handle_array_t    * * plugin_list);

extern int evms_get_plugin_by_ID(plugin_id_t       plugin_ID,
                                 object_handle_t * plugin_handle);

extern int evms_get_plugin_by_name(char            * plugin_name,
                                   object_handle_t * plugin_handle);

extern int evms_update_evms_dev_tree(void);

extern const char * evms_strerror(int err_num);

extern int evms_metadata_backup(const char * directory);

extern int evms_engine_read(object_handle_t handle,
			    lsn_t           lsn,
			    sector_count_t  length,
			    void          * buffer);

extern int evms_engine_write(object_handle_t handle,
			     lsn_t           lsn,
			     sector_count_t  length,
			     void          * buffer);

/* Internal functions to share with other Engine source modules */

extern void timestamp(char        * buf,
                      size_t        len,
		      debug_level_t level);

extern int engine_write_log_entry(debug_level_t level,
                                  char        * fmt,
                                  ...) __PRINTF_ATTRIBUTE__(2,3);

extern int unlock_engine(engine_mode_t mode);

extern void send_shutdown(pid_t pid);

#define MAX_LOCK_MESSAGE_LEN 512
extern int lock_engine(engine_mode_t  mode,
		       const char * * msg);

extern int check_engine_read_access(void);

extern int check_engine_write_access(void);

extern void free_changes_pending_record_array_contents(void * thing);

extern int ensure_app_handle(void * thing);

extern int make_handle_entry(void            * thing,
			     handle_array_t  * ha);

extern int make_user_handle_array(list_anchor_t      list,
				  handle_array_t * * ha);

extern int make_directory(char * dir_name,
			  mode_t mode);

extern boolean is_devfs_installed(void);