mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-07 19:34:56 +00:00
Make Deallocator::need_size_for_free() pure virtual
This commit is contained in:
parent
32f6d75cdb
commit
3234e4f775
@ -50,18 +50,19 @@ namespace Genode
|
||||
_alloc->free(addr, size); }
|
||||
|
||||
size_t consumed() {
|
||||
PDBG("Unexprected call");
|
||||
PDBG("Unexpected call");
|
||||
while (1) ;
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t overhead(size_t size) {
|
||||
PDBG("Unexprected call");
|
||||
PDBG("Unexpected call");
|
||||
while (1) ;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool need_size_for_free() const { return true; }
|
||||
bool need_size_for_free() const override {
|
||||
return _alloc->need_size_for_free(); }
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -65,6 +65,8 @@ namespace Genode {
|
||||
size_t avail() { return ~0; }
|
||||
bool valid_addr(addr_t) { return true; }
|
||||
size_t overhead(size_t) { return 0; }
|
||||
|
||||
bool need_size_for_free() const override { return true; }
|
||||
};
|
||||
|
||||
Pseudo_ram_allocator _ram_alloc;
|
||||
|
@ -39,7 +39,7 @@ namespace Genode {
|
||||
* See the documentation of 'operator delete(void *, Allocator *)'
|
||||
* below for more details.
|
||||
*/
|
||||
virtual bool need_size_for_free() const { return true; }
|
||||
virtual bool need_size_for_free() const = 0;
|
||||
};
|
||||
|
||||
|
||||
|
@ -243,7 +243,7 @@ namespace Genode {
|
||||
*/
|
||||
size_t overhead(size_t) { return sizeof(Block) + sizeof(umword_t); }
|
||||
|
||||
bool need_size_for_free() const { return false; }
|
||||
bool need_size_for_free() const override { return false; }
|
||||
};
|
||||
|
||||
|
||||
|
@ -103,6 +103,9 @@ namespace Genode {
|
||||
* Return meta-data overhead per block
|
||||
*/
|
||||
size_t overhead(size_t size) { return _allocator->overhead(size); }
|
||||
|
||||
bool need_size_for_free() const override {
|
||||
return _allocator->need_size_for_free(); }
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -153,7 +153,7 @@ namespace Genode {
|
||||
void free(void *, size_t);
|
||||
size_t consumed() { return _quota_used; }
|
||||
size_t overhead(size_t size) { return _alloc.overhead(size); }
|
||||
bool need_size_for_free() const { return false; }
|
||||
bool need_size_for_free() const override { return false; }
|
||||
};
|
||||
|
||||
|
||||
@ -193,7 +193,7 @@ namespace Genode {
|
||||
void free(void *, size_t);
|
||||
size_t consumed() { return _consumed; }
|
||||
size_t overhead(size_t size);
|
||||
bool need_size_for_free() const { return false; }
|
||||
bool need_size_for_free() const override { return false; }
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -249,7 +249,7 @@ namespace Genode {
|
||||
void free(void *addr, size_t) { free(addr); }
|
||||
size_t consumed();
|
||||
size_t overhead(size_t) { return _block_size/_num_elem; }
|
||||
bool need_size_for_free() const { return false; }
|
||||
bool need_size_for_free() const override { return false; }
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -92,6 +92,12 @@ namespace Genode {
|
||||
Lock::Guard lock_guard(*_lock);
|
||||
return _alloc.overhead(size);
|
||||
}
|
||||
|
||||
bool need_size_for_free() const override
|
||||
{
|
||||
Lock::Guard lock_guard(*_lock);
|
||||
return _alloc.need_size_for_free();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@ -191,6 +197,12 @@ namespace Genode {
|
||||
return _alloc.overhead(size);
|
||||
}
|
||||
|
||||
bool need_size_for_free() const override
|
||||
{
|
||||
Lock::Guard lock_guard(*_lock);
|
||||
return _alloc.need_size_for_free();
|
||||
}
|
||||
|
||||
|
||||
/*******************************
|
||||
** Range-allocator interface **
|
||||
|
@ -88,6 +88,9 @@ namespace Genode {
|
||||
void free(void *addr, size_t size) { _alloc.free(addr, size); }
|
||||
size_t consumed() { return _phys_alloc->consumed(); }
|
||||
size_t overhead(size_t size) { return _phys_alloc->overhead(size); }
|
||||
|
||||
bool need_size_for_free() const override {
|
||||
return _phys_alloc->need_size_for_free(); }
|
||||
};
|
||||
|
||||
|
||||
@ -166,6 +169,9 @@ namespace Genode {
|
||||
|
||||
size_t consumed() { return _phys_alloc.consumed(); }
|
||||
size_t overhead(size_t size) { return _phys_alloc.overhead(size); }
|
||||
|
||||
bool need_size_for_free() const override {
|
||||
return _phys_alloc.need_size_for_free(); }
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -115,6 +115,7 @@ class Genode::Slab_backend_alloc : public Genode::Allocator,
|
||||
|
||||
void free(void *addr, size_t /* size */) { }
|
||||
size_t overhead(size_t size) { return 0; }
|
||||
bool need_size_for_free() const override { return false; }
|
||||
|
||||
/**
|
||||
* Return phys address for given virtual addr.
|
||||
|
@ -117,6 +117,7 @@ class Genode::Slab_backend_alloc : public Genode::Allocator,
|
||||
|
||||
void free(void *addr, size_t /* size */) { }
|
||||
size_t overhead(size_t size) { return 0; }
|
||||
bool need_size_for_free() const override { return false; }
|
||||
|
||||
/**
|
||||
* Return phys address for given virtual addr.
|
||||
|
@ -150,6 +150,8 @@ class Malloc : public Genode::Allocator
|
||||
|
||||
return _allocator[_slab_log2(size) - SLAB_START]->overhead(size);
|
||||
}
|
||||
|
||||
bool need_size_for_free() const override { return false; }
|
||||
};
|
||||
|
||||
|
||||
|
@ -112,6 +112,8 @@ namespace Nic {
|
||||
|
||||
void free(void *addr, Genode::size_t) { free(addr); }
|
||||
|
||||
bool need_size_for_free() const override { return false; }
|
||||
|
||||
|
||||
/*********************
|
||||
** Dummy functions **
|
||||
|
@ -155,6 +155,8 @@ class Backing_store_allocator : public Allocator
|
||||
size_t consumed() { return _consumed; }
|
||||
|
||||
size_t overhead(size_t size) { return 0; }
|
||||
|
||||
bool need_size_for_free() const override { return false; }
|
||||
};
|
||||
|
||||
|
||||
|
@ -42,7 +42,8 @@ namespace Genode {
|
||||
_wrapped.free(addr, size);
|
||||
}
|
||||
|
||||
size_t overhead(size_t size) { return 0; }
|
||||
size_t overhead(size_t size) override { return _wrapped.overhead(size); }
|
||||
bool need_size_for_free() const override { return _wrapped.need_size_for_free(); }
|
||||
};
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user