2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
6 * These libraries and programs are free software; you can
7 * redistribute them and/or modify them under the terms of the GNU
8 * Lesser General Public License as published by the Free Software
9 * Foundation; either version 2 of the License, or (at your option)
12 * These libraries and programs are distributed in the hope that
13 * they will be useful, but WITHOUT ANY WARRANTY; without even the
14 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU Lesser General Public License for more
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with these librararies and programs; if not, write
20 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21 * Floor, Boston, MA 02110-1301 USA
24 * $XConsortium: memory_pool.h /main/3 1996/06/11 17:17:31 cde-hal $
26 * Copyright (c) 1993 HAL Computer Systems International, Ltd.
27 * All rights reserved. Unpublished -- rights reserved under
28 * the Copyright Laws of the United States. USE OF A COPYRIGHT
29 * NOTICE IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION
32 * THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE
33 * SECRETS OF HAL COMPUTER SYSTEMS INTERNATIONAL, LTD. USE,
34 * DISCLOSURE, OR REPRODUCTION IS PROHIBITED WITHOUT THE
35 * PRIOR EXPRESS WRITTEN PERMISSION OF HAL COMPUTER SYSTEMS
38 * RESTRICTED RIGHTS LEGEND
39 * Use, duplication, or disclosure by the Government is subject
40 * to the restrictions as set forth in subparagraph (c)(l)(ii)
41 * of the Rights in Technical Data and Computer Software clause
42 * at DFARS 252.227-7013.
44 * HAL COMPUTER SYSTEMS INTERNATIONAL, LTD.
53 #define _memory_pool 1
55 #include "utility/funcs.h"
56 #include "dstr/dlist_void_ptr_cell.h"
57 #include "dstr/dlist.h"
58 #include "dstr/void_ptr_array.h"
60 #define MAX_CHUNK_SZ 128
64 class chunk_manage_record_t : public dlist_cell
68 chunk_carrier* chunk_carrier_ptr;
70 chunk_manage_record_t( chunk_carrier* chk_carr) :
71 chunk_carrier_ptr(chk_carr) {};
72 virtual ~chunk_manage_record_t() {};
75 typedef chunk_manage_record_t* chunk_manage_recordPtr;
82 chunk_carrier(int chunk_sz, int chunks);
83 virtual ~chunk_carrier();
93 friend class fix_chunk_pool;
94 friend class memory_pool;
102 fix_chunk_pool(int chunk_sz);
103 virtual ~fix_chunk_pool();
106 virtual char* alloc();
109 virtual void free(char*);
114 dlist chunk_carrier_list;
115 dlist free_chunk_list;
117 void init_one_chunk_carrier();
121 typedef void_ptr_array vm_pool_array_t;
127 memory_pool(int max_alloc_size = MAX_CHUNK_SZ);
128 virtual ~memory_pool();
131 virtual char* alloc(size_t sz);
134 virtual void free(char*);
137 int max_alloc_size_from_pool;
138 vm_pool_array_t vm_pool_vector;
142 #define g_memory_pool (*g_memory_pool_ptr)
143 extern memory_pool* g_memory_pool_ptr;