kernel: Move CodeSet structure to its own source files

Given this is utilized by the loaders, this allows avoiding inclusion of
the kernel process definitions where avoidable.

This also keeps the loading format for all executable data separate from
the kernel objects.
This commit is contained in:
Lioncash 2019-03-20 12:40:09 -04:00
parent 156e2feaf2
commit 70ce9f5767
8 changed files with 110 additions and 44 deletions

View file

@ -7,7 +7,6 @@
#include <array>
#include <bitset>
#include <cstddef>
#include <memory>
#include <string>
#include <vector>
#include <boost/container/static_vector.hpp>
@ -33,6 +32,8 @@ class KernelCore;
class ResourceLimit;
class Thread;
struct CodeSet;
struct AddressMapping {
// Address and size must be page-aligned
VAddr address;
@ -65,46 +66,6 @@ enum class ProcessStatus {
DebugBreak,
};
struct CodeSet final {
struct Segment {
std::size_t offset = 0;
VAddr addr = 0;
u32 size = 0;
};
explicit CodeSet();
~CodeSet();
Segment& CodeSegment() {
return segments[0];
}
const Segment& CodeSegment() const {
return segments[0];
}
Segment& RODataSegment() {
return segments[1];
}
const Segment& RODataSegment() const {
return segments[1];
}
Segment& DataSegment() {
return segments[2];
}
const Segment& DataSegment() const {
return segments[2];
}
std::shared_ptr<std::vector<u8>> memory;
std::array<Segment, 3> segments;
VAddr entrypoint = 0;
};
class Process final : public WaitObject {
public:
enum : u64 {