~eday/drizzle/eday-dev

« back to all changes in this revision

Viewing changes to drizzled/internal/my_sys.h

  • Committer: Eric Day
  • Date: 2010-01-07 20:02:38 UTC
  • mfrom: (971.3.291 staging)
  • Revision ID: eday@oddments.org-20100107200238-uqw8v6kv9pl7nny5
Merged trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
19
 */
20
20
 
21
 
#ifndef MYSYS_MY_SYS_H
22
 
#define MYSYS_MY_SYS_H
 
21
#ifndef DRIZZLED_INTERNAL_MY_SYS_H
 
22
#define DRIZZLED_INTERNAL_MY_SYS_H
 
23
 
 
24
#ifdef __cplusplus
 
25
# include <cstdio>
 
26
#else
 
27
# include <stdio.h>
 
28
#endif
23
29
 
24
30
#include <errno.h>
25
 
#define my_errno (errno)
26
 
 
27
 
#include <mysys/my_pthread.h>
28
 
 
29
 
#include <mystrings/m_ctype.h>                    /* for CHARSET_INFO */
 
31
 
 
32
#include "drizzled/internal/my_pthread.h"
 
33
 
 
34
#include "drizzled/charset_info.h"                    /* for CHARSET_INFO */
30
35
#include <stdarg.h>
31
 
#include <mysys/typelib.h>
32
 
#include <mysys/aio_result.h>
33
 
 
34
 
#include <mysys/my_alloc.h>
 
36
#include "drizzled/typelib.h"
 
37
#include "drizzled/internal/aio_result.h"
 
38
 
 
39
#include "drizzled/memory/root.h"
 
40
#include "drizzled/my_error.h"
 
41
 
 
42
#ifndef errno                           /* did we already get it? */
 
43
#ifdef HAVE_ERRNO_AS_DEFINE
 
44
#include <errno.h>                      /* errno is a define */
 
45
#else
 
46
extern int errno;                       /* declare errno */
 
47
#endif
 
48
#endif                                  /* #ifndef errno */
 
49
 
 
50
#include <drizzled/dynamic_array.h>
 
51
 
 
52
#include <sys/mman.h>
 
53
 
 
54
#include "drizzled/qsort_cmp.h"
 
55
 
 
56
#ifndef MAP_NOSYNC
 
57
#define MAP_NOSYNC      0
 
58
#endif
 
59
#ifndef MAP_NORESERVE
 
60
#define MAP_NORESERVE 0         /* For irix and AIX */
 
61
#endif
 
62
 
35
63
 
36
64
/* Sun Studio does not inject this into main namespace yet */
37
65
#if defined(__cplusplus)
40
68
 
41
69
#define MY_INIT(name);          { my_progname= name; my_init(); }
42
70
 
43
 
/* Max width of screen (for error messages) */
44
 
#define SC_MAXWIDTH 256
45
 
#define ERRMSGSIZE      (SC_MAXWIDTH)   /* Max length of a error message */
46
 
#define NRERRBUFFS      (2)     /* Buffers for parameters */
47
 
#define MY_FILE_ERROR   ((size_t) -1)
48
71
 
49
72
        /* General bitmaps for my_func's */
50
73
#define MY_FFNF         1       /* Fatal if file not found */
78
101
#define ME_COLOUR1      ((1 << ME_HIGHBYTE))    /* Possibly error-colours */
79
102
#define ME_COLOUR2      ((2 << ME_HIGHBYTE))
80
103
#define ME_COLOUR3      ((3 << ME_HIGHBYTE))
81
 
#define ME_FATALERROR   1024    /* Fatal statement error */
82
104
 
83
105
        /* Bits in last argument to fn_format */
84
106
#define MY_REPLACE_DIR          1       /* replace dir in name with 'dir' */
97
119
#define MY_WAIT_GIVE_USER_A_MESSAGE     10      /* Every 10 times of prev */
98
120
#define DFLT_INIT_HITS  3
99
121
 
100
 
        /* root_alloc flags */
101
 
#define MY_KEEP_PREALLOC        1
102
 
#define MY_MARK_BLOCKS_FREE     2  /* move used to free list and reuse them */
103
 
 
104
122
        /* Internal error numbers (for assembler functions) */
