2014-03-30 21:09:49 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
2014-06-07 17:32:15 +08:00
|
|
|
class SPURSManagerEventFlag
|
|
|
|
|
{
|
|
|
|
|
public:
|
2014-08-24 00:40:04 +04:00
|
|
|
SPURSManagerEventFlag(u32 flagClearMode, u32 flagDirection);
|
2014-06-07 17:32:15 +08:00
|
|
|
|
2014-08-31 16:12:09 -04:00
|
|
|
u32 _getDirection() const
|
2014-06-07 17:32:15 +08:00
|
|
|
{
|
|
|
|
|
return this->flagDirection;
|
|
|
|
|
}
|
|
|
|
|
|
2014-08-31 16:12:09 -04:00
|
|
|
u32 _getClearMode() const
|
2014-06-07 17:32:15 +08:00
|
|
|
{
|
|
|
|
|
return this->flagClearMode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
be_t<u32> flagClearMode;
|
|
|
|
|
be_t<u32> flagDirection;
|
|
|
|
|
};
|
|
|
|
|
|
2014-06-08 17:10:31 +08:00
|
|
|
class SPURSManagerTasksetAttribute
|
|
|
|
|
{
|
|
|
|
|
public:
|
2014-08-31 19:01:48 +04:00
|
|
|
SPURSManagerTasksetAttribute(u64 args, vm::ptr<const u8> priority, u32 maxContention);
|
2014-06-08 17:10:31 +08:00
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
be_t<u64> args;
|
|
|
|
|
be_t<u32> maxContention;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class SPURSManagerTaskset
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
SPURSManagerTaskset(u32 address, SPURSManagerTasksetAttribute *tattr);
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
u32 address;
|
|
|
|
|
SPURSManagerTasksetAttribute *tattr;
|
|
|
|
|
};
|
|
|
|
|
|
2014-03-30 21:09:49 +01:00
|
|
|
// Main SPURS manager class.
|
|
|
|
|
class SPURSManager
|
|
|
|
|
{
|
|
|
|
|
public:
|
2014-09-15 22:17:30 +04:00
|
|
|
SPURSManager();
|
2014-06-08 17:10:31 +08:00
|
|
|
|
2014-03-30 21:09:49 +01:00
|
|
|
void Finalize();
|
2014-08-31 19:01:48 +04:00
|
|
|
void AttachLv2EventQueue(u32 queue, vm::ptr<u8> port, int isDynamic);
|
2014-06-08 17:10:31 +08:00
|
|
|
void DetachLv2EventQueue(u8 port);
|
2014-05-31 10:16:11 +08:00
|
|
|
};
|