my_init.c
上传用户:jmzj888
上传日期:2007-01-02
资源大小:220k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB
  2.    This file is public domain and comes with NO WARRANTY of any kind */
  3. #include "mysys_priv.h"
  4. #include "my_static.h"
  5. #include "mysys_err.h"
  6. #include <m_string.h>
  7. #ifdef THREAD
  8. #include <my_pthread.h>
  9. #endif
  10. #ifdef HAVE_GETRUSAGE
  11. #include <sys/resource.h>
  12. extern int     getrusage(int, struct rusage *);
  13. #endif
  14. #ifdef VMS
  15. #include <my_static.c>
  16. #include <m_ctype.h>
  17. #endif
  18. #ifdef __WIN32__
  19. #ifdef _MSC_VER
  20. #include <crtdbg.h>
  21. #endif
  22. static void my_win_init(void);
  23. #else
  24. #define my_win_init()
  25. #endif
  26. /* Init my_sys functions and my_sys variabels */
  27. void my_init(void)
  28. {
  29.   my_string str;
  30. #if defined(HAVE_PTHREAD_INIT) && defined(THREAD)
  31.   pthread_init(); /* Must be called before DBUG_ENTER */
  32. #endif
  33.   {
  34.     DBUG_ENTER("my_init");
  35.     DBUG_PROCESS(my_progname ? my_progname : "unknown");
  36.     if (!home_dir)
  37.     { /* Don't initialize twice */
  38.       if ((home_dir=getenv("HOME")) != 0)
  39. home_dir=intern_filename(home_dir_buff,home_dir);
  40. #ifndef VMS
  41.       if ((str=getenv("UMASK")) != 0)
  42. my_umask=atoi(str) | 0600; /* Default creation of new files */
  43. #endif
  44. #ifdef VMS
  45.       init_ctype(); /* Stupid linker don't link _ctype.c */
  46. #endif
  47. #ifdef THREAD
  48.       my_thread_global_init();
  49. #ifndef __WIN32__
  50.       sigfillset(&my_signals); /* signals blocked by mf_brkhant */
  51. #endif
  52. #endif
  53.       DBUG_PRINT("exit",("home: '%s'",home_dir));
  54.     }
  55.    DBUG_VOID_RETURN;
  56.   }
  57. } /* my_init */
  58. /* End my_sys */
  59. void my_end(int infoflag)
  60. {
  61.   FILE *info_file;
  62.   DBUG_ENTER("my_end");
  63.   if (!(info_file=DBUG_FILE))
  64.     info_file=stderr;
  65.   if (infoflag & MY_CHECK_ERROR || info_file != stderr)
  66.   { /* Test if some file is left open */
  67.     if (my_file_opened | my_stream_opened)
  68.     {
  69.       sprintf(errbuff[0],EE(EE_OPEN_WARNING),my_file_opened,my_stream_opened);
  70.       (void) my_message_no_curses(EE_OPEN_WARNING,errbuff[0],ME_BELL);
  71.       DBUG_PRINT("error",("%s",errbuff[0]));
  72.     }
  73.   }
  74.   if (infoflag & MY_GIVE_INFO || info_file != stderr)
  75.   {
  76. #ifdef HAVE_GETRUSAGE
  77.     struct rusage rus;
  78.     if (!getrusage(RUSAGE_SELF, &rus))
  79.       fprintf(info_file,"nUser time %.2f, System time %.2fnMaximum resident set size %d, Integral resident set size %dnNon physical pagefaults %d, Physical pagefaults %d, Swaps %dnBlocks in %d out %d, Messages in %d out %d, Signals %dnVouluntary contexts switches %d, Invouluntary contexts switches %dn",
  80.       (rus.ru_utime.tv_sec * SCALE_SEC +
  81.        rus.ru_utime.tv_usec / SCALE_USEC) / 100.0,
  82.       (rus.ru_stime.tv_sec * SCALE_SEC +
  83.        rus.ru_stime.tv_usec / SCALE_USEC) / 100.0,
  84.       rus.ru_maxrss, rus.ru_idrss,
  85.       rus.ru_minflt, rus.ru_majflt,
  86.       rus.ru_nswap, rus.ru_inblock, rus.ru_oublock,
  87.       rus.ru_msgsnd, rus.ru_msgrcv, rus.ru_nsignals,
  88.       rus.ru_nvcsw, rus.ru_nivcsw);
  89. #endif
  90. #ifdef MSDOS
  91.     fprintf(info_file,"nRun time: %.1fn",(double) clock()/CLOCKS_PER_SEC);
  92. #endif
  93. #if defined(SAFEMALLOC)
  94.     TERMINATE(stderr); /* Give statistic on screen */
  95. #elif defined(__WIN32__) && defined(_MSC_VER)
  96.    _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE );
  97.    _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDERR );
  98.    _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE );
  99.    _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDERR );
  100.    _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE );
  101.    _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );
  102.    _CrtCheckMemory();
  103.    _CrtDumpMemoryLeaks();
  104. #endif
  105.   }
  106. #ifdef THREAD
  107.   pthread_mutex_destroy(&THR_LOCK_keycache);
  108.   pthread_mutex_destroy(&THR_LOCK_malloc);
  109.   pthread_mutex_destroy(&THR_LOCK_open);
  110. #endif
  111.   DBUG_VOID_RETURN;
  112. } /* my_end */