base: const-correctness of Allocator interface
This patch adds const qualifiers to the functions Allocator::consumed, Allocator::overhead, Allocator::avail, and Range_allocator::valid_addr. Fixes #1481
This commit is contained in:
parent
847ddbf72e
commit
eaab23c012
|
@ -43,19 +43,19 @@ namespace Genode
|
||||||
** Allocator interface **
|
** Allocator interface **
|
||||||
*************************/
|
*************************/
|
||||||
|
|
||||||
bool alloc(size_t size, void **out_addr) {
|
bool alloc(size_t size, void **out_addr) override {
|
||||||
return _alloc->alloc(size, out_addr); }
|
return _alloc->alloc(size, out_addr); }
|
||||||
|
|
||||||
void free(void *addr, size_t size) {
|
void free(void *addr, size_t size) override {
|
||||||
_alloc->free(addr, size); }
|
_alloc->free(addr, size); }
|
||||||
|
|
||||||
size_t consumed() {
|
size_t consumed() const override {
|
||||||
PDBG("Unexpected call");
|
PDBG("Unexpected call");
|
||||||
while (1) ;
|
while (1) ;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t overhead(size_t size) {
|
size_t overhead(size_t size) const override {
|
||||||
PDBG("Unexpected call");
|
PDBG("Unexpected call");
|
||||||
while (1) ;
|
while (1) ;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -44,18 +44,18 @@ class Genode::Early_translations_allocator : public Genode::Core_mem_translator
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Early_translations_allocator() { }
|
Early_translations_allocator() { }
|
||||||
int add_range(addr_t base, size_t size) { return -1; }
|
int add_range(addr_t base, size_t size) override { return -1; }
|
||||||
int remove_range(addr_t base, size_t size) { return -1; }
|
int remove_range(addr_t base, size_t size) override { return -1; }
|
||||||
Alloc_return alloc_aligned(size_t, void **, int, addr_t, addr_t) {
|
Alloc_return alloc_aligned(size_t, void **, int, addr_t, addr_t) override {
|
||||||
return Alloc_return::RANGE_CONFLICT; }
|
return Alloc_return::RANGE_CONFLICT; }
|
||||||
Alloc_return alloc_addr(size_t size, addr_t addr) {
|
Alloc_return alloc_addr(size_t size, addr_t addr) override {
|
||||||
return Alloc_return::RANGE_CONFLICT; }
|
return Alloc_return::RANGE_CONFLICT; }
|
||||||
void free(void *addr) {}
|
void free(void *addr) override { }
|
||||||
size_t avail() { return 0; }
|
size_t avail() const override { return 0; }
|
||||||
bool valid_addr(addr_t addr) { return false; }
|
bool valid_addr(addr_t addr) const override { return false; }
|
||||||
bool alloc(size_t size, void **out_addr) { return false; }
|
bool alloc(size_t size, void **out_addr) override { return false; }
|
||||||
void free(void *addr, size_t) { }
|
void free(void *addr, size_t) override { }
|
||||||
size_t overhead(size_t size) { return 0; }
|
size_t overhead(size_t size) const override { return 0; }
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
void * phys_addr(void * addr) { return addr; }
|
void * phys_addr(void * addr) { return addr; }
|
||||||
void * virt_addr(void * addr) { return addr; }
|
void * virt_addr(void * addr) { return addr; }
|
||||||
|
|
|
@ -102,10 +102,10 @@ class Genode::Page_slab : public Genode::Allocator
|
||||||
/**
|
/**
|
||||||
* Returns number of used slab blocks
|
* Returns number of used slab blocks
|
||||||
*/
|
*/
|
||||||
size_t _slab_blocks_in_use()
|
size_t _slab_blocks_in_use() const
|
||||||
{
|
{
|
||||||
size_t cnt = 0;
|
size_t cnt = 0;
|
||||||
for (List_element<Slab_block> *le = _b_list.first();
|
for (List_element<Slab_block> const *le = _b_list.first();
|
||||||
le; le = le->next(), cnt++) ;
|
le; le = le->next(), cnt++) ;
|
||||||
return cnt;
|
return cnt;
|
||||||
}
|
}
|
||||||
|
@ -220,10 +220,10 @@ class Genode::Page_slab : public Genode::Allocator
|
||||||
* Allocator interface **
|
* Allocator interface **
|
||||||
************************/
|
************************/
|
||||||
|
|
||||||
bool alloc(size_t, void **addr) { return (*addr = alloc()); }
|
bool alloc(size_t, void **addr) override { return (*addr = alloc()); }
|
||||||
void free(void *addr, size_t) { free(addr); }
|
void free(void *addr, size_t) override { free(addr); }
|
||||||
size_t consumed() { return SLAB_BLOCK_SIZE * _slab_blocks_in_use(); }
|
size_t consumed() const override { return SLAB_BLOCK_SIZE * _slab_blocks_in_use(); }
|
||||||
size_t overhead(size_t) { return SLAB_BLOCK_SIZE/SLABS_PER_BLOCK; }
|
size_t overhead(size_t) const override { return SLAB_BLOCK_SIZE/SLABS_PER_BLOCK; }
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -59,15 +59,14 @@ namespace Genode {
|
||||||
return Alloc_return::OK;;
|
return Alloc_return::OK;;
|
||||||
}
|
}
|
||||||
|
|
||||||
int add_range(addr_t, size_t) { return 0; }
|
int add_range(addr_t, size_t) override { return 0; }
|
||||||
int remove_range(addr_t, size_t) { return 0; }
|
int remove_range(addr_t, size_t) override { return 0; }
|
||||||
void free(void *) { }
|
void free(void *) override { }
|
||||||
void free(void *, size_t) { }
|
void free(void *, size_t) override { }
|
||||||
size_t avail() { return ~0; }
|
size_t avail() const override { return ~0; }
|
||||||
bool valid_addr(addr_t) { return true; }
|
bool valid_addr(addr_t) const override { return true; }
|
||||||
size_t overhead(size_t) { return 0; }
|
size_t overhead(size_t) const override { return 0; }
|
||||||
|
bool need_size_for_free() const override { return true; }
|
||||||
bool need_size_for_free() const override { return true; }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Pseudo_ram_allocator _ram_alloc;
|
Pseudo_ram_allocator _ram_alloc;
|
||||||
|
|
|
@ -95,12 +95,12 @@ struct Genode::Allocator : Deallocator
|
||||||
/**
|
/**
|
||||||
* Return total amount of backing store consumed by the allocator
|
* Return total amount of backing store consumed by the allocator
|
||||||
*/
|
*/
|
||||||
virtual size_t consumed() { return 0; }
|
virtual size_t consumed() const { return 0; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return meta-data overhead per block
|
* Return meta-data overhead per block
|
||||||
*/
|
*/
|
||||||
virtual size_t overhead(size_t size) = 0;
|
virtual size_t overhead(size_t size) const = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allocate block and signal error as an exception
|
* Allocate block and signal error as an exception
|
||||||
|
@ -193,7 +193,7 @@ struct Genode::Range_allocator : Allocator
|
||||||
* Note that the returned value is not neccessarily allocatable
|
* Note that the returned value is not neccessarily allocatable
|
||||||
* because the memory may be fragmented.
|
* because the memory may be fragmented.
|
||||||
*/
|
*/
|
||||||
virtual size_t avail() = 0;
|
virtual size_t avail() const = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if address is inside an allocated block
|
* Check if address is inside an allocated block
|
||||||
|
@ -203,7 +203,7 @@ struct Genode::Range_allocator : Allocator
|
||||||
* \return true if address is inside an allocated block, false
|
* \return true if address is inside an allocated block, false
|
||||||
* otherwise
|
* otherwise
|
||||||
*/
|
*/
|
||||||
virtual bool valid_addr(addr_t addr) = 0;
|
virtual bool valid_addr(addr_t addr) const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -250,18 +250,18 @@ class Genode::Allocator_avl_base : public Range_allocator
|
||||||
addr_t from = 0, addr_t to = ~0UL) override;
|
addr_t from = 0, addr_t to = ~0UL) override;
|
||||||
Alloc_return alloc_addr(size_t size, addr_t addr) override;
|
Alloc_return alloc_addr(size_t size, addr_t addr) override;
|
||||||
void free(void *addr) override;
|
void free(void *addr) override;
|
||||||
size_t avail() override;
|
size_t avail() const override;
|
||||||
bool valid_addr(addr_t addr) override;
|
bool valid_addr(addr_t addr) const override;
|
||||||
|
|
||||||
|
|
||||||
/*************************
|
/*************************
|
||||||
** Allocator interface **
|
** Allocator interface **
|
||||||
*************************/
|
*************************/
|
||||||
|
|
||||||
bool alloc(size_t size, void **out_addr) {
|
bool alloc(size_t size, void **out_addr) override {
|
||||||
return (Allocator_avl_base::alloc_aligned(size, out_addr).is_ok()); }
|
return (Allocator_avl_base::alloc_aligned(size, out_addr).is_ok()); }
|
||||||
|
|
||||||
void free(void *addr, size_t) { free(addr); }
|
void free(void *addr, size_t) override { free(addr); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return size of block at specified address
|
* Return size of block at specified address
|
||||||
|
@ -278,7 +278,7 @@ class Genode::Allocator_avl_base : public Range_allocator
|
||||||
* The 'sizeof(umword_t)' represents the overhead of the meta-data
|
* The 'sizeof(umword_t)' represents the overhead of the meta-data
|
||||||
* slab allocator.
|
* slab allocator.
|
||||||
*/
|
*/
|
||||||
size_t overhead(size_t) { return sizeof(Block) + sizeof(umword_t); }
|
size_t overhead(size_t) const override { return sizeof(Block) + sizeof(umword_t); }
|
||||||
|
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
};
|
};
|
||||||
|
|
|
@ -93,7 +93,7 @@ class Genode::Allocator_guard : public Allocator
|
||||||
/**
|
/**
|
||||||
* Return amount of backing store consumed by the allocator
|
* Return amount of backing store consumed by the allocator
|
||||||
*/
|
*/
|
||||||
size_t consumed() override { return _consumed; }
|
size_t consumed() const override { return _consumed; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return allocation limit
|
* Return allocation limit
|
||||||
|
@ -103,7 +103,7 @@ class Genode::Allocator_guard : public Allocator
|
||||||
/**
|
/**
|
||||||
* Return meta-data overhead per block
|
* Return meta-data overhead per block
|
||||||
*/
|
*/
|
||||||
size_t overhead(size_t size) override { return _allocator->overhead(size); }
|
size_t overhead(size_t size) const override { return _allocator->overhead(size); }
|
||||||
|
|
||||||
bool need_size_for_free() const override {
|
bool need_size_for_free() const override {
|
||||||
return _allocator->need_size_for_free(); }
|
return _allocator->need_size_for_free(); }
|
||||||
|
|
|
@ -170,8 +170,8 @@ class Genode::Heap : public Allocator
|
||||||
|
|
||||||
bool alloc(size_t, void **) override;
|
bool alloc(size_t, void **) override;
|
||||||
void free(void *, size_t) override;
|
void free(void *, size_t) override;
|
||||||
size_t consumed() override { return _quota_used; }
|
size_t consumed() const override { return _quota_used; }
|
||||||
size_t overhead(size_t size) override { return _alloc.overhead(size); }
|
size_t overhead(size_t size) const override { return _alloc.overhead(size); }
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -210,8 +210,8 @@ class Genode::Sliced_heap : public Allocator
|
||||||
|
|
||||||
bool alloc(size_t, void **);
|
bool alloc(size_t, void **);
|
||||||
void free(void *, size_t);
|
void free(void *, size_t);
|
||||||
size_t consumed() { return _consumed; }
|
size_t consumed() const { return _consumed; }
|
||||||
size_t overhead(size_t size);
|
size_t overhead(size_t size) const;
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -265,10 +265,10 @@ class Genode::Slab : public Allocator
|
||||||
* The 'size' parameter is ignored as only slab entries with
|
* The 'size' parameter is ignored as only slab entries with
|
||||||
* preconfigured slab-entry size are allocated.
|
* preconfigured slab-entry size are allocated.
|
||||||
*/
|
*/
|
||||||
bool alloc(size_t size, void **addr);
|
bool alloc(size_t size, void **addr) override;
|
||||||
void free(void *addr, size_t) { free(addr); }
|
void free(void *addr, size_t) override { free(addr); }
|
||||||
size_t consumed();
|
size_t consumed() const override;
|
||||||
size_t overhead(size_t) { return _block_size/_num_elem; }
|
size_t overhead(size_t) const override { return _block_size/_num_elem; }
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -86,13 +86,13 @@ class Genode::Synchronized_allocator : public Allocator
|
||||||
_alloc.free(addr, size);
|
_alloc.free(addr, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t consumed() override
|
size_t consumed() const override
|
||||||
{
|
{
|
||||||
Lock::Guard lock_guard(*_lock);
|
Lock::Guard lock_guard(*_lock);
|
||||||
return _alloc.consumed();
|
return _alloc.consumed();
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t overhead(size_t size) override
|
size_t overhead(size_t size) const override
|
||||||
{
|
{
|
||||||
Lock::Guard lock_guard(*_lock);
|
Lock::Guard lock_guard(*_lock);
|
||||||
return _alloc.overhead(size);
|
return _alloc.overhead(size);
|
||||||
|
@ -191,13 +191,13 @@ class Genode::Synchronized_range_allocator : public Range_allocator
|
||||||
_alloc.free(addr, size);
|
_alloc.free(addr, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t consumed() override
|
size_t consumed() const override
|
||||||
{
|
{
|
||||||
Lock::Guard lock_guard(*_lock);
|
Lock::Guard lock_guard(*_lock);
|
||||||
return _alloc.consumed();
|
return _alloc.consumed();
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t overhead(size_t size) override
|
size_t overhead(size_t size) const override
|
||||||
{
|
{
|
||||||
Lock::Guard lock_guard(*_lock);
|
Lock::Guard lock_guard(*_lock);
|
||||||
return _alloc.overhead(size);
|
return _alloc.overhead(size);
|
||||||
|
@ -245,13 +245,13 @@ class Genode::Synchronized_range_allocator : public Range_allocator
|
||||||
_alloc.free(addr);
|
_alloc.free(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t avail() override
|
size_t avail() const override
|
||||||
{
|
{
|
||||||
Lock::Guard lock_guard(*_lock);
|
Lock::Guard lock_guard(*_lock);
|
||||||
return _alloc.avail();
|
return _alloc.avail();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool valid_addr(addr_t addr) override
|
bool valid_addr(addr_t addr) const override
|
||||||
{
|
{
|
||||||
Lock::Guard lock_guard(*_lock);
|
Lock::Guard lock_guard(*_lock);
|
||||||
return _alloc.valid_addr(addr);
|
return _alloc.valid_addr(addr);
|
||||||
|
|
|
@ -358,14 +358,14 @@ bool Allocator_avl_base::any_block_addr(addr_t *out_addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
size_t Allocator_avl_base::avail()
|
size_t Allocator_avl_base::avail() const
|
||||||
{
|
{
|
||||||
Block *b = static_cast<Block *>(_addr_tree.first());
|
Block *b = static_cast<Block *>(_addr_tree.first());
|
||||||
return b ? b->avail_in_subtree() : 0;
|
return b ? b->avail_in_subtree() : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Allocator_avl_base::valid_addr(addr_t addr)
|
bool Allocator_avl_base::valid_addr(addr_t addr) const
|
||||||
{
|
{
|
||||||
Block *b = _find_by_address(addr);
|
Block *b = _find_by_address(addr);
|
||||||
return b ? true : false;
|
return b ? true : false;
|
||||||
|
|
|
@ -285,7 +285,7 @@ void *Slab::first_used_elem()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
size_t Slab::consumed()
|
size_t Slab::consumed() const
|
||||||
{
|
{
|
||||||
/* count number of slab blocks */
|
/* count number of slab blocks */
|
||||||
unsigned sb_cnt = 0;
|
unsigned sb_cnt = 0;
|
||||||
|
|
|
@ -120,4 +120,7 @@ void Sliced_heap::free(void *addr, size_t size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
size_t Sliced_heap::overhead(size_t size) { return align_addr(size + sizeof(Block), 12) - size; }
|
size_t Sliced_heap::overhead(size_t size) const
|
||||||
|
{
|
||||||
|
return align_addr(size + sizeof(Block), 12) - size;
|
||||||
|
}
|
||||||
|
|
|
@ -159,15 +159,16 @@ class Genode::Core_mem_allocator : public Genode::Core_mem_translator
|
||||||
** Range allocator interface **
|
** Range allocator interface **
|
||||||
*******************************/
|
*******************************/
|
||||||
|
|
||||||
int add_range(addr_t base, size_t size) { return -1; }
|
int add_range(addr_t base, size_t size) override { return -1; }
|
||||||
int remove_range(addr_t base, size_t size) { return -1; }
|
int remove_range(addr_t base, size_t size) override { return -1; }
|
||||||
Alloc_return alloc_aligned(size_t size, void **out_addr,
|
Alloc_return alloc_aligned(size_t size, void **out_addr,
|
||||||
int align = 0, addr_t from = 0, addr_t to = ~0UL);
|
int align = 0, addr_t from = 0,
|
||||||
Alloc_return alloc_addr(size_t size, addr_t addr) {
|
addr_t to = ~0UL) override;
|
||||||
|
Alloc_return alloc_addr(size_t size, addr_t addr) override {
|
||||||
return Alloc_return::RANGE_CONFLICT; }
|
return Alloc_return::RANGE_CONFLICT; }
|
||||||
void free(void *addr) {}
|
void free(void *addr) override { }
|
||||||
size_t avail() { return _phys_alloc->avail(); }
|
size_t avail() const override { return _phys_alloc->avail(); }
|
||||||
bool valid_addr(addr_t addr) {
|
bool valid_addr(addr_t addr) const override {
|
||||||
return _virt_alloc->valid_addr(addr); }
|
return _virt_alloc->valid_addr(addr); }
|
||||||
|
|
||||||
|
|
||||||
|
@ -175,11 +176,11 @@ class Genode::Core_mem_allocator : public Genode::Core_mem_translator
|
||||||
** Allocator interface **
|
** Allocator interface **
|
||||||
*************************/
|
*************************/
|
||||||
|
|
||||||
bool alloc(size_t size, void **out_addr) {
|
bool alloc(size_t size, void **out_addr) override {
|
||||||
return alloc_aligned(size, out_addr).is_ok(); }
|
return alloc_aligned(size, out_addr).is_ok(); }
|
||||||
void free(void *addr, size_t) { free(addr); }
|
void free(void *addr, size_t) override { free(addr); }
|
||||||
size_t consumed() { return _phys_alloc->consumed(); }
|
size_t consumed() const override { return _phys_alloc->consumed(); }
|
||||||
size_t overhead(size_t size) {
|
size_t overhead(size_t size) const override {
|
||||||
return _phys_alloc->overhead(size); }
|
return _phys_alloc->overhead(size); }
|
||||||
bool need_size_for_free() const override {
|
bool need_size_for_free() const override {
|
||||||
return _phys_alloc->need_size_for_free(); }
|
return _phys_alloc->need_size_for_free(); }
|
||||||
|
@ -269,39 +270,40 @@ class Genode::Core_mem_allocator : public Genode::Core_mem_translator
|
||||||
** Range allocator interface **
|
** Range allocator interface **
|
||||||
*******************************/
|
*******************************/
|
||||||
|
|
||||||
int add_range(addr_t base, size_t size) { return -1; }
|
int add_range(addr_t base, size_t size) override { return -1; }
|
||||||
int remove_range(addr_t base, size_t size) { return -1; }
|
int remove_range(addr_t base, size_t size) override { return -1; }
|
||||||
Alloc_return alloc_addr(size_t size, addr_t addr) {
|
Alloc_return alloc_addr(size_t size, addr_t addr) override {
|
||||||
return Alloc_return::RANGE_CONFLICT; }
|
return Alloc_return::RANGE_CONFLICT; }
|
||||||
|
|
||||||
Alloc_return alloc_aligned(size_t size, void **out_addr, int align = 0, addr_t from = 0, addr_t to = ~0UL)
|
Alloc_return alloc_aligned(size_t size, void **out_addr, int align = 0,
|
||||||
|
addr_t from = 0, addr_t to = ~0UL) override
|
||||||
{
|
{
|
||||||
Lock::Guard lock_guard(_lock);
|
Lock::Guard lock_guard(_lock);
|
||||||
return _mem_alloc.alloc_aligned(size, out_addr, align, from, to);
|
return _mem_alloc.alloc_aligned(size, out_addr, align, from, to);
|
||||||
}
|
}
|
||||||
|
|
||||||
void free(void *addr)
|
void free(void *addr) override
|
||||||
{
|
{
|
||||||
Lock::Guard lock_guard(_lock);
|
Lock::Guard lock_guard(_lock);
|
||||||
return _mem_alloc.free(addr);
|
return _mem_alloc.free(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t avail() { return _phys_alloc.avail(); }
|
size_t avail() const override { return _phys_alloc.avail(); }
|
||||||
|
|
||||||
bool valid_addr(addr_t addr) { return _virt_alloc.valid_addr(addr); }
|
bool valid_addr(addr_t addr) const override { return _virt_alloc.valid_addr(addr); }
|
||||||
|
|
||||||
|
|
||||||
/*************************
|
/*************************
|
||||||
** Allocator interface **
|
** Allocator interface **
|
||||||
*************************/
|
*************************/
|
||||||
|
|
||||||
bool alloc(size_t size, void **out_addr) {
|
bool alloc(size_t size, void **out_addr) override {
|
||||||
return alloc_aligned(size, out_addr).is_ok(); }
|
return alloc_aligned(size, out_addr).is_ok(); }
|
||||||
|
|
||||||
void free(void *addr, size_t) { free(addr); }
|
void free(void *addr, size_t) override { free(addr); }
|
||||||
|
|
||||||
size_t consumed() { return _phys_alloc.consumed(); }
|
size_t consumed() const override { return _phys_alloc.consumed(); }
|
||||||
size_t overhead(size_t size) { return _phys_alloc.overhead(size); }
|
size_t overhead(size_t size) const override { return _phys_alloc.overhead(size); }
|
||||||
|
|
||||||
bool need_size_for_free() const override {
|
bool need_size_for_free() const override {
|
||||||
return _phys_alloc.need_size_for_free(); }
|
return _phys_alloc.need_size_for_free(); }
|
||||||
|
|
|
@ -45,12 +45,12 @@ struct Allocator : Genode::Allocator
|
||||||
Allocator() { }
|
Allocator() { }
|
||||||
virtual ~Allocator() { }
|
virtual ~Allocator() { }
|
||||||
|
|
||||||
Genode::size_t consumed() override
|
Genode::size_t consumed() const override
|
||||||
{
|
{
|
||||||
return heap.consumed();
|
return heap.consumed();
|
||||||
}
|
}
|
||||||
|
|
||||||
Genode::size_t overhead(Genode::size_t size) override
|
Genode::size_t overhead(Genode::size_t size) const override
|
||||||
{
|
{
|
||||||
return heap.overhead(size);
|
return heap.overhead(size);
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ class Genode::Slab_backend_alloc : public Genode::Allocator,
|
||||||
/**
|
/**
|
||||||
* Allocate
|
* Allocate
|
||||||
*/
|
*/
|
||||||
bool alloc(size_t size, void **out_addr)
|
bool alloc(size_t size, void **out_addr) override
|
||||||
{
|
{
|
||||||
bool done = _range.alloc(size, out_addr);
|
bool done = _range.alloc(size, out_addr);
|
||||||
|
|
||||||
|
@ -115,8 +115,8 @@ class Genode::Slab_backend_alloc : public Genode::Allocator,
|
||||||
return _range.alloc(size, out_addr);
|
return _range.alloc(size, out_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void free(void *addr, size_t /* size */) { }
|
void free(void *addr, size_t /* size */) override { }
|
||||||
size_t overhead(size_t size) { return 0; }
|
size_t overhead(size_t size) const override { return 0; }
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -102,7 +102,7 @@ class Genode::Slab_backend_alloc : public Genode::Allocator,
|
||||||
/**
|
/**
|
||||||
* Allocate
|
* Allocate
|
||||||
*/
|
*/
|
||||||
bool alloc(size_t size, void **out_addr)
|
bool alloc(size_t size, void **out_addr) override
|
||||||
{
|
{
|
||||||
bool done = _range.alloc(size, out_addr);
|
bool done = _range.alloc(size, out_addr);
|
||||||
|
|
||||||
|
@ -118,8 +118,8 @@ class Genode::Slab_backend_alloc : public Genode::Allocator,
|
||||||
return _range.alloc(size, out_addr);
|
return _range.alloc(size, out_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void free(void *addr, size_t /* size */) { }
|
void free(void *addr, size_t /* size */) override { }
|
||||||
size_t overhead(size_t size) { return 0; }
|
size_t overhead(size_t size) const override { return 0; }
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -103,7 +103,7 @@ class Lx::Slab_backend_alloc : public Genode::Allocator,
|
||||||
/**
|
/**
|
||||||
* Allocate
|
* Allocate
|
||||||
*/
|
*/
|
||||||
bool alloc(size_t size, void **out_addr)
|
bool alloc(size_t size, void **out_addr) override
|
||||||
{
|
{
|
||||||
bool done = _range.alloc(size, out_addr);
|
bool done = _range.alloc(size, out_addr);
|
||||||
|
|
||||||
|
@ -119,8 +119,8 @@ class Lx::Slab_backend_alloc : public Genode::Allocator,
|
||||||
return _range.alloc(size, out_addr);
|
return _range.alloc(size, out_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void free(void *addr, size_t /* size */) { }
|
void free(void *addr, size_t /* size */) override { }
|
||||||
size_t overhead(size_t size) { return 0; }
|
size_t overhead(size_t size) const override { return 0; }
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -151,8 +151,8 @@ namespace Allocator {
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void free(void *addr, size_t size) { _range.free(addr, size); }
|
void free(void *addr, size_t size) override { _range.free(addr, size); }
|
||||||
size_t overhead(size_t size) { return 0; }
|
size_t overhead(size_t size) const override { return 0; }
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -70,7 +70,7 @@ class Malloc : public Genode::Allocator
|
||||||
Genode::Slab_alloc *_allocator[NUM_SLABS]; /* slab allocators */
|
Genode::Slab_alloc *_allocator[NUM_SLABS]; /* slab allocators */
|
||||||
Genode::Lock _lock;
|
Genode::Lock _lock;
|
||||||
|
|
||||||
unsigned long _slab_log2(unsigned long size)
|
unsigned long _slab_log2(unsigned long size) const
|
||||||
{
|
{
|
||||||
unsigned msb = Genode::log2(size);
|
unsigned msb = Genode::log2(size);
|
||||||
/* size is greater than msb */
|
/* size is greater than msb */
|
||||||
|
@ -100,7 +100,7 @@ class Malloc : public Genode::Allocator
|
||||||
* Allocator interface
|
* Allocator interface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool alloc(size_t size, void **out_addr)
|
bool alloc(size_t size, void **out_addr) override
|
||||||
{
|
{
|
||||||
Genode::Lock::Guard lock_guard(_lock);
|
Genode::Lock::Guard lock_guard(_lock);
|
||||||
|
|
||||||
|
@ -132,7 +132,7 @@ class Malloc : public Genode::Allocator
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void free(void *ptr, size_t /* size */)
|
void free(void *ptr, size_t /* size */) override
|
||||||
{
|
{
|
||||||
Genode::Lock::Guard lock_guard(_lock);
|
Genode::Lock::Guard lock_guard(_lock);
|
||||||
|
|
||||||
|
@ -147,7 +147,7 @@ class Malloc : public Genode::Allocator
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t overhead(size_t size)
|
size_t overhead(size_t size) const override
|
||||||
{
|
{
|
||||||
size += sizeof(Block_header);
|
size += sizeof(Block_header);
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ class Genode::Packet_allocator : public Genode::Range_allocator
|
||||||
** Range-allocator interface **
|
** Range-allocator interface **
|
||||||
*******************************/
|
*******************************/
|
||||||
|
|
||||||
int add_range(addr_t base, size_t size)
|
int add_range(addr_t base, size_t size) override
|
||||||
{
|
{
|
||||||
if (_base || _array) return -1;
|
if (_base || _array) return -1;
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ class Genode::Packet_allocator : public Genode::Range_allocator
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int remove_range(addr_t base, size_t size)
|
int remove_range(addr_t base, size_t size) override
|
||||||
{
|
{
|
||||||
if (_base != base) return -1;
|
if (_base != base) return -1;
|
||||||
|
|
||||||
|
@ -89,13 +89,13 @@ class Genode::Packet_allocator : public Genode::Range_allocator
|
||||||
}
|
}
|
||||||
|
|
||||||
Alloc_return alloc_aligned(size_t size, void **out_addr, int, addr_t,
|
Alloc_return alloc_aligned(size_t size, void **out_addr, int, addr_t,
|
||||||
addr_t)
|
addr_t) override
|
||||||
{
|
{
|
||||||
return alloc(size, out_addr) ? Alloc_return::OK
|
return alloc(size, out_addr) ? Alloc_return::OK
|
||||||
: Alloc_return::RANGE_CONFLICT;
|
: Alloc_return::RANGE_CONFLICT;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool alloc(size_t size, void **out_addr)
|
bool alloc(size_t size, void **out_addr) override
|
||||||
{
|
{
|
||||||
addr_t const cnt = (size % _block_size) ? size / _block_size + 1
|
addr_t const cnt = (size % _block_size) ? size / _block_size + 1
|
||||||
: size / _block_size;
|
: size / _block_size;
|
||||||
|
@ -124,7 +124,7 @@ class Genode::Packet_allocator : public Genode::Range_allocator
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void free(void *addr, size_t size)
|
void free(void *addr, size_t size) override
|
||||||
{
|
{
|
||||||
addr_t i = (((addr_t)addr) - _base) / _block_size;
|
addr_t i = (((addr_t)addr) - _base) / _block_size;
|
||||||
size_t cnt = (size % _block_size) ? size / _block_size + 1
|
size_t cnt = (size % _block_size) ? size / _block_size + 1
|
||||||
|
@ -139,11 +139,11 @@ class Genode::Packet_allocator : public Genode::Range_allocator
|
||||||
*************/
|
*************/
|
||||||
|
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
void free(void *addr) { }
|
void free(void *addr) override { }
|
||||||
size_t overhead(size_t) { return 0;}
|
size_t overhead(size_t) const override { return 0;}
|
||||||
size_t avail() { return 0; }
|
size_t avail() const override { return 0; }
|
||||||
bool valid_addr(addr_t) { return 0; }
|
bool valid_addr(addr_t) const override { return 0; }
|
||||||
Alloc_return alloc_addr(size_t, addr_t) {
|
Alloc_return alloc_addr(size_t, addr_t) override {
|
||||||
return Alloc_return(Alloc_return::OUT_OF_METADATA); }
|
return Alloc_return(Alloc_return::OUT_OF_METADATA); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -152,9 +152,9 @@ class Backing_store_allocator : public Allocator
|
||||||
destroy(env()->heap(), b);
|
destroy(env()->heap(), b);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t consumed() { return _consumed; }
|
size_t consumed() const { return _consumed; }
|
||||||
|
|
||||||
size_t overhead(size_t size) { return 0; }
|
size_t overhead(size_t size) const { return 0; }
|
||||||
|
|
||||||
bool need_size_for_free() const override { return false; }
|
bool need_size_for_free() const override { return false; }
|
||||||
};
|
};
|
||||||
|
|
|
@ -42,8 +42,8 @@ namespace Genode {
|
||||||
_wrapped.free(addr, size);
|
_wrapped.free(addr, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t overhead(size_t size) override { return _wrapped.overhead(size); }
|
size_t overhead(size_t size) const override { return _wrapped.overhead(size); }
|
||||||
bool need_size_for_free() const override { return _wrapped.need_size_for_free(); }
|
bool need_size_for_free() const override { return _wrapped.need_size_for_free(); }
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue