Added basic UI; misc memory fixes

This commit is contained in:
Hamish Milne 2020-01-03 17:19:59 +00:00 committed by zhupengfei
parent 558e710e17
commit 26e90a99cd
13 changed files with 90 additions and 36 deletions

View file

@ -61,8 +61,7 @@ private:
friend class boost::serialization::access;
template <class Archive>
void serialize(Archive& ar, const unsigned int file_version) {
auto o_config_mem = boost::serialization::binary_object(&config_mem, sizeof(config_mem));
ar& o_config_mem;
ar& boost::serialization::make_binary_object(&config_mem, sizeof(config_mem));
}
};

View file

@ -193,19 +193,19 @@ ResultCode TranslateCommandBuffer(Kernel::KernelSystem& kernel, Memory::MemorySy
// TODO(Subv): Perform permission checks.
// Reserve a page of memory before the mapped buffer
auto reserve_buffer = std::make_unique<u8[]>(Memory::PAGE_SIZE);
auto reserve_buffer = std::vector<u8>(Memory::PAGE_SIZE);
dst_process->vm_manager.MapBackingMemoryToBase(
Memory::IPC_MAPPING_VADDR, Memory::IPC_MAPPING_SIZE, reserve_buffer.get(),
Memory::IPC_MAPPING_VADDR, Memory::IPC_MAPPING_SIZE, reserve_buffer.data(),
Memory::PAGE_SIZE, Kernel::MemoryState::Reserved);
auto buffer = std::make_unique<u8[]>(num_pages * Memory::PAGE_SIZE);
memory.ReadBlock(*src_process, source_address, buffer.get() + page_offset, size);
auto buffer = std::vector<u8>(num_pages * Memory::PAGE_SIZE);
memory.ReadBlock(*src_process, source_address, buffer.data() + page_offset, size);
// Map the page(s) into the target process' address space.
target_address =
dst_process->vm_manager
.MapBackingMemoryToBase(Memory::IPC_MAPPING_VADDR, Memory::IPC_MAPPING_SIZE,
buffer.get(), num_pages * Memory::PAGE_SIZE,
buffer.data(), num_pages * Memory::PAGE_SIZE,
Kernel::MemoryState::Shared)
.Unwrap();
@ -213,7 +213,7 @@ ResultCode TranslateCommandBuffer(Kernel::KernelSystem& kernel, Memory::MemorySy
// Reserve a page of memory after the mapped buffer
dst_process->vm_manager.MapBackingMemoryToBase(
Memory::IPC_MAPPING_VADDR, Memory::IPC_MAPPING_SIZE, reserve_buffer.get(),
Memory::IPC_MAPPING_VADDR, Memory::IPC_MAPPING_SIZE, reserve_buffer.data(),
Memory::PAGE_SIZE, Kernel::MemoryState::Reserved);
mapped_buffer_context.push_back({permissions, size, source_address,

View file

@ -6,7 +6,7 @@
#include <memory>
#include <vector>
#include <boost/serialization/unique_ptr.hpp>
#include <boost/serialization/vector.hpp>
#include "common/common_types.h"
#include "core/hle/ipc.h"
#include "core/hle/kernel/thread.h"
@ -25,8 +25,8 @@ struct MappedBufferContext {
VAddr source_address;
VAddr target_address;
std::unique_ptr<u8[]> buffer;
std::unique_ptr<u8[]> reserve_buffer;
std::vector<u8> buffer;
std::vector<u8> reserve_buffer;
private:
template <class Archive>
@ -35,10 +35,8 @@ private:
ar& size;
ar& source_address;
ar& target_address;
// TODO: Check whether we need these. If we do, add a field for the size and/or change to a
// 'vector'
// ar & buffer;
// ar & reserve_buffer;
ar& buffer;
ar& reserve_buffer;
}
friend class boost::serialization::access;
};

View file

@ -29,7 +29,7 @@ template <class Archive>
void Process::serialize(Archive& ar, const unsigned int file_version) {
ar& boost::serialization::base_object<Object>(*this);
ar& handle_table;
ar& codeset;
ar& codeset; // TODO: Replace with apploader reference
ar& resource_limit;
ar& svc_access_mask;
ar& handle_table_size;

View file

@ -133,7 +133,7 @@ private:
template <class Archive>
void serialize(Archive& ar, const unsigned int file_version) {
ar& boost::serialization::base_object<Object>(*this);
// TODO: memory reference
ar& memory;
ar& segments;
ar& entrypoint;
ar& name;