Optimised failed test
This commit is contained in:
@@ -14,20 +14,44 @@
|
||||
namespace MARTe {
|
||||
|
||||
class MemoryMapBroker;
|
||||
class DebugService;
|
||||
|
||||
struct SignalAlias {
|
||||
StreamString name;
|
||||
uint32 signalIndex;
|
||||
/**
|
||||
* @brief Interface for instrumented brokers to allow service adoption.
|
||||
*/
|
||||
class DebugBrokerI {
|
||||
public:
|
||||
virtual ~DebugBrokerI() {}
|
||||
virtual void SetService(DebugService* service) = 0;
|
||||
virtual bool IsLinked() const = 0;
|
||||
};
|
||||
|
||||
struct SignalExecuteInfo {
|
||||
void* memoryAddress;
|
||||
void* forcedValue;
|
||||
uint32 internalID;
|
||||
uint32 size;
|
||||
};
|
||||
|
||||
struct BrokerActiveSet {
|
||||
SignalExecuteInfo* forcedSignals;
|
||||
uint32 numForced;
|
||||
SignalExecuteInfo* tracedSignals;
|
||||
uint32 numTraced;
|
||||
};
|
||||
|
||||
struct BrokerInfo {
|
||||
DebugSignalInfo** signalPointers;
|
||||
uint32 numSignals;
|
||||
MemoryMapBroker* broker;
|
||||
BrokerActiveSet sets[2];
|
||||
volatile uint32 currentSetIdx;
|
||||
volatile bool* anyActiveFlag;
|
||||
Vector<uint32>* activeIndices;
|
||||
Vector<uint32>* activeSizes;
|
||||
FastPollingMutexSem* activeMutex;
|
||||
};
|
||||
|
||||
struct SignalAlias {
|
||||
StreamString name;
|
||||
uint32 signalIndex;
|
||||
};
|
||||
|
||||
class DebugService : public ReferenceContainer, public MessageI, public EmbeddedServiceMethodBinderI {
|
||||
@@ -41,12 +65,23 @@ public:
|
||||
virtual bool Initialise(StructuredDataI & data);
|
||||
|
||||
DebugSignalInfo* RegisterSignal(void* memoryAddress, TypeDescriptor type, const char8* name);
|
||||
|
||||
static inline void CopySignal(void* dst, const void* src, const uint32 size) {
|
||||
if (size == 4u) *static_cast<uint32*>(dst) = *static_cast<const uint32*>(src);
|
||||
else if (size == 8u) *static_cast<uint64*>(dst) = *static_cast<const uint64*>(src);
|
||||
else if (size == 1u) *static_cast<uint8*>(dst) = *static_cast<const uint8*>(src);
|
||||
else if (size == 2u) *static_cast<uint16*>(dst) = *static_cast<const uint16*>(src);
|
||||
else MemoryOperationsHelper::Copy(dst, src, size);
|
||||
}
|
||||
|
||||
void ProcessSignal(DebugSignalInfo* signalInfo, uint32 size, uint64 timestamp);
|
||||
|
||||
void RegisterBroker(DebugSignalInfo** signalPointers, uint32 numSignals, MemoryMapBroker* broker, volatile bool* anyActiveFlag, Vector<uint32>* activeIndices, Vector<uint32>* activeSizes, FastPollingMutexSem* activeMutex);
|
||||
void RegisterBroker(DebugSignalInfo** signalPointers, uint32 numSignals, MemoryMapBroker* broker, volatile bool* anyActiveFlag);
|
||||
|
||||
virtual ErrorManagement::ErrorType Execute(ExecutionInfo & info);
|
||||
|
||||
static DebugService* Instance();
|
||||
|
||||
bool IsPaused() const { return isPaused; }
|
||||
void SetPaused(bool paused) { isPaused = paused; }
|
||||
|
||||
@@ -56,12 +91,32 @@ public:
|
||||
uint32 UnforceSignal(const char8* name);
|
||||
uint32 TraceSignal(const char8* name, bool enable, uint32 decimation = 1);
|
||||
void Discover(BasicTCPSocket *client);
|
||||
void ListNodes(const char8* path, BasicTCPSocket *client);
|
||||
void InfoNode(const char8* path, BasicTCPSocket *client);
|
||||
|
||||
void UpdateBrokersActiveStatus();
|
||||
|
||||
BrokerInfo* GetBrokerInfo(uint32 index) {
|
||||
if (index < numberOfBrokers) return &brokers[index];
|
||||
return NULL_PTR(BrokerInfo*);
|
||||
}
|
||||
|
||||
// PERFORMANCE-CRITICAL MEMBERS
|
||||
static const uint32 MAX_BROKERS = 256;
|
||||
BrokerInfo brokers[MAX_BROKERS];
|
||||
uint32 numberOfBrokers;
|
||||
TraceRingBuffer traceBuffer;
|
||||
|
||||
static const uint32 MAX_SIGNALS = 512;
|
||||
DebugSignalInfo signals[MAX_SIGNALS];
|
||||
uint32 numberOfSignals;
|
||||
|
||||
static const uint32 MAX_ALIASES = 1024;
|
||||
SignalAlias aliases[MAX_ALIASES];
|
||||
uint32 numberOfAliases;
|
||||
|
||||
private:
|
||||
void HandleCommand(StreamString cmd, BasicTCPSocket *client);
|
||||
void UpdateBrokersActiveStatus();
|
||||
|
||||
uint32 ExportTree(ReferenceContainer *container, StreamString &json);
|
||||
void PatchRegistry();
|
||||
|
||||
@@ -100,28 +155,15 @@ private:
|
||||
ThreadIdentifier serverThreadId;
|
||||
ThreadIdentifier streamerThreadId;
|
||||
|
||||
static const uint32 MAX_SIGNALS = 4096;
|
||||
DebugSignalInfo signals[MAX_SIGNALS];
|
||||
uint32 numberOfSignals;
|
||||
|
||||
static const uint32 MAX_ALIASES = 8192;
|
||||
SignalAlias aliases[MAX_ALIASES];
|
||||
uint32 numberOfAliases;
|
||||
|
||||
static const uint32 MAX_BROKERS = 1024;
|
||||
BrokerInfo brokers[MAX_BROKERS];
|
||||
uint32 numberOfBrokers;
|
||||
|
||||
FastPollingMutexSem mutex;
|
||||
TraceRingBuffer traceBuffer;
|
||||
|
||||
static const uint32 MAX_CLIENTS = 16;
|
||||
BasicTCPSocket* activeClients[MAX_CLIENTS];
|
||||
FastPollingMutexSem clientsMutex;
|
||||
|
||||
static DebugService* instance;
|
||||
};
|
||||
|
||||
extern DebugService* GlobalDebugServiceInstance;
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user