Mercurial > ecos-v3_0-branch
annotate packages/services/memalloc/common/current/include/sepmeta.hxx @ 2863:7d8c61e6225c default tip
* Added execute permissions to files missed in conversion from CVS
| author | alexs |
|---|---|
| date | Thu, 26 Mar 2009 20:39:18 +0000 |
| parents | 74dbf4c3f2e1 |
| children |
| rev | line source |
|---|---|
|
176
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
1 #ifndef CYGONCE_MEMALLOC_SEPMETA_HXX |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
2 #define CYGONCE_MEMALLOC_SEPMETA_HXX |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
3 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
4 //========================================================================== |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
5 // |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
6 // sepmeta.hxx |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
7 // |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
8 // Variable block memory pool with separate metadata |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
9 // |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
10 //========================================================================== |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
11 // ####ECOSGPLCOPYRIGHTBEGIN#### |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
12 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
13 // This file is part of eCos, the Embedded Configurable Operating System. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
14 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
176
diff
changeset
|
15 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
16 // eCos is free software; you can redistribute it and/or modify it under |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
17 // the terms of the GNU General Public License as published by the Free |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
18 // Software Foundation; either version 2 or (at your option) any later |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
19 // version. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
176
diff
changeset
|
20 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
21 // eCos is distributed in the hope that it will be useful, but WITHOUT |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
22 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
23 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
24 // for more details. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
176
diff
changeset
|
25 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
26 // You should have received a copy of the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
27 // along with eCos; if not, write to the Free Software Foundation, Inc., |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
28 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
176
diff
changeset
|
29 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
30 // As a special exception, if other files instantiate templates or use |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
31 // macros or inline functions from this file, or you compile this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
32 // and link it with other works to produce a work based on this file, |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
33 // this file does not by itself cause the resulting work to be covered by |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
34 // the GNU General Public License. However the source code for this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
35 // must still be made available in accordance with section (3) of the GNU |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
36 // General Public License v2. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
176
diff
changeset
|
37 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
38 // This exception does not invalidate any other reasons why a work based |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
39 // on this file might be covered by the GNU General Public License. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
40 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
41 // ####ECOSGPLCOPYRIGHTEND#### |
|
176
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
42 //========================================================================== |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
43 //#####DESCRIPTIONBEGIN#### |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
44 // |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
45 // Author(s): jlarmour |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
46 // Contributors: |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
47 // Date: 2001-06-28 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
48 // Purpose: Define Sepmeta class interface |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
49 // Description: Inline class for constructing a variable block allocator |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
50 // with separate metadata |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
51 // Usage: #include <cyg/memalloc/sepmeta.hxx> |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
52 // |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
53 // |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
54 //####DESCRIPTIONEND#### |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
55 // |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
56 //========================================================================== |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
57 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
58 // CONFIGURATION |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
59 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
60 #include <pkgconf/memalloc.h> |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
61 #ifdef CYGSEM_MEMALLOC_ALLOCATOR_SEPMETA_THREADAWARE |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
62 # include <pkgconf/system.h> |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
63 # ifdef CYGPKG_KERNEL |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
64 # include <pkgconf/kernel.h> |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
65 # endif |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
66 #endif |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
67 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
68 #if 0 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
69 // when used as an implementation for malloc, we need the following |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
70 // to let the system know the name of the class |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
71 #define CYGCLS_MEMALLOC_MALLOC_IMPL Cyg_Mempool_Sepmeta |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
72 #endif |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
73 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
74 // if the implementation is all that's required, don't output anything else |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
75 #ifndef __MALLOC_IMPL_WANTED |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
76 // INCLUDES |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
77 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
78 #include <cyg/infra/cyg_type.h> // types |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
79 #include <cyg/infra/cyg_ass.h> // assertion macros |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
80 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
81 #ifdef CYGFUN_KERNEL_THREADS_TIMER |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
82 # include <cyg/kernel/ktypes.h> // cyg_tick_count |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
83 #endif |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
84 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
85 #ifdef CYGSEM_MEMALLOC_ALLOCATOR_SEPMETA_THREADAWARE |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
86 # include <cyg/memalloc/mempolt2.hxx> // kernel safe mempool template |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
87 #endif |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
88 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
89 #include <cyg/memalloc/sepmetaimpl.hxx>// implementation of this mem pool |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
90 #include <cyg/memalloc/common.hxx> // Common memory allocator infra |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
91 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
92 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
93 // TYPE DEFINITIONS |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
94 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
95 class Cyg_Mempool_Sepmeta |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
96 { |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
97 protected: |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
98 // This is a horrible workaround for the fact that C++ doesn't let |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
99 // you construct mypool explicitly if you have to initialize a struct |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
100 // to pass as an argument first. |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
101 struct Cyg_Mempool_Sepmeta_Implementation::constructorargs args; |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
102 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
103 #ifdef CYGSEM_MEMALLOC_ALLOCATOR_SEPMETA_THREADAWARE |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
104 Cyg_Mempolt2<Cyg_Mempool_Sepmeta_Implementation> mypool; |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
105 #else |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
106 Cyg_Mempool_Sepmeta_Implementation mypool; |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
107 #endif |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
108 public: |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
109 // This API makes concrete a class which implements a thread-safe |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
110 // kernel-savvy memory pool which manages variable size blocks with |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
111 // separate metadata. |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
112 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
113 // Constructor: gives the base and size of the arena in which memory is |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
114 // to be carved out, note that management structures are taken from the |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
115 // same arena. |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
116 Cyg_Mempool_Sepmeta( cyg_uint8 * /* base */, cyg_int32 /* size */, |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
117 cyg_int32 /* alignment */, |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
118 cyg_uint8 * /* metabase */, |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
119 cyg_uint32 /* metasize */); |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
120 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
121 // Destructor |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
122 ~Cyg_Mempool_Sepmeta(); |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
123 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
124 // get some memory; wait if none available |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
125 // if we aren't configured to be thread-aware this is irrelevant |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
126 #ifdef CYGSEM_MEMALLOC_ALLOCATOR_SEPMETA_THREADAWARE |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
127 cyg_uint8 * |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
128 alloc( cyg_int32 /* size */ ); |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
129 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
130 # ifdef CYGFUN_KERNEL_THREADS_TIMER |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
131 // get some memory with a timeout |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
132 cyg_uint8 * |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
133 alloc( cyg_int32 /* size */, cyg_tick_count /* delay_timeout */ ); |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
134 # endif |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
135 #endif |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
136 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
137 // get some memory, return NULL if none available |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
138 cyg_uint8 * |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
139 try_alloc( cyg_int32 /* size */ ); |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
140 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
141 // resize existing allocation, if oldsize is non-NULL, previous |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
142 // allocation size is placed into it. If previous size not available, |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
143 // it is set to 0. NB previous allocation size may have been rounded up. |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
144 // Occasionally the allocation can be adjusted *backwards* as well as, |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
145 // or instead of forwards, therefore the address of the resized |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
146 // allocation is returned, or NULL if no resizing was possible. |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
147 // Note that this differs from ::realloc() in that no attempt is |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
148 // made to call malloc() if resizing is not possible - that is left |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
149 // to higher layers. The data is copied from old to new though. |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
150 // The effects of alloc_ptr==NULL or newsize==0 are undefined |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
151 cyg_uint8 * |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
152 resize_alloc( cyg_uint8 * /* alloc_ptr */, cyg_int32 /* newsize */, |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
153 cyg_int32 * /* oldsize */ =NULL ); |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
154 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
155 // free the memory back to the pool |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
156 // returns true on success |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
157 cyg_bool |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
158 free( cyg_uint8 * /* ptr */, cyg_int32 /* size */ =0 ); |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
159 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
160 // Get memory pool status |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
161 // flags is a bitmask of requested fields to fill in. The flags are |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
162 // defined in common.hxx |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
163 void |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
164 get_status( cyg_mempool_status_flag_t /* flags */, |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
165 Cyg_Mempool_Status & /* status */ ); |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
166 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
167 CYGDBG_DEFINE_CHECK_THIS |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
168 }; |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
169 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
170 #endif // ifndef __MALLOC_IMPL_WANTED |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
171 |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
172 #endif // ifndef CYGONCE_MEMALLOC_SEPMETA_HXX |
|
3902ef905c9c
Merge from eCos master repository on 2001-08-03-06:43:13-BST
jlarmour
parents:
diff
changeset
|
173 // EOF sepmeta.hxx |
