12
12
You should have received a copy of the GNU General Public License
13
13
along with this program; if not, write to the Free Software
14
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
18
#include "drizzled/internal/my_sys.h"
14
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
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
23
bool my_init_done= 0;
33
24
uint mysys_usage_id= 0; /* Incremented for each my_init() */
25
uint32_t my_thread_stack_size= 65536;
35
27
static uint32_t atoi_octal(const char *str)
38
30
while (*str && my_isspace(&my_charset_utf8_general_ci, *str))
40
tmp= strtol(str, NULL, (*str == '0' ? 8 : 10));
33
(*str == '0' ? 8 : 10), /* Octalt or decimalt */
41
35
return (uint32_t) tmp;
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();
115
if ((infoflag & MY_GIVE_INFO) || print_info)
117
#ifdef HAVE_GETRUSAGE
120
/* Purify assumes that rus is uninitialized after getrusage call */
121
memset(&rus, 0, sizeof(rus));
123
if (!getrusage(RUSAGE_SELF, &rus))
124
fprintf(info_file,"\n\
125
User time %.2f, System time %.2f\n\
126
Maximum resident set size %ld, Integral resident set size %ld\n\
127
Non-physical pagefaults %ld, Physical pagefaults %ld, Swaps %ld\n\
128
Blocks in %ld out %ld, Messages in %ld out %ld, Signals %ld\n\
129
Voluntary context switches %ld, Involuntary context switches %ld\n",
130
(rus.ru_utime.tv_sec * SCALE_SEC +
131
rus.ru_utime.tv_usec / SCALE_USEC) / 100.0,
132
(rus.ru_stime.tv_sec * SCALE_SEC +
133
rus.ru_stime.tv_usec / SCALE_USEC) / 100.0,
134
rus.ru_maxrss, rus.ru_idrss,
135
rus.ru_minflt, rus.ru_majflt,
136
rus.ru_nswap, rus.ru_inblock, rus.ru_oublock,
137
rus.ru_msgsnd, rus.ru_msgrcv, rus.ru_nsignals,
138
rus.ru_nvcsw, rus.ru_nivcsw);
141
else if (infoflag & MY_CHECK_ERROR)
143
TERMINATE(stderr, 0); /* Print memory leaks on screen */
95
147
my_thread_global_end();
148
#if defined(SAFE_MUTEX)
150
Check on destroying of mutexes. A few may be left that will get cleaned
151
up by C++ destructors
155
#endif /* defined(SAFE_MUTEX) */
100
} /* namespace internal */
101
} /* namespace drizzled */