13
13
along with this program; if not, write to the Free Software
14
14
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
18
#include "drizzled/internal/my_sys.h"
16
#include "mysys_priv.h"
19
17
#include "my_static.h"
20
#include "drizzled/error.h"
21
#include "drizzled/internal/m_string.h"
22
#include "drizzled/charset_info.h"
23
#include "drizzled/charset.h"
18
#include <mysys/mysys_err.h>
19
#include <mystrings/m_string.h>
20
#include <mystrings/m_ctype.h>
32
24
bool my_init_done= 0;
33
25
uint mysys_usage_id= 0; /* Incremented for each my_init() */
63
57
my_umask= 0660; /* Default umask for new files */
64
58
my_umask_dir= 0700; /* Default umask for new directories */
60
#if defined(SAFE_MUTEX)
61
safe_mutex_global_init(); /* Must be called early */
63
#if defined(MY_PTHREAD_FASTMUTEX) && !defined(SAFE_MUTEX)
64
fastmutex_global_init(); /* Must be called early */
65
66
#if defined(HAVE_PTHREAD_INIT)
91
void my_end(int infoflag)
94
this code is suboptimal to workaround a bug in
95
Sun CC: Sun C++ 5.6 2004/06/02 for x86, and should not be
96
optimized until this compiler is not in use anymore
98
FILE *info_file= stderr;
101
if ((infoflag & MY_CHECK_ERROR) || print_info)
103
{ /* Test if some file is left open */
104
if (my_file_opened | my_stream_opened)
106
sprintf(errbuff[0],EE(EE_OPEN_WARNING),my_file_opened,my_stream_opened);
107
(void) my_message_no_curses(EE_OPEN_WARNING,errbuff[0],ME_BELL);
108
my_print_open_files();
112
my_error_unregister_all();
114
if ((infoflag & MY_GIVE_INFO) || print_info)
116
#ifdef HAVE_GETRUSAGE
119
/* Purify assumes that rus is uninitialized after getrusage call */
120
memset(&rus, 0, sizeof(rus));
122
if (!getrusage(RUSAGE_SELF, &rus))
123
fprintf(info_file,"\n\
124
User time %.2f, System time %.2f\n\
125
Maximum resident set size %ld, Integral resident set size %ld\n\
126
Non-physical pagefaults %ld, Physical pagefaults %ld, Swaps %ld\n\
127
Blocks in %ld out %ld, Messages in %ld out %ld, Signals %ld\n\
128
Voluntary context switches %ld, Involuntary context switches %ld\n",
129
(rus.ru_utime.tv_sec * SCALE_SEC +
130
rus.ru_utime.tv_usec / SCALE_USEC) / 100.0,
131
(rus.ru_stime.tv_sec * SCALE_SEC +
132
rus.ru_stime.tv_usec / SCALE_USEC) / 100.0,
133
rus.ru_maxrss, rus.ru_idrss,
134
rus.ru_minflt, rus.ru_majflt,
135
rus.ru_nswap, rus.ru_inblock, rus.ru_oublock,
136
rus.ru_msgsnd, rus.ru_msgrcv, rus.ru_nsignals,
137
rus.ru_nvcsw, rus.ru_nivcsw);
140
else if (infoflag & MY_CHECK_ERROR)
142
TERMINATE(stderr, 0); /* Print memory leaks on screen */
95
146
my_thread_global_end();
147
#if defined(SAFE_MUTEX)
149
Check on destroying of mutexes. A few may be left that will get cleaned
150
up by C++ destructors
154
#endif /* defined(SAFE_MUTEX) */
100
} /* namespace internal */
101
} /* namespace drizzled */