mem0pool.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /******************************************************
  2. The lowest-level memory management
  3. (c) 1994, 1995 Innobase Oy
  4. Created 6/9/1994 Heikki Tuuri
  5. *******************************************************/
  6. #ifndef mem0pool_h
  7. #define mem0pool_h
  8. #include "univ.i"
  9. #include "os0file.h"
  10. #include "ut0lst.h"
  11. typedef struct mem_area_struct mem_area_t;
  12. typedef struct mem_pool_struct mem_pool_t;
  13. /* The common memory pool */
  14. extern mem_pool_t* mem_comm_pool;
  15. /* Memory area header */
  16. struct mem_area_struct{
  17. ulint size_and_free; /* memory area size is obtained by
  18. anding with ~MEM_AREA_FREE; area in
  19. a free list if ANDing with
  20. MEM_AREA_FREE results in nonzero */ 
  21. UT_LIST_NODE_T(mem_area_t)
  22. free_list; /* free list node */
  23. };
  24. /* Each memory area takes this many extra bytes for control information */
  25. #define MEM_AREA_EXTRA_SIZE (ut_calc_align(sizeof(struct mem_area_struct),
  26.                                               UNIV_MEM_ALIGNMENT))
  27. /************************************************************************
  28. Creates a memory pool. */
  29. mem_pool_t*
  30. mem_pool_create(
  31. /*============*/
  32. /* out: memory pool */
  33. ulint size); /* in: pool size in bytes */
  34. /************************************************************************
  35. Allocates memory from a pool. NOTE: This low-level function should only be
  36. used in mem0mem.*! */
  37. void*
  38. mem_area_alloc(
  39. /*===========*/
  40. /* out, own: allocated memory buffer */
  41. ulint size, /* in: allocated size in bytes; for optimum
  42. space usage, the size should be a power of 2
  43. minus MEM_AREA_EXTRA_SIZE */
  44. mem_pool_t* pool); /* in: memory pool */
  45. /************************************************************************
  46. Frees memory to a pool. */
  47. void
  48. mem_area_free(
  49. /*==========*/
  50. void* ptr, /* in, own: pointer to allocated memory
  51. buffer */
  52. mem_pool_t* pool); /* in: memory pool */
  53. /************************************************************************
  54. Returns the amount of reserved memory. */
  55. ulint
  56. mem_pool_get_reserved(
  57. /*==================*/
  58. /* out: reserved mmeory in bytes */
  59. mem_pool_t* pool); /* in: memory pool */
  60. /************************************************************************
  61. Reserves the mem pool mutex. */
  62. void
  63. mem_pool_mutex_enter(void);
  64. /*======================*/
  65. /************************************************************************
  66. Releases the mem pool mutex. */
  67. void
  68. mem_pool_mutex_exit(void);
  69. /*=====================*/
  70. /************************************************************************
  71. Validates a memory pool. */
  72. ibool
  73. mem_pool_validate(
  74. /*==============*/
  75. /* out: TRUE if ok */
  76. mem_pool_t* pool); /* in: memory pool */
  77. /************************************************************************
  78. Prints info of a memory pool. */
  79. void
  80. mem_pool_print_info(
  81. /*================*/
  82. FILE*         outfile,/* in: output file to write to */
  83. mem_pool_t* pool); /* in: memory pool */
  84. #ifndef UNIV_NONINL
  85. #include "mem0pool.ic"
  86. #endif
  87. #endif