Play-/Source/iop/Iop_Sysmem.h

58 lines
1.3 KiB
C
Raw Permalink Normal View History

2014-11-08 21:53:56 -05:00
#pragma once
#include "Iop_Module.h"
#include "Iop_Stdio.h"
2014-11-08 21:53:56 -05:00
#include "Iop_Ioman.h"
#include "Iop_BiosStructs.h"
#include "../OsStructManager.h"
#include "../SifModule.h"
namespace Iop
{
class CSifMan;
class CSysmem : public CModule, public CSifModule
{
public:
typedef COsStructManager<MEMORYBLOCK> BlockListType;
2018-04-30 21:01:23 +01:00
CSysmem(uint8*, uint32, uint32, BlockListType&, CStdio&, CIoman&, CSifMan&);
virtual ~CSysmem();
2018-04-30 21:01:23 +01:00
std::string GetId() const override;
std::string GetFunctionName(unsigned int) const override;
void Invoke(CMIPS&, unsigned int) override;
bool Invoke(uint32, uint32*, uint32, uint32*, uint32, uint8*) override;
2018-04-30 21:01:23 +01:00
uint32 AllocateMemory(uint32, uint32, uint32);
uint32 FreeMemory(uint32);
private:
enum MODULE_ID
{
MODULE_ID = 0x80000003
};
2018-04-30 21:01:23 +01:00
uint32 SifAllocate(uint32);
uint32 SifAllocateSystemMemory(uint32, uint32, uint32);
uint32 SifLoadMemory(uint32, const char*);
uint32 SifFreeMemory(uint32);
uint32 QueryMaxFreeMemSize();
2019-01-15 21:31:17 +00:00
uint32 QueryTotalFreeMemSize();
2018-04-30 21:01:23 +01:00
2021-08-30 14:03:19 -04:00
void DumpAllocList();
2018-04-30 21:01:23 +01:00
uint8* m_iopRam = nullptr;
BlockListType& m_blocks;
uint32 m_memoryBegin;
uint32 m_memoryEnd;
uint32 m_memorySize;
uint32 m_headBlockId;
CStdio& m_stdio;
CIoman& m_ioman;
};
typedef std::shared_ptr<CSysmem> SysmemPtr;
}