~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysys/my_sys.h

  • Committer: Monty Taylor
  • Date: 2008-10-27 23:19:48 UTC
  • mto: (520.4.12 merge-innodb-plugin)
  • mto: This revision was merged to the branch mainline in revision 563.
  • Revision ID: monty@inaugust.com-20081027231948-3kl6ss04plbakqcr
Split some more things out of common_includes.h.

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
 
34
34
#include <mysys/my_alloc.h>
35
35
 
36
 
/* Sun Studio does not inject this into main namespace yet */
37
 
#if defined(__cplusplus)
38
 
  using std::FILE;
39
 
#endif
40
 
 
41
36
#define MY_INIT(name);          { my_progname= name; my_init(); }
42
37
 
43
 
/* Max width of screen (for error messages) */
44
 
#define SC_MAXWIDTH 256
45
38
#define ERRMSGSIZE      (SC_MAXWIDTH)   /* Max length of a error message */
46
39
#define NRERRBUFFS      (2)     /* Buffers for parameters */
47
40
#define MY_FILE_ERROR   ((size_t) -1)
63
56
#define MY_RESOLVE_LINK 128     /* my_realpath(); Only resolve links */
64
57
#define MY_HOLD_ORIGINAL_MODES 128  /* my_copy() holds to file modes */
65
58
#define MY_REDEL_MAKE_BACKUP 256
 
59
#define MY_SEEK_NOT_DONE 32     /* my_lock may have to do a seek */
66
60
#define MY_DONT_WAIT    64      /* my_lock() don't wait if can't lock */
67
 
#define MY_ZEROFILL     32      /* my_multi_malloc(), fill array with zero */
 
61
#define MY_ZEROFILL     32      /* my_malloc(), fill array with zero */
 
62
#define MY_ALLOW_ZERO_PTR 64    /* my_realloc() ; zero ptr -> malloc */
 
63
#define MY_FREE_ON_ERROR 128    /* my_realloc() ; Free old ptr on error */
 
64
#define MY_HOLD_ON_ERROR 256    /* my_realloc() ; Return old ptr on error */
68
65
#define MY_DONT_OVERWRITE_FILE 1024     /* my_copy: Don't overwrite file */
69
66
#define MY_THREADSAFE 2048      /* my_seek(): lock fd mutex */
70
67
 
101
98
#define MY_APPEND_EXT           256     /* add 'ext' as additional extension*/
102
99
 
103
100
 
 
101
        /* My seek flags */
 
102
#define MY_SEEK_SET     0
 
103
#define MY_SEEK_CUR     1
 
104
#define MY_SEEK_END     2
 
105
 
104
106
        /* Some constants */
105
107
#define MY_WAIT_FOR_USER_TO_FIX_PANIC   60      /* in seconds */
106
108
#define MY_WAIT_GIVE_USER_A_MESSAGE     10      /* Every 10 times of prev */
133
135
typedef int  (*qsort_cmp)(const void *,const void *);
134
136
typedef int  (*qsort_cmp2)(void*, const void *,const void *);
135
137
 
 
138
extern void *my_malloc(size_t Size,myf MyFlags);
 
139
#define my_malloc_ci(SZ,FLAG) my_malloc( SZ, FLAG )
 
140
extern void *my_realloc(void *oldpoint, size_t Size, myf MyFlags);
 
141
extern void my_no_flags_free(void *ptr);
 
142
extern void *my_memdup(const void *from,size_t length,myf MyFlags);
 
143
extern char *my_strdup(const char *from,myf MyFlags);
 
144
extern char *my_strndup(const char *from, size_t length,
 
145
                                   myf MyFlags);
 
146
#define CALLER_INFO_PROTO   /* nothing */
 
147
#define CALLER_INFO         /* nothing */
 
148
#define ORIG_CALLER_INFO    /* nothing */
136
149
#define TRASH(A,B) /* nothing */
137
150
 
 
151
#ifdef HAVE_ALLOCA
 
152
#if defined(__GNUC__) && !defined(HAVE_ALLOCA_H) && ! defined(alloca)
 
153
#define alloca __builtin_alloca
 
154
#endif /* GNUC */
 
155
#define my_alloca(SZ) malloc((size_t) (SZ))
 
156
#define my_afree(PTR) free((PTR))
 
157
#else
 
158
#define my_alloca(SZ) malloc((SZ))
 
159
#define my_afree(PTR) free((PTR))
 
160
#endif /* HAVE_ALLOCA */
 
161
 
138
162
#ifndef errno                           /* did we already get it? */
139
163
#ifdef HAVE_ERRNO_AS_DEFINE
140
164
#include <errno.h>                      /* errno is a define */
145
169
extern char errbuff[NRERRBUFFS][ERRMSGSIZE];
146
170
extern char *home_dir;                  /* Home directory for user */
147
171
extern const char *my_progname;         /* program-name (printed in errors) */
148
 
typedef void (*error_handler_func)(uint32_t my_err, const char *str,myf MyFlags);
149
 
extern error_handler_func error_handler_hook;
150
 
extern error_handler_func fatal_error_handler_hook;
 
172
extern void (*error_handler_hook)(uint32_t my_err, const char *str,myf MyFlags);
 
173
extern void (*fatal_error_handler_hook)(uint32_t my_err, const char *str,
 
174
                                        myf MyFlags);
151
175
extern uint32_t my_file_limit;
 
176
extern uint32_t my_thread_stack_size;
152
177
 
153
178
/* charsets */
154
179
extern const CHARSET_INFO *default_charset_info;
161
186
extern uint     mysys_usage_id;
162
187
extern bool     my_init_done;
163
188
 
164
 
typedef void (*void_ptr_func)(void);
165
 
typedef void (*void_ptr_int_func)(int);
166
 
 
167
189
                                        /* Point to current my_message() */
168
 
extern void_ptr_func my_sigtstp_cleanup,
 
190
extern void (*my_sigtstp_cleanup)(void),
169
191
                                        /* Executed before jump to shell */
170
 
            my_sigtstp_restart;
171
 
extern void_ptr_int_func my_abort_hook;
 
192
            (*my_sigtstp_restart)(void),
 
193
            (*my_abort_hook)(int);
172
194
                                        /* Executed when comming from shell */
173
195
extern int my_umask,            /* Default creation mask  */
174
196
           my_umask_dir,
233
255
{
234
256
  char *                name;
235
257
  enum file_type        type;
 
258
#if !defined(HAVE_PREAD)
 
259
  pthread_mutex_t       mutex;
 
260
#endif
236
261
};
237
262
 
238
263
extern struct st_my_file_info *my_file_info;
240
265
typedef struct st_dynamic_array
241
266
{
242
267
  unsigned char *buffer;
243
 
  size_t elements,max_element;
 
268
  uint32_t elements,max_element;
244
269
  uint32_t alloc_increment;
245
270
  uint32_t size_of_element;
246
271
} DYNAMIC_ARRAY;
247
272
 
 
273
typedef struct st_my_tmpdir
 
274
{
 
275
  DYNAMIC_ARRAY full_list;
 
276
  char **list;
 
277
  uint32_t cur, max;
 
278
  pthread_mutex_t mutex;
 
279
} MY_TMPDIR;
 
280
 
248
281
 
249
282
typedef int (*qsort2_cmp)(const void *, const void *, const void *);
250
283
 
284
317
#define my_b_tell(info) ((info)->pos_in_file + \
285
318
                         (size_t) (*(info)->current_pos - (info)->request_pos))
286
319
 
287
 
#define my_b_get_buffer_start(info) (info)->request_pos
 
