mem0pool.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小: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 (sizeof(struct mem_area_struct))
  26. /************************************************************************
  27. Creates a memory pool. */
  28. mem_pool_t*
  29. mem_pool_create(
  30. /*============*/
  31. /* out: memory pool */
  32. ulint size); /* in: pool size in bytes */
  33. /************************************************************************
  34. Allocates memory from a pool. NOTE: This low-level function should only be
  35. used in mem0mem.*! */
  36. void*
  37. mem_area_alloc(
  38. /*===========*/
  39. /* out, own: allocated memory buffer */
  40. ulint size, /* in: allocated size in bytes; for optimum
  41. space usage, the size should be a power of 2
  42. minus MEM_AREA_EXTRA_SIZE */
  43. mem_pool_t* pool); /* in: memory pool */
  44. /************************************************************************
  45. Frees memory to a pool. */
  46. void
  47. mem_area_free(
  48. /*==========*/
  49. void* ptr, /* in, own: pointer to allocated memory
  50. buffer */
  51. mem_pool_t* pool); /* in: memory pool */
  52. /************************************************************************
  53. Returns the amount of reserved memory. */
  54. ulint
  55. mem_pool_get_reserved(
  56. /*==================*/
  57. /* out: reserved mmeory in bytes */
  58. mem_pool_t* pool); /* in: memory pool */
  59. /************************************************************************
  60. Validates a memory pool. */
  61. ibool
  62. mem_pool_validate(
  63. /*==============*/
  64. /* out: TRUE if ok */
  65. mem_pool_t* pool); /* in: memory pool */
  66. /************************************************************************
  67. Prints info of a memory pool. */
  68. void
  69. mem_pool_print_info(
  70. /*================*/
  71. FILE*         outfile,/* in: output file to write to */
  72. mem_pool_t* pool); /* in: memory pool */
  73. #ifndef UNIV_NONINL
  74. #include "mem0pool.ic"
  75. #endif
  76. #endif