OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [services/] [memalloc/] [common/] [v2_0/] [include/] [mfiximpl.hxx] - Blame information for rev 174

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 27 unneback
#ifndef CYGONCE_MEMALLOC_MFIXIMPL_HXX
2
#define CYGONCE_MEMALLOC_MFIXIMPL_HXX
3
 
4
//==========================================================================
5
//
6
//      mfiximpl.hxx
7
//
8
//      Memory pool with fixed block class declarations
9
//
10
//==========================================================================
11
//####ECOSGPLCOPYRIGHTBEGIN####
12
// -------------------------------------------
13
// This file is part of eCos, the Embedded Configurable Operating System.
14
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
15
//
16
// eCos is free software; you can redistribute it and/or modify it under
17
// the terms of the GNU General Public License as published by the Free
18
// Software Foundation; either version 2 or (at your option) any later version.
19
//
20
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
21
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
22
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
23
// for more details.
24
//
25
// You should have received a copy of the GNU General Public License along
26
// with eCos; if not, write to the Free Software Foundation, Inc.,
27
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
28
//
29
// As a special exception, if other files instantiate templates or use macros
30
// or inline functions from this file, or you compile this file and link it
31
// with other works to produce a work based on this file, this file does not
32
// by itself cause the resulting work to be covered by the GNU General Public
33
// License. However the source code for this file must still be made available
34
// in accordance with section (3) of the GNU General Public License.
35
//
36
// This exception does not invalidate any other reasons why a work based on
37
// this file might be covered by the GNU General Public License.
38
//
39
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
40
// at http://sources.redhat.com/ecos/ecos-license/
41
// -------------------------------------------
42
//####ECOSGPLCOPYRIGHTEND####
43
//==========================================================================
44
//#####DESCRIPTIONBEGIN####
45
//
46
// Author(s):    hmt
47
// Contributors: jlarmour
48
// Date:         2000-06-12
49
// Purpose:      Define Mfiximpl class interface
50
// Description:  Inline class for constructing a fixed block allocator
51
// Usage:        #include 
52
//
53
//
54
//####DESCRIPTIONEND####
55
//
56
//==========================================================================
57
 
58
#include 
59
#include      // Common memory allocator infra
60
 
61
class Cyg_Mempool_Fixed_Implementation {
62
protected:
63
    // these constructors are explicitly disallowed
64
    Cyg_Mempool_Fixed_Implementation() {};
65
//    Cyg_Mempool_Fixed_Implementation( Cyg_Mempool_Fixed_Implementation &ref )
66
//    {};
67
    Cyg_Mempool_Fixed_Implementation &
68
    operator=( Cyg_Mempool_Fixed_Implementation &ref )
69
    { return ref; };
70
 
71
    cyg_uint32 *bitmap;
72
    cyg_int32 maptop;
73
    cyg_uint8  *mempool;
74
    cyg_int32 numblocks;
75
    cyg_int32 freeblocks;
76
    cyg_int32 blocksize;
77
    cyg_int32 firstfree;
78
    cyg_uint8  *top;
79
 
80
public:
81
    // THIS is the public API of memory pools generally that can have the
82
    // kernel oriented thread-safe package layer atop.
83
    //
84
    // The kernel package is a template whose type parameter is one of
85
    // these.  That is the reason there are superfluous parameters here and
86
    // more genereralization than might be expected in a fixed block
87
    // allocator.
88
 
89
    // Constructor: gives the base and size of the arena in which memory is
90
    // to be carved out, note that management structures are taken from the
91
    // same arena.  The alloc_unit may be any other param in general; it
92
    // comes through from the outer constructor unchanged.
93
    Cyg_Mempool_Fixed_Implementation(
94
        cyg_uint8 *base,
95
        cyg_int32 size,
96
        CYG_ADDRWORD alloc_unit );
97
 
98
    // Destructor
99
    ~Cyg_Mempool_Fixed_Implementation();
100
 
101
    // get some memory; size is ignored in a fixed block allocator
102
    cyg_uint8 *try_alloc( cyg_int32 size );
103
 
104
    // supposedly resize existing allocation. This is defined in the
105
    // fixed block allocator purely for API consistency. It will return
106
    // an error (false) for all values, except for the blocksize
107
    // returns true on success
108
    cyg_uint8 *
109
    resize_alloc( cyg_uint8 *alloc_ptr, cyg_int32 newsize,
110
                  cyg_int32 *oldsize=NULL );
111
 
112
    // free the memory back to the pool; size ignored here
113
    cyg_bool free( cyg_uint8 *p, cyg_int32 size );
114
 
115
    // Get memory pool status
116
    // flags is a bitmask of requested fields to fill in. The flags are
117
    // defined in common.hxx
118
    void get_status( cyg_mempool_status_flag_t /* flags */,
119
                     Cyg_Mempool_Status & /* status */ );
120
 
121
};
122
 
123
#include 
124
 
125
// -------------------------------------------------------------------------
126
#endif // ifndef CYGONCE_MEMALLOC_MFIXIMPL_HXX
127
// EOF mfiximpl.hxx

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.