320
#define my_b_get_buffer_start(info) (info)->request_pos 
288
321
#define my_b_get_bytes_in_buffer(info) (char*) (info)->read_end -   \
289
322
  (char*) my_b_get_buffer_start(info)
290
323
#define my_b_get_pos_in_file(info) (info)->pos_in_file
299
332
typedef int (*Process_option_func)(void *ctx, const char *group_name,
300
333
                                   const char *option);
301
334
 
302
 
int handle_default_option(void *in_ctx, const char *group_name,
303
 
                          const char *option);
304
 
 
305
335
#include <mysys/my_alloc.h>
306
336
 
307
337
 
309
339
 
310
340
extern int my_copy(const char *from,const char *to,myf MyFlags);
311
341
extern int my_delete(const char *name,myf MyFlags);
 
342
extern int my_getwd(char * buf,size_t size,myf MyFlags);
 
343
extern int my_setwd(const char *dir,myf MyFlags);
 
344
extern void *my_once_alloc(size_t Size,myf MyFlags);
 
345
extern void my_once_free(void);
 
346
extern char *my_once_strdup(const char *src,myf myflags);
 
347
extern void *my_once_memdup(const void *src, size_t len, myf myflags);
312
348
extern File my_open(const char *FileName,int Flags,myf MyFlags);
313
349
extern File my_register_filename(File fd, const char *FileName,
314
350
                                 enum file_type type_of_file,
328
364
extern int my_symlink(const char *content, const char *linkname, myf MyFlags);
329
365
extern size_t my_read(File Filedes,unsigned char *Buffer,size_t Count,myf MyFlags);
330
366
extern int my_rename(const char *from,const char *to,myf MyFlags);
 
367
extern my_off_t my_seek(File fd,my_off_t pos,int whence,myf MyFlags);
 
368
extern my_off_t my_tell(File fd,myf MyFlags);
331
369
extern size_t my_write(File Filedes,const unsigned char *Buffer,size_t Count,
332
370
                     myf MyFlags);
 
371
extern size_t my_fwrite(FILE *stream,const unsigned char *Buffer,size_t Count,
 
372
                      myf MyFlags);
 
373
extern my_off_t my_fseek(FILE *stream,my_off_t pos,int whence,myf MyFlags);
 
374
extern void *_mymalloc(size_t uSize,const char *sFile,
 
375
                       uint32_t uLine, myf MyFlag);
 
376
extern void *_myrealloc(void *pPtr,size_t uSize,const char *sFile,
 
377
                       uint32_t uLine, myf MyFlag);
333
378
extern void * my_multi_malloc (myf MyFlags, ...);
 
379
extern void _myfree(void *pPtr, const char *sFile, uint32_t uLine, myf MyFlag);
334
380
extern int _sanity(const char *sFile, uint32_t uLine);
 
381
extern void *_my_memdup(const void *from, size_t length,
 
382
                        const char *sFile, uint32_t uLine,myf MyFlag);
 
383
extern char * _my_strdup(const char *from, const char *sFile, uint32_t uLine,
 
384
                         myf MyFlag);
 
385
extern char *_my_strndup(const char *from, size_t length,
 
386
                         const char *sFile, uint32_t uLine,
 
387
                         myf MyFlag);
335
388
 
336
389
#define my_access access
337
390
extern int check_if_legal_filename(const char *path);
368
421
#define my_print_open_files()
369
422
#endif
370
423
 
 
424
extern bool init_tmpdir(MY_TMPDIR *tmpdir, const char *pathlist);
 
425
extern char *my_tmpdir(MY_TMPDIR *tmpdir);
 
426
extern void free_tmpdir(MY_TMPDIR *tmpdir);
 
427
 
371
428
extern void my_remember_signal(int signal_number,RETSIGTYPE (*func)(int));
372
429
extern size_t dirname_part(char * to,const char *name, size_t *to_res_length);
373
430
extern size_t dirname_length(const char *name);
374
431
#define base_name(A) (A+dirname_length(A))
375
 
bool test_if_hard_path(const char *dir_name);
 
432
extern int test_if_hard_path(const char *dir_name);
 
433
extern bool has_path(const char *name);
376
434
extern char *convert_dirname(char *to, const char *from, const char *from_end);
377
435
extern void to_unix_path(char * name);
378
436
extern char * fn_ext(const char *name);
426
484
my_off_t my_get_ptr(unsigned char *ptr, size_t pack_length);
427
485
File create_temp_file(char *to, const char *dir, const char *pfx,
428
486
                      int mode, myf MyFlags);
429
 
#define my_init_dynamic_array(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D)
430
 
#define my_init_dynamic_array_ci(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D)
431
 
#define my_init_dynamic_array2(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E)
432
 
#define my_init_dynamic_array2_ci(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E)
 
487
#define my_init_dynamic_array(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D CALLER_INFO)
 
488
#define my_init_dynamic_array_ci(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D ORIG_CALLER_INFO)
 
489
#define my_init_dynamic_array2(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E CALLER_INFO)
 
490
#define my_init_dynamic_array2_ci(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E ORIG_CALLER_INFO)
433
491
extern bool init_dynamic_array2(DYNAMIC_ARRAY *array,uint32_t element_size,
434
 
                                   void *init_buffer, uint32_t init_alloc,
435
 
                                   uint32_t alloc_increment);
 
492
                                   void *init_buffer, uint32_t init_alloc, 
 
493
                                   uint32_t alloc_increment
 
494
                                   CALLER_INFO_PROTO);
