Skip to content

Commit 25c7093

Browse files
committed
Modify Request Manager Duplication Checks
Signed-off-by: Kartik Nema <kartnema@qti.qualcomm.com>
1 parent a69a01c commit 25c7093

4 files changed

Lines changed: 39 additions & 5 deletions

File tree

modula/Common/Include/Request.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
class Request : public Message {
2424
private:
2525
Timer* mTimer; //!< Timer associated with the request.
26-
DLManager* mResourceList;
26+
DLManager* mResourceList; //!< DLL to store the Resources to be configured.
27+
uint64_t mSource;
2728

2829
public:
2930
Request();
@@ -32,10 +33,12 @@ class Request : public Message {
3233
int32_t getResourcesCount();
3334
Timer* getTimer();
3435
DLManager* getResDlMgr();
36+
uint64_t getSource();
3537

3638
void addResource(ResIterable* resIterable);
3739
void setTimer(Timer* timer);
3840
void unsetTimer();
41+
void setSource(uint64_t source);
3942
void clearResources();
4043

4144
ErrCode deserialize(char* buf);

modula/Common/Request.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
Request::Request() {
77
this->mTimer = nullptr;
88
this->mResourceList = nullptr;
9+
this->mSource = 0;
910
}
1011

1112
int32_t Request::getResourcesCount() {
@@ -24,6 +25,10 @@ DLManager* Request::getResDlMgr() {
2425
return this->mResourceList;
2526
}
2627

28+
uint64_t Request::getSource() {
29+
return this->mSource;
30+
}
31+
2732
void Request::addResource(ResIterable* resIterable) {
2833
if(this->mResourceList == nullptr) {
2934
try {
@@ -47,6 +52,10 @@ void Request::unsetTimer() {
4752
this->mTimer = nullptr;
4853
}
4954

55+
void Request::setSource(uint64_t source) {
56+
this->mSource = source;
57+
}
58+
5059
void Request::clearResources() {
5160
if(this->mResourceList != nullptr) {
5261
DL_ITERATE(this->mResourceList) {

resource-tuner/core/RequestManager.cpp

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,22 +94,39 @@ int8_t RequestManager::requestMatch(Request* request) {
9494
// If it is, we can use multiple threads from the pool for faster checking
9595

9696
for(int64_t handle: *clientHandles) {
97-
Request* targetRequest = this->mActiveRequests[handle].first;
97+
int8_t requestProcessingStatus = this->getRequestProcessingStatus(handle);
98+
if(requestProcessingStatus == REQ_NOT_FOUND) {
99+
continue;
100+
}
101+
102+
// Only check for requests which haven't been completed or cancelled
103+
if((requestProcessingStatus & REQ_CANCELLED) || (requestProcessingStatus & REQ_COMPLETED)) {
104+
continue;
105+
}
106+
107+
auto it = this->mActiveRequests.find(handle);
108+
if(it == this->mActiveRequests.end()) continue;
109+
Request* targetRequest = it->second.first;
98110
if(targetRequest == nullptr) {
99111
continue;
100112
}
101113

114+
if(request->getSource() != targetRequest->getSource()) {
115+
continue;
116+
}
117+
102118
// Check that the Number of Resources in the requests are the same
103119
if(request->getResourcesCount() != targetRequest->getResourcesCount()) {
104-
return false;
120+
continue;
105121
}
106122

107123
if(!request->getResDlMgr()->matchAgainst(targetRequest->getResDlMgr(), resourceCmpPolicy)) {
108-
return false;
124+
continue;
109125
}
126+
return true;
110127
}
111128

112-
return true;
129+
return false;
113130
}
114131

115132
int8_t RequestManager::verifyHandle(int64_t handle) {

resource-tuner/signals/SignalHandler.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@ static Request* createResourceTuningRequest(Signal* signal) {
125125
request->setProperties(signal->getProperties());
126126
request->setClientPID(signal->getClientPID());
127127
request->setClientTID(signal->getClientTID());
128+
request->setSource(
129+
CONSTRUCT_SIG_CODE(
130+
signal->getSignalCode(),
131+
signal->getSignalType())
132+
);
128133

129134
std::vector<Resource*>* signalLocks = signalInfo->mSignalResources;
130135

0 commit comments

Comments
 (0)