mirror of
https://github.com/mmueller41/mxtasking.git
synced 2026-01-21 12:42:57 +01:00
Revert "Use Genode functions to allocate memory."
This reverts commit 8fba63d09a.
This commit is contained in:
@@ -3,12 +3,10 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <base/heap.h>
|
#include <base/heap.h>
|
||||||
#include <mx/system/environment.h>
|
|
||||||
|
|
||||||
namespace mx::memory {
|
namespace mx::memory {
|
||||||
/**
|
/**
|
||||||
* The global heap represents the heap, provided by the OS.
|
* The global heap represents the heap, provided by the OS.
|
||||||
* TODO: Use Genode's interface here.
|
|
||||||
*/
|
*/
|
||||||
class GlobalHeap
|
class GlobalHeap
|
||||||
{
|
{
|
||||||
@@ -36,8 +34,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
static void *allocate(const std::uint8_t numa_node_id, const std::size_t size)
|
static void *allocate(const std::uint8_t numa_node_id, const std::size_t size)
|
||||||
{
|
{
|
||||||
/* TODO: Use component's heap */
|
return std::malloc(size);
|
||||||
return GlobalHeap::get_instance().heap().alloc(size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -49,8 +46,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
static void *allocate_cache_line_aligned(const std::size_t size)
|
static void *allocate_cache_line_aligned(const std::size_t size)
|
||||||
{
|
{
|
||||||
/* TODO: Use component's heap, as std::aligned_alloc might not be thread-safe */
|
void *mem_chunk;
|
||||||
return GlobalHeap::get_instance().heap().alloc(alignment_helper::next_multiple(size, 64UL));
|
posix_memalign(&mem_chunk, 64U, alignment_helper::next_multiple(size, 64UL));
|
||||||
|
return mem_chunk;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -59,8 +57,8 @@ public:
|
|||||||
* @param memory Pointer to memory.
|
* @param memory Pointer to memory.
|
||||||
* @param size Size of the allocated object.
|
* @param size Size of the allocated object.
|
||||||
*/
|
*/
|
||||||
static void free(void *memory, const std::size_t size) { /* TODO: Free via Genode component's heap */
|
static void free(void *memory, const std::size_t size) {
|
||||||
GlobalHeap::heap().free(memory, size);
|
std::free(memory);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} // namespace mx::memory
|
} // namespace mx::memory
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include "global_heap.h"
|
|
||||||
|
|
||||||
namespace mx::memory {
|
namespace mx::memory {
|
||||||
/**
|
/**
|
||||||
@@ -42,12 +41,12 @@ public:
|
|||||||
/**
|
/**
|
||||||
* @return Allocated memory using systems malloc (but aligned).
|
* @return Allocated memory using systems malloc (but aligned).
|
||||||
*/
|
*/
|
||||||
[[nodiscard]] void *allocate(const std::uint16_t /*core_id*/) override { return GlobalHeap::heap().alloc(S); }
|
[[nodiscard]] void *allocate(const std::uint16_t /*core_id*/) override { return std::malloc(S); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Frees the given memory using systems free.
|
* Frees the given memory using systems free.
|
||||||
* @param address Memory to free.
|
* @param address Memory to free.
|
||||||
*/
|
*/
|
||||||
void free(const std::uint16_t /*core_id*/, void *address) noexcept override { GlobalHeap::heap().free(address, S); }
|
void free(const std::uint16_t /*core_id*/, void *address) noexcept override { std::free(address); }
|
||||||
};
|
};
|
||||||
} // namespace mx::memory
|
} // namespace mx::memory
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "scheduler.h"
|
#include "scheduler.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include <iostream> /* TODO: Find Genode replacement, IO streams crash on Genode */
|
#include <iostream>
|
||||||
#include <memory> /* TODO: Deos this work with Genode? */
|
#include <memory>
|
||||||
#include <mx/memory/dynamic_size_allocator.h>
|
#include <mx/memory/dynamic_size_allocator.h>
|
||||||
#include <mx/memory/fixed_size_allocator.h>
|
#include <mx/memory/fixed_size_allocator.h>
|
||||||
#include <mx/memory/task_allocator_interface.h>
|
#include <mx/memory/task_allocator_interface.h>
|
||||||
@@ -80,7 +80,7 @@ public:
|
|||||||
// Create a new resource builder.
|
// Create a new resource builder.
|
||||||
if (_resource_builder == nullptr || need_new_scheduler)
|
if (_resource_builder == nullptr || need_new_scheduler)
|
||||||
{
|
{
|
||||||
_resource_builder = std::make_unique<resource::Builder>(*_scheduler, *_resource_allocator);
|
_resource_builder = std::make_unique<resource::Builder> (new resource::Builder(*_scheduler, *_resource_allocator));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user