436
495
/* init_dynamic_array() function is deprecated */
437
496
extern bool init_dynamic_array(DYNAMIC_ARRAY *array,uint32_t element_size,
438
 
                                  uint32_t init_alloc,uint32_t alloc_increment);
 
497
                                  uint32_t init_alloc,uint32_t alloc_increment
 
498
                                  CALLER_INFO_PROTO);
439
499
extern bool insert_dynamic(DYNAMIC_ARRAY *array,unsigned char * element);
440
500
extern unsigned char *alloc_dynamic(DYNAMIC_ARRAY *array);
441
501
extern unsigned char *pop_dynamic(DYNAMIC_ARRAY*);
452
512
#define reset_dynamic(array) ((array)->elements= 0)
453
513
#define sort_dynamic(A,cmp) my_qsort((A)->buffer, (A)->elements, (A)->size_of_element, (cmp))
454
514
 
 
515
#define my_malloc_lock(A,B) my_malloc((A),(B))
455
516
#define alloc_root_inited(A) ((A)->min_malloc != 0)
456
517
#define ALLOC_ROOT_MIN_BLOCK_SIZE (MALLOC_OVERHEAD + sizeof(USED_MEM) + 8)
457
518
#define clear_alloc_root(A) do { (A)->free= (A)->used= (A)->pre_alloc= 0; (A)->min_malloc=0;} while(0)
475
536
extern uint32_t my_set_max_open_files(uint32_t files);
476
537
void my_free_open_file_info(void);
477
538
 
 
539
extern time_t my_time(myf flags);
478
540
extern uint64_t my_getsystime(void);
479
541
extern uint64_t my_micro_time(void);
480
542
extern uint64_t my_micro_time_and_time(time_t *time_arg);
481
543
time_t my_time_possible_from_micro(uint64_t microtime);
 
544
extern bool my_gethwaddr(unsigned char *to);
482
545
 
483
546
#ifdef HAVE_SYS_MMAN_H
484
547
#include <sys/mman.h>
514
577
#endif
515
578
 
516
579
/* character sets */
517
 
void *cs_alloc(size_t size);
518
 
 
519
580
extern uint32_t get_charset_number(const char *cs_name, uint32_t cs_flags);
520
581
extern uint32_t get_collation_number(const char *name);
521
582
extern const char *get_charset_name(uint32_t cs_number);