105
123
#define MY_ERRNO_EDOM           33
106
124
#define MY_ERRNO_ERANGE         34
116
134
extern "C" {
117
135
#endif
118
136
 
119
 
typedef int  (*qsort_cmp)(const void *,const void *);
120
 
typedef int  (*qsort_cmp2)(void*, const void *,const void *);
 
137
typedef uint64_t my_off_t;
121
138
 
122
139
#define TRASH(A,B) /* nothing */
123
140
 
124
 
#ifndef errno                           /* did we already get it? */
125
 
#ifdef HAVE_ERRNO_AS_DEFINE
126
 
#include <errno.h>                      /* errno is a define */
127
 
#else
128
 
extern int errno;                       /* declare errno */
129
 
#endif
130
 
#endif                                  /* #ifndef errno */
131
141
extern char *home_dir;                  /* Home directory for user */
132
142
extern const char *my_progname;         /* program-name (printed in errors) */
133
 
typedef void (*error_handler_func)(uint32_t my_err, const char *str,myf MyFlags);
134
 
extern error_handler_func error_handler_hook;
135
143
extern uint32_t my_file_limit;
136
144
 
137
 
/* charsets */
138
 
extern const CHARSET_INFO *default_charset_info;
139
 
extern CHARSET_INFO *all_charsets[256];
140
 
extern CHARSET_INFO compiled_charsets[];
141
 
 
142
145
/* statistics */
143
146
extern uint32_t my_file_opened,my_stream_opened, my_tmp_file_created;
144
147
extern uint32_t    my_file_total_opened;
145
148
extern uint     mysys_usage_id;
146
149
extern bool     my_init_done;
147
150
 
148
 
typedef void (*void_ptr_func)(void);
149
 
typedef void (*void_ptr_int_func)(int);
150
 
 
151
 
                                        /* Point to current my_message() */
152
 
extern void_ptr_func my_sigtstp_cleanup,
153
 
                                        /* Executed before jump to shell */
154
 
            my_sigtstp_restart;
155
151
                                        /* Executed when comming from shell */
156
152
extern int my_umask,            /* Default creation mask  */
157
153
           my_umask_dir,
180
176
  char *        *wild;          /* Pointer to wildcards */
181
177
} WF_PACK;
182
178
 
183
 
enum loglevel {
184
 
   ERROR_LEVEL,
185
 
   WARNING_LEVEL,
186
 
