144
146
extern char *my_strdup(const char *from,myf MyFlags);
145
147
extern char *my_strndup(const char *from, size_t length,
149
/* we do use FG (as a no-op) in below so that a typo on FG is caught */
150
#define my_free(PTR,FG) ((void)FG,my_no_flags_free(PTR))
147
151
#define CALLER_INFO_PROTO /* nothing */
148
152
#define CALLER_INFO /* nothing */
149
153
#define ORIG_CALLER_INFO /* nothing */
150
154
#define TRASH(A,B) /* nothing */
157
#ifdef HAVE_LARGE_PAGES
158
extern uint my_get_large_page_size(void);
159
extern uchar * my_large_malloc(size_t size, myf my_flags);
160
extern void my_large_free(uchar * ptr, myf my_flags);
162
#define my_get_large_page_size() (0)
163
#define my_large_malloc(A,B) my_malloc_lock((A),(B))
164
#define my_large_free(A,B) my_free_lock((A),(B))
165
#endif /* HAVE_LARGE_PAGES */
152
167
#ifdef HAVE_ALLOCA
153
168
#if defined(__GNUC__) && !defined(HAVE_ALLOCA_H) && ! defined(alloca)
154
169
#define alloca __builtin_alloca
155
170
#endif /* GNUC */
156
#define my_alloca(SZ) malloc((size_t) (SZ))
157
#define my_afree(PTR) free((PTR))
171
#define my_alloca(SZ) alloca((size_t) (SZ))
172
#define my_afree(PTR) {}
159
#define my_alloca(SZ) malloc((SZ))
160
#define my_afree(PTR) free((PTR))
174
#define my_alloca(SZ) my_malloc(SZ,MYF(0))
175
#define my_afree(PTR) my_free(PTR,MYF(MY_WME))
161
176
#endif /* HAVE_ALLOCA */
163
178
#ifndef errno /* did we already get it? */
170
185
extern char errbuff[NRERRBUFFS][ERRMSGSIZE];
171
186
extern char *home_dir; /* Home directory for user */
172
187
extern const char *my_progname; /* program-name (printed in errors) */
173
extern void (*error_handler_hook)(uint32_t my_err, const char *str,myf MyFlags);
174
extern void (*fatal_error_handler_hook)(uint32_t my_err, const char *str,
188
extern char curr_dir[]; /* Current directory for user */
189
extern void (*error_handler_hook)(uint my_err, const char *str,myf MyFlags);
190
extern void (*fatal_error_handler_hook)(uint my_err, const char *str,
176
extern uint32_t my_file_limit;
177
extern uint32_t my_thread_stack_size;
192
extern uint my_file_limit;
193
extern ulong my_thread_stack_size;
195
#ifdef HAVE_LARGE_PAGES
196
extern my_bool my_use_large_pages;
197
extern uint my_large_page_size;
180
extern const CHARSET_INFO *default_charset_info;
201
extern CHARSET_INFO *default_charset_info;
181
202
extern CHARSET_INFO *all_charsets[256];
182
203
extern CHARSET_INFO compiled_charsets[];
185
extern uint32_t my_file_opened,my_stream_opened, my_tmp_file_created;
186
extern uint32_t my_file_total_opened;
206
extern ulong my_file_opened,my_stream_opened, my_tmp_file_created;
207
extern ulong my_file_total_opened;
187
208
extern uint mysys_usage_id;
188
extern bool my_init_done;
209
extern my_bool my_init_done;
190
211
/* Point to current my_message() */
191
212
extern void (*my_sigtstp_cleanup)(void),
232
253
SEQ_READ_APPEND /* sequential read or append */,
233
254
READ_FIFO, READ_NET,WRITE_NET};
258
FLUSH_KEEP, /* flush block and keep it in the cache */
259
FLUSH_RELEASE, /* flush block and remove it from the cache */
260
FLUSH_IGNORE_CHANGED, /* remove block from the cache */
262
As my_disable_flush_pagecache_blocks is always 0, the following option
263
is strictly equivalent to FLUSH_KEEP
235
268
typedef struct st_record_cache /* Used when cacheing records */
238
271
int rc_seek,error,inited;
239
272
uint rc_length,read_length,reclength;
240
273
my_off_t rc_record_pos,end_of_file;
241
unsigned char *rc_buff,*rc_buff2,*rc_pos,*rc_end,*rc_request_pos;
274
uchar *rc_buff,*rc_buff2,*rc_pos,*rc_end,*rc_request_pos;
242
275
#ifdef HAVE_AIOWAIT
243
276
int use_async_io;
244
277
my_aio_result aio_result;
475
520
#define my_b_bytes_in_cache(info) (size_t) (*(info)->current_end - \
476
521
*(info)->current_pos)
478
typedef uint32_t ha_checksum;
523
typedef uint32 ha_checksum;
480
525
/* Define the type of function to be passed to process_default_option_files */
481
526
typedef int (*Process_option_func)(void *ctx, const char *group_name,
482
527
const char *option);
484
#include <mysys/my_alloc.h>
529
#include <my_alloc.h>
487
532
/* Prototypes for mysys and my_func functions */
489
534
extern int my_copy(const char *from,const char *to,myf MyFlags);
535
extern int my_append(const char *from,const char *to,myf MyFlags);
490
536
extern int my_delete(const char *name,myf MyFlags);
491
537
extern int my_getwd(char * buf,size_t size,myf MyFlags);
492
538
extern int my_setwd(const char *dir,myf MyFlags);
539
extern int my_lock(File fd,int op,my_off_t start, my_off_t length,myf MyFlags);
493
540
extern void *my_once_alloc(size_t Size,myf MyFlags);
494
541
extern void my_once_free(void);
495
542
extern char *my_once_strdup(const char *src,myf myflags);
511
558
extern int my_delete_with_symlink(const char *name, myf MyFlags);
512
559
extern int my_rename_with_symlink(const char *from,const char *to,myf MyFlags);
513
560
extern int my_symlink(const char *content, const char *linkname, myf MyFlags);
514
extern size_t my_read(File Filedes,unsigned char *Buffer,size_t Count,myf MyFlags);
561
extern size_t my_read(File Filedes,uchar *Buffer,size_t Count,myf MyFlags);
562
extern size_t my_pread(File Filedes,uchar *Buffer,size_t Count,my_off_t offset,
515
564
extern int my_rename(const char *from,const char *to,myf MyFlags);
516
565
extern my_off_t my_seek(File fd,my_off_t pos,int whence,myf MyFlags);
517
566
extern my_off_t my_tell(File fd,myf MyFlags);
518
extern size_t my_write(File Filedes,const unsigned char *Buffer,size_t Count,
567
extern size_t my_write(File Filedes,const uchar *Buffer,size_t Count,
520
extern size_t my_fwrite(FILE *stream,const unsigned char *Buffer,size_t Count,
569
extern size_t my_pwrite(File Filedes,const uchar *Buffer,size_t Count,
570
my_off_t offset,myf MyFlags);
571
extern size_t my_fread(FILE *stream,uchar *Buffer,size_t Count,myf MyFlags);
572
extern size_t my_fwrite(FILE *stream,const uchar *Buffer,size_t Count,
522
574
extern my_off_t my_fseek(FILE *stream,my_off_t pos,int whence,myf MyFlags);
575
extern my_off_t my_ftell(FILE *stream,myf MyFlags);
523
576
extern void *_mymalloc(size_t uSize,const char *sFile,
524
uint32_t uLine, myf MyFlag);
577
uint uLine, myf MyFlag);
525
578
extern void *_myrealloc(void *pPtr,size_t uSize,const char *sFile,
526
uint32_t uLine, myf MyFlag);
527
extern void * my_multi_malloc (myf MyFlags, ...);
528
extern void _myfree(void *pPtr, const char *sFile, uint32_t uLine, myf MyFlag);
529
extern int _sanity(const char *sFile, uint32_t uLine);
579
uint uLine, myf MyFlag);
580
extern void * my_multi_malloc _VARARGS((myf MyFlags, ...));
581
extern void _myfree(void *pPtr,const char *sFile,uint uLine, myf MyFlag);
582
extern int _sanity(const char *sFile, uint uLine);
530
583
extern void *_my_memdup(const void *from, size_t length,
531
const char *sFile, uint32_t uLine,myf MyFlag);
532
extern char * _my_strdup(const char *from, const char *sFile, uint32_t uLine,
584
const char *sFile, uint uLine,myf MyFlag);
585
extern char * _my_strdup(const char *from, const char *sFile, uint uLine,
534
587
extern char *_my_strndup(const char *from, size_t length,
535
const char *sFile, uint32_t uLine,
588
const char *sFile, uint uLine,
591
/* implemented in my_memmem.c */
592
extern void *my_memmem(const void *haystack, size_t haystacklen,
593
const void *needle, size_t needlelen);
538
596
#define my_access access
539
597
extern int check_if_legal_filename(const char *path);
540
598
extern int check_if_legal_tablename(const char *path);
542
600
#define my_delete_allow_opened(fname,flags) my_delete((fname),(flags))
544
602
#ifndef TERMINATE
545
extern void TERMINATE(FILE *file, uint32_t flag);
603
extern void TERMINATE(FILE *file, uint flag);
547
605
extern void init_glob_errs(void);
548
606
extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags);
607
extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags);
549
608
extern int my_fclose(FILE *fd,myf MyFlags);
609
extern int my_chsize(File fd,my_off_t newlength, int filler, myf MyFlags);
550
610
extern int my_sync(File fd, myf my_flags);
551
611
extern int my_sync_dir(const char *dir_name, myf my_flags);
552
612
extern int my_sync_dir_by_file(const char *file_name, myf my_flags);
553
extern void my_error(int nr,myf MyFlags, ...);
554
extern void my_printf_error(uint32_t my_err, const char *format,
556
__attribute__((format(printf, 2, 4)));
613
extern void my_error _VARARGS((int nr,myf MyFlags, ...));
614
extern void my_printf_error _VARARGS((uint my_err, const char *format,
616
ATTRIBUTE_FORMAT(printf, 2, 4);
557
617
extern int my_error_register(const char **errmsgs, int first, int last);
558
618
extern const char **my_error_unregister(int first, int last);
559
extern void my_message(uint32_t my_err, const char *str,myf MyFlags);
560
extern void my_message_no_curses(uint32_t my_err, const char *str,myf MyFlags);
561
extern bool my_init(void);
619
extern void my_message(uint my_err, const char *str,myf MyFlags);
620
extern void my_message_no_curses(uint my_err, const char *str,myf MyFlags);
621
extern my_bool my_init(void);
562
622
extern void my_end(int infoflag);
563
623
extern int my_redel(const char *from, const char *to, int MyFlags);
564
624
extern int my_copystat(const char *from, const char *to, int MyFlags);
565
625
extern char * my_filename(File fd);
628
extern void dont_break(void);
629
extern void allow_break(void);
632
#define allow_break()
567
635
#ifdef EXTRA_DEBUG
568
636
void my_print_open_files(void);
570
638
#define my_print_open_files()
573
extern bool init_tmpdir(MY_TMPDIR *tmpdir, const char *pathlist);
641
extern my_bool init_tmpdir(MY_TMPDIR *tmpdir, const char *pathlist);
574
642
extern char *my_tmpdir(MY_TMPDIR *tmpdir);
575
643
extern void free_tmpdir(MY_TMPDIR *tmpdir);
577
extern void my_remember_signal(int signal_number,RETSIGTYPE (*func)(int));
645
extern void my_remember_signal(int signal_number,sig_handler (*func)(int));
578
646
extern size_t dirname_part(char * to,const char *name, size_t *to_res_length);
579
647
extern size_t dirname_length(const char *name);
580
648
#define base_name(A) (A+dirname_length(A))
581
649
extern int test_if_hard_path(const char *dir_name);
582
extern bool has_path(const char *name);
650
extern my_bool has_path(const char *name);
583
651
extern char *convert_dirname(char *to, const char *from, const char *from_end);
584
652
extern void to_unix_path(char * name);
585
653
extern char * fn_ext(const char *name);
586
654
extern char * fn_same(char * toname,const char *name,int flag);
587
655
extern char * fn_format(char * to,const char *name,const char *dir,
588
const char *form, uint32_t flag);
656
const char *form, uint flag);
589
657
extern size_t strlength(const char *str);
590
658
extern void pack_dirname(char * to,const char *from);
591
659
extern size_t unpack_dirname(char * to,const char *from);
600
668
extern char * my_load_path(char * to, const char *path,
601
669
const char *own_path_prefix);
602
670
extern int wild_compare(const char *str,const char *wildstr,
603
bool str_is_pattern);
671
pbool str_is_pattern);
604
672
extern WF_PACK *wf_comp(char * str);
605
673
extern int wf_test(struct wild_file_pack *wf_pack,const char *name);
606
674
extern void wf_end(struct wild_file_pack *buffer);
607
extern bool array_append_string_unique(const char *str,
675
extern size_t strip_sp(char * str);
676
extern my_bool array_append_string_unique(const char *str,
608
677
const char **array, size_t size);
609
678
extern void get_date(char * to,int timeflag,time_t use_time);
610
679
extern void soundex(CHARSET_INFO *, char * out_pntr, char * in_pntr,
611
bool remove_garbage);
680
pbool remove_garbage);
612
681
extern int init_record_cache(RECORD_CACHE *info,size_t cachesize,File file,
613
682
size_t reclength,enum cache_type type,
615
extern int read_cache_record(RECORD_CACHE *info,unsigned char *to);
684
extern int read_cache_record(RECORD_CACHE *info,uchar *to);
616
685
extern int end_record_cache(RECORD_CACHE *info);
617
686
extern int write_cache_record(RECORD_CACHE *info,my_off_t filepos,
618
const unsigned char *record,size_t length);
687
const uchar *record,size_t length);
619
688
extern int flush_write_cache(RECORD_CACHE *info);
620
extern RETSIGTYPE sigtstp_handler(int signal_number);
689
extern long my_clock(void);
690
extern sig_handler sigtstp_handler(int signal_number);
621
691
extern void handle_recived_signals(void);
623
extern RETSIGTYPE my_set_alarm_variable(int signo);
624
extern void my_string_ptr_sort(unsigned char *base,uint32_t items,size_t size);
625
extern void radixsort_for_str_ptr(unsigned char* base[], uint32_t number_of_elements,
626
size_t size_of_element,unsigned char *buffer[]);
627
extern RETQSORTTYPE my_qsort(void *base_ptr, size_t total_elems, size_t size,
629
extern RETQSORTTYPE my_qsort2(void *base_ptr, size_t total_elems, size_t size,
630
qsort2_cmp cmp, void *cmp_argument);
693
extern sig_handler my_set_alarm_variable(int signo);
694
extern void my_string_ptr_sort(uchar *base,uint items,size_t size);
695
extern void radixsort_for_str_ptr(uchar* base[], uint number_of_elements,
696
size_t size_of_element,uchar *buffer[]);
697
extern qsort_t my_qsort(void *base_ptr, size_t total_elems, size_t size,
699
extern qsort_t my_qsort2(void *base_ptr, size_t total_elems, size_t size,
700
qsort2_cmp cmp, void *cmp_argument);
631
701
extern qsort2_cmp get_ptr_compare(size_t);
632
void my_store_ptr(unsigned char *buff, size_t pack_length, my_off_t pos);
633
my_off_t my_get_ptr(unsigned char *ptr, size_t pack_length);
702
void my_store_ptr(uchar *buff, size_t pack_length, my_off_t pos);
703
my_off_t my_get_ptr(uchar *ptr, size_t pack_length);
634
704
extern int init_io_cache(IO_CACHE *info,File file,size_t cachesize,
635
705
enum cache_type type,my_off_t seek_offset,
636
bool use_async_io, myf cache_myflags);
637
extern bool reinit_io_cache(IO_CACHE *info,enum cache_type type,
638
my_off_t seek_offset,bool use_async_io,
706
pbool use_async_io, myf cache_myflags);
707
extern my_bool reinit_io_cache(IO_CACHE *info,enum cache_type type,
708
my_off_t seek_offset,pbool use_async_io,
640
710
extern void setup_io_cache(IO_CACHE* info);
641
extern int _my_b_read(IO_CACHE *info,unsigned char *Buffer,size_t Count);
642
extern int _my_b_read_r(IO_CACHE *info,unsigned char *Buffer,size_t Count);
711
extern int _my_b_read(IO_CACHE *info,uchar *Buffer,size_t Count);
713
extern int _my_b_read_r(IO_CACHE *info,uchar *Buffer,size_t Count);
643
714
extern void init_io_cache_share(IO_CACHE *read_cache, IO_CACHE_SHARE *cshare,
644
IO_CACHE *write_cache, uint32_t num_threads);
715
IO_CACHE *write_cache, uint num_threads);
645
716
extern void remove_io_thread(IO_CACHE *info);
646
extern int _my_b_seq_read(IO_CACHE *info,unsigned char *Buffer,size_t Count);
647
extern int _my_b_net_read(IO_CACHE *info,unsigned char *Buffer,size_t Count);
718
extern int _my_b_seq_read(IO_CACHE *info,uchar *Buffer,size_t Count);
719
extern int _my_b_net_read(IO_CACHE *info,uchar *Buffer,size_t Count);
648
720
extern int _my_b_get(IO_CACHE *info);
649
extern int _my_b_async_read(IO_CACHE *info,unsigned char *Buffer,size_t Count);
650
extern int _my_b_write(IO_CACHE *info,const unsigned char *Buffer,size_t Count);
651
extern int my_b_append(IO_CACHE *info,const unsigned char *Buffer,size_t Count);
652
extern int my_b_safe_write(IO_CACHE *info,const unsigned char *Buffer,size_t Count);
721
extern int _my_b_async_read(IO_CACHE *info,uchar *Buffer,size_t Count);
722
extern int _my_b_write(IO_CACHE *info,const uchar *Buffer,size_t Count);
723
extern int my_b_append(IO_CACHE *info,const uchar *Buffer,size_t Count);
724
extern int my_b_safe_write(IO_CACHE *info,const uchar *Buffer,size_t Count);
654
extern int my_block_write(IO_CACHE *info, const unsigned char *Buffer,
726
extern int my_block_write(IO_CACHE *info, const uchar *Buffer,
655
727
size_t Count, my_off_t pos);
656
728
extern int my_b_flush_io_cache(IO_CACHE *info, int need_append_buffer_lock);
675
747
#define my_init_dynamic_array_ci(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D ORIG_CALLER_INFO)
676
748
#define my_init_dynamic_array2(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E CALLER_INFO)
677
749
#define my_init_dynamic_array2_ci(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E ORIG_CALLER_INFO)
678
extern bool init_dynamic_array2(DYNAMIC_ARRAY *array,uint32_t element_size,
679
void *init_buffer, uint32_t init_alloc,
680
uint32_t alloc_increment
750
extern my_bool init_dynamic_array2(DYNAMIC_ARRAY *array,uint element_size,
751
void *init_buffer, uint init_alloc,
681
753
CALLER_INFO_PROTO);
682
754
/* init_dynamic_array() function is deprecated */
683
extern bool init_dynamic_array(DYNAMIC_ARRAY *array,uint32_t element_size,
684
uint32_t init_alloc,uint32_t alloc_increment
755
extern my_bool init_dynamic_array(DYNAMIC_ARRAY *array,uint element_size,
756
uint init_alloc,uint alloc_increment
685
757
CALLER_INFO_PROTO);
686
extern bool insert_dynamic(DYNAMIC_ARRAY *array,unsigned char * element);
687
extern unsigned char *alloc_dynamic(DYNAMIC_ARRAY *array);
688
extern unsigned char *pop_dynamic(DYNAMIC_ARRAY*);
689
extern bool set_dynamic(DYNAMIC_ARRAY *array,unsigned char * element,uint32_t array_index);
690
extern bool allocate_dynamic(DYNAMIC_ARRAY *array, uint32_t max_elements);
691
extern void get_dynamic(DYNAMIC_ARRAY *array,unsigned char * element,uint32_t array_index);
758
extern my_bool insert_dynamic(DYNAMIC_ARRAY *array,uchar * element);
759
extern uchar *alloc_dynamic(DYNAMIC_ARRAY *array);
760
extern uchar *pop_dynamic(DYNAMIC_ARRAY*);
761
extern my_bool set_dynamic(DYNAMIC_ARRAY *array,uchar * element,uint array_index);
762
extern my_bool allocate_dynamic(DYNAMIC_ARRAY *array, uint max_elements);
763
extern void get_dynamic(DYNAMIC_ARRAY *array,uchar * element,uint array_index);
692
764
extern void delete_dynamic(DYNAMIC_ARRAY *array);
693
extern void delete_dynamic_element(DYNAMIC_ARRAY *array, uint32_t array_index);
765
extern void delete_dynamic_element(DYNAMIC_ARRAY *array, uint array_index);
694
766
extern void freeze_size(DYNAMIC_ARRAY *array);
695
extern int get_index_dynamic(DYNAMIC_ARRAY *array, unsigned char * element);
767
extern int get_index_dynamic(DYNAMIC_ARRAY *array, uchar * element);
696
768
#define dynamic_array_ptr(array,array_index) ((array)->buffer+(array_index)*(array)->size_of_element)
697
769
#define dynamic_element(array,array_index,type) ((type)((array)->buffer) +(array_index))
698
770
#define push_dynamic(A,B) insert_dynamic((A),(B))
699
771
#define reset_dynamic(array) ((array)->elements= 0)
700
772
#define sort_dynamic(A,cmp) my_qsort((A)->buffer, (A)->elements, (A)->size_of_element, (cmp))
774
extern my_bool init_dynamic_string(DYNAMIC_STRING *str, const char *init_str,
775
size_t init_alloc,size_t alloc_increment);
776
extern my_bool dynstr_append(DYNAMIC_STRING *str, const char *append);
777
my_bool dynstr_append_mem(DYNAMIC_STRING *str, const char *append,
779
extern my_bool dynstr_append_os_quoted(DYNAMIC_STRING *str, const char *append,
781
extern my_bool dynstr_set(DYNAMIC_STRING *str, const char *init_str);
782
extern my_bool dynstr_realloc(DYNAMIC_STRING *str, size_t additional_size);
783
extern my_bool dynstr_trunc(DYNAMIC_STRING *str, size_t n);
784
extern void dynstr_free(DYNAMIC_STRING *str);
786
extern void *my_malloc_lock(size_t length,myf flags);
787
extern void my_free_lock(void *ptr,myf flags);
702
789
#define my_malloc_lock(A,B) my_malloc((A),(B))
790
#define my_free_lock(A,B) my_free((A),(B))
703
792
#define alloc_root_inited(A) ((A)->min_malloc != 0)
704
793
#define ALLOC_ROOT_MIN_BLOCK_SIZE (MALLOC_OVERHEAD + sizeof(USED_MEM) + 8)
705
794
#define clear_alloc_root(A) do { (A)->free= (A)->used= (A)->pre_alloc= 0; (A)->min_malloc=0;} while(0)
723
812
const char *option_value,
724
813
const char *section_name, int remove_option);
725
814
extern int my_search_option_files(const char *conf_file, int *argc,
726
char ***argv, uint32_t *args_used,
815
char ***argv, uint *args_used,
727
816
Process_option_func func, void *func_ctx);
728
817
extern void free_defaults(char **argv);
729
818
extern void my_print_default_files(const char *conf_file);
730
819
extern void print_defaults(const char *conf_file, const char **groups);
731
extern ha_checksum my_checksum(ha_checksum crc, const unsigned char *mem,
820
extern my_bool my_compress(uchar *, size_t *, size_t *);
821
extern my_bool my_uncompress(uchar *, size_t , size_t *);
822
extern uchar *my_compress_alloc(const uchar *packet, size_t *len,
824
extern int packfrm(uchar *, size_t, uchar **, size_t *);
825
extern int unpackfrm(uchar **, size_t *, const uchar *);
827
extern ha_checksum my_checksum(ha_checksum crc, const uchar *mem,
733
extern void my_sleep(uint32_t m_seconds);
734
extern uint32_t my_set_max_open_files(uint32_t files);
829
extern void my_sleep(ulong m_seconds);
830
extern ulong crc32(ulong crc, const uchar *buf, uint len);
831
extern uint my_set_max_open_files(uint files);
735
832
void my_free_open_file_info(void);
737
834
extern time_t my_time(myf flags);
738
extern uint64_t my_getsystime(void);
739
extern uint64_t my_micro_time(void);
740
extern uint64_t my_micro_time_and_time(time_t *time_arg);
741
time_t my_time_possible_from_micro(uint64_t microtime);
742
extern bool my_gethwaddr(unsigned char *to);
835
extern ulonglong my_getsystime(void);
836
extern ulonglong my_micro_time();
837
extern ulonglong my_micro_time_and_time(time_t *time_arg);
838
time_t my_time_possible_from_micro(ulonglong microtime);
839
extern my_bool my_gethwaddr(uchar *to);
840
extern int my_getncpus();
744
842
#ifdef HAVE_SYS_MMAN_H
745
843
#include <sys/mman.h>
768
866
#define MAP_NOSYNC 0x0800
769
867
#define MAP_FAILED ((void *)-1)
770
868
#define MS_SYNC 0x0000
771
871
#define HAVE_MMAP
773
874
void *my_mmap(void *, size_t, int, int, int, my_off_t);
774
875
int my_munmap(void *, size_t);
879
#ifdef HAVE_GETPAGESIZE
880
#define my_getpagesize() getpagesize()
882
int my_getpagesize(void);
777
885
/* character sets */
778
extern uint32_t get_charset_number(const char *cs_name, uint32_t cs_flags);
779
extern uint32_t get_collation_number(const char *name);
780
extern const char *get_charset_name(uint32_t cs_number);
782
extern const CHARSET_INFO *get_charset(uint32_t cs_number, myf flags);
783
extern const CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags);
784
extern const CHARSET_INFO *get_charset_by_csname(const char *cs_name, uint32_t cs_flags, myf my_flags);
786
extern bool resolve_charset(const char *cs_name,
787
const CHARSET_INFO *default_cs,
788
const CHARSET_INFO **cs);
789
extern bool resolve_collation(const char *cl_name,
790
const CHARSET_INFO *default_cl,
791
const CHARSET_INFO **cl);
886
extern uint get_charset_number(const char *cs_name, uint cs_flags);
887
extern uint get_collation_number(const char *name);
888
extern const char *get_charset_name(uint cs_number);
890
extern CHARSET_INFO *get_charset(uint cs_number, myf flags);
891
extern CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags);
892
extern CHARSET_INFO *get_charset_by_csname(const char *cs_name,
893
uint cs_flags, myf my_flags);
895
extern my_bool resolve_charset(const char *cs_name,
896
CHARSET_INFO *default_cs,
898
extern my_bool resolve_collation(const char *cl_name,
899
CHARSET_INFO *default_cl,
793
902
extern void free_charsets(void);
794
903
extern char *get_charsets_dir(char *buf);
795
extern bool my_charset_same(const CHARSET_INFO *cs1, const CHARSET_INFO *cs2);
796
extern bool init_compiled_charsets(myf flags);
904
extern my_bool my_charset_same(CHARSET_INFO *cs1, CHARSET_INFO *cs2);
905
extern my_bool init_compiled_charsets(myf flags);
797
906
extern void add_compiled_collation(CHARSET_INFO *cs);
798
extern size_t escape_string_for_drizzle(const CHARSET_INFO *charset_info,
799
char *to, size_t to_length,
800
const char *from, size_t length);
801
extern size_t escape_quotes_for_drizzle(const CHARSET_INFO *charset_info,
802
char *to, size_t to_length,
803
const char *from, size_t length);
805
extern void thd_increment_bytes_sent(uint32_t length);
806
extern void thd_increment_bytes_received(uint32_t length);
807
extern void thd_increment_net_big_packet_count(uint32_t length);
907
extern size_t escape_string_for_mysql(CHARSET_INFO *charset_info,
908
char *to, size_t to_length,
909
const char *from, size_t length);
910
extern size_t escape_quotes_for_mysql(CHARSET_INFO *charset_info,
911
char *to, size_t to_length,
912
const char *from, size_t length);
914
extern void thd_increment_bytes_sent(ulong length);
915
extern void thd_increment_bytes_received(ulong length);
916
extern void thd_increment_net_big_packet_count(ulong length);
813
919
#endif /* _my_sys_h */