   INFORMATION_LEVEL
187
 
};
188
 
 
189
179
enum cache_type
190
180
{
191
181
  TYPE_NOT_SET= 0, READ_CACHE, WRITE_CACHE,
194
184
 
195
185
typedef struct st_record_cache  /* Used when cacheing records */
196
186
{
197
 
  File file;
 
187
  int file;
198
188
  int   rc_seek,error,inited;
199
189
  uint  rc_length,read_length,reclength;
200
190
  my_off_t rc_record_pos,end_of_file;
207
197
} RECORD_CACHE;
208
198
 
209
199
 
210
 
typedef int (*qsort2_cmp)(const void *, const void *, const void *);
211
 
 
212
200
        /* defines for mf_iocache */
213
201
 
214
202
        /* Test if buffer is inited */
251
239
int handle_default_option(void *in_ctx, const char *group_name,
252
240
                          const char *option);
253
241
 
254
 
#include <mysys/my_alloc.h>
255
242
 
256
243
 
257
244
        /* Prototypes for mysys and my_func functions */
258
245
 
259
246
extern int my_copy(const char *from,const char *to,myf MyFlags);
260
247
extern int my_delete(const char *name,myf MyFlags);
261
 
extern File my_open(const char *FileName,int Flags,myf MyFlags);
262
 
extern File my_register_filename(File fd, const char *FileName,
 
248
extern int my_open(const char *FileName,int Flags,myf MyFlags);
 
249
extern int my_register_filename(int fd, const char *FileName,
263
250
                                 uint32_t error_message_number, myf MyFlags);
264
 
extern File my_create(const char *FileName,int CreateFlags,
 
251
extern int my_create(const char *FileName,int CreateFlags,
265
252
                      int AccessFlags, myf MyFlags);
266
 
extern int my_close(File Filedes,myf MyFlags);
 
253
extern int my_close(int Filedes,myf MyFlags);
267
254
extern int my_mkdir(const char *dir, int Flags, myf MyFlags);
268
255
extern int my_realpath(char *to, const char *filename, myf MyFlags);
269
 
extern File my_create_with_symlink(const char *linkname, const char *filename,
 
256
extern int my_create_with_symlink(const char *linkname, const char *filename,
270
257
                                   int createflags, int access_flags,
271
258
                                   myf MyFlags);
272
259
extern int my_delete_with_symlink(const char *name, myf MyFlags);
273
260
extern int my_rename_with_symlink(const char *from,const char *to,myf MyFlags);
274
 
extern size_t my_read(File Filedes,unsigned char *Buffer,size_t Count,myf MyFlags);
 
261
extern size_t my_read(int Filedes,unsigned char *Buffer,size_t Count,myf MyFlags);
275
262
extern int my_rename(const char *from,const char *to,myf MyFlags);
276
 
extern size_t my_write(File Filedes,const unsigned char *Buffer,size_t Count,
 
263
extern size_t my_write(int Filedes,const unsigned char *Buffer,size_t Count,
277
264
                     myf MyFlags);
278
265
extern int _sanity(const char *sFile, uint32_t uLine);
279
266
 
280
 
#define my_access access
281
267
extern int check_if_legal_filename(const char *path);
282
268
extern int check_if_legal_tablename(const char *path);
283
269
 
284
270
#define my_delete_allow_opened(fname,flags)  my_delete((fname),(flags))
285
271
 
286
 
extern void init_glob_errs(void);
287
 
extern int my_sync(File fd, myf my_flags);
 
272
extern int my_sync(int fd, myf my_flags);
288
273
extern int my_sync_dir(const char *dir_name, myf my_flags);
289
274
extern int my_sync_dir_by_file(const char *file_name, myf my_flags);
290
 
extern void my_error(int nr,myf MyFlags, ...);
291
 
extern void my_printf_error(uint32_t my_err, const char *format,
292
 
                            myf MyFlags, ...)
293
 
  __attribute__((format(printf, 2, 4)));
294
 
extern int my_error_register(const char **errmsgs, int first, int last);
295
 
extern const char **my_error_unregister(int first, int last);
296
 
extern void my_message(uint32_t my_err, const char *str,myf MyFlags);
297
 
extern void my_message_no_curses(uint32_t my_err, const char *str,myf MyFlags);
298
275
extern bool my_init(void);
299
276
extern void my_end(void);
300
277
extern int my_redel(const char *from, const char *to, int MyFlags);
301
278
extern int my_copystat(const char *from, const char *to, int MyFlags);
302
 
extern char * my_filename(File fd);
 
279
extern char * my_filename(int fd);
303
280
 
304
281
extern void my_remember_signal(int signal_number,void (*func)(int));
305
282
extern size_t dirname_part(char * to,const char *name, size_t *to_res_length);
327
304
extern bool array_append_string_unique(const char *str,
328
305
                                          const char **array, size_t size);
329
306
extern void get_date(char * to,int timeflag,time_t use_time);
330
 
extern int init_record_cache(RECORD_CACHE *info,size_t cachesize,File file,
 
307
extern int init_record_cache(RECORD_CACHE *info,size_t cachesize,int file,
331
308
                             size_t reclength,enum cache_type type,
332
309
                             bool use_async_io);
333
310
extern int read_cache_record(RECORD_CACHE *info,unsigned char *to);
349
326
extern qsort2_cmp get_ptr_compare(size_t);
350
327
void my_store_ptr(unsigned char *buff, size_t pack_length, my_off_t pos);
351
328
my_off_t my_get_ptr(unsigned char *ptr, size_t pack_length);
352
 
File create_temp_file(char *to, const char *dir, const char *pfx, myf MyFlags);
353
 
 
354
 
#include <mysys/dynamic_array.h>
355
 
 
356
 
#define alloc_root_inited(A) ((A)->min_malloc != 0)
357
 
#define ALLOC_ROOT_MIN_BLOCK_SIZE (MALLOC_OVERHEAD + sizeof(USED_MEM) + 8)
 
329
int create_temp_file(char *to, const char *dir, const char *pfx, myf MyFlags);
 
330
 
358
331
extern int get_defaults_options(int argc, char **argv,
359
332
                                char **defaults, char **extra_defaults,
360
333
                                char **group_suffix);
370
343
                               size_t count);
371
344
extern void my_sleep(uint32_t m_seconds);
372
345
 
373
 
extern uint64_t my_getsystime(void);
374
 
extern uint64_t my_micro_time(void);
375
 
extern uint64_t my_micro_time_and_time(time_t *time_arg);
376
 
 
377
 
#ifdef HAVE_SYS_MMAN_H
378
 
#include <sys/mman.h>
379
 
 
380
 
#ifndef MAP_NOSYNC
381
 
#define MAP_NOSYNC      0
382
 
#endif
383
 
#ifndef MAP_NORESERVE
384
 
#define MAP_NORESERVE 0         /* For irix and AIX */
385
 
#endif
386
 
 
387
 
#ifdef HAVE_MMAP64
388
 
#define my_mmap(a,b,c,d,e,f)    mmap64(a,b,c,d,e,f)
389
 
#else
390
 
#define my_mmap(a,b,c,d,e,f)    mmap(a,b,c,d,e,f)
391
 
#endif
392
 
#define my_munmap(a,b)          munmap((a),(b))
393
 
 
394
 
#else
395
 
/* not a complete set of mmap() flags, but only those that nesessary */
396
 
#define PROT_READ        1
397
 
#define PROT_WRITE       2
398
 
#define MAP_NORESERVE    0
399
 
#define MAP_SHARED       0x0001
400
 
#define MAP_PRIVATE      0x0002
401
 
#define MAP_NOSYNC       0x0800
402
 
#define MAP_FAILED       ((void *)-1)
403
 
#define MS_SYNC          0x0000
404
 
#define HAVE_MMAP
405
 
 
406
 
void *my_mmap(void *, size_t, int, int, int, my_off_t);
407
 
int my_munmap(void *, size_t);
408
 
#endif
409
 
 
410
 
/* character sets */
411
 
void *cs_alloc(size_t size);
412
 
 
413
 
extern uint32_t get_charset_number(const char *cs_name, uint32_t cs_flags);
414
 
extern uint32_t get_collation_number(const char *name);
415
 
extern const char *get_charset_name(uint32_t cs_number);
416
 
 
417
 
extern const CHARSET_INFO *get_charset(uint32_t cs_number);
418
 
extern const CHARSET_INFO *get_charset_by_name(const char *cs_name);
419
 
extern const CHARSET_INFO *get_charset_by_csname(const char *cs_name, uint32_t cs_flags);
420
 
 
421
 
extern bool resolve_charset(const char *cs_name,
422
 
                            const CHARSET_INFO *default_cs,
423
 
                            const CHARSET_INFO **cs);
424
 
extern bool resolve_collation(const char *cl_name,
425
 
                             const CHARSET_INFO *default_cl,
426
 
                             const CHARSET_INFO **cl);
427
 
 
428
 
extern void free_charsets(void);
429
 
extern char *get_charsets_dir(char *buf);
430
 
extern bool my_charset_same(const CHARSET_INFO *cs1, const CHARSET_INFO *cs2);
431
 
extern bool init_compiled_charsets(myf flags);
432
 
extern void add_compiled_collation(CHARSET_INFO *cs);
433
 
extern size_t escape_string_for_drizzle(const CHARSET_INFO *charset_info,
434
 
                                        char *to, size_t to_length,
435
 
                                        const char *from, size_t length);
436
 
extern size_t escape_quotes_for_drizzle(const CHARSET_INFO *charset_info,
437
 
                                        char *to, size_t to_length,
438
 
                                        const char *from, size_t length);
 
346
 
439
347
 
440
348
extern void thd_increment_bytes_sent(uint32_t length);
441
349
extern void thd_increment_bytes_received(uint32_t length);
445
353
}
446
354
#endif
447
355
 
448
 
#endif /* MYSYS_MY_SYS_H */
 
356
#endif /* DRIZZLED_INTERNAL_MY_SYS_H */