Resource Tuner
Loading...
Searching...
No Matches
Request.h
1// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
2// SPDX-License-Identifier: BSD-3-Clause-Clear
3
4#ifndef REQUEST_H
5#define REQUEST_H
6
7#include <cstdint>
8#include <vector>
9
10#include "Timer.h"
11#include "SafeOps.h"
12#include "Utils.h"
13#include "Message.h"
14#include "Resource.h"
15
16class CocoNode {
17public:
18 Resource* mResource;
19 CocoNode* next;
20 CocoNode* prev;
21
22 CocoNode() : mResource(nullptr), next(nullptr), prev(nullptr) {}
23};
24
28class Request : public Message {
29private:
30 int32_t mNumResources;
31 int32_t mNumCocoNodes;
32 std::vector<Resource*>* mResources;
33 std::vector<CocoNode*>* mCocoNodes;
35
36public:
37 Request() : mNumResources(0), mNumCocoNodes(0), mResources(nullptr),
38 mCocoNodes(nullptr), mTimer(nullptr) {}
39 ~Request();
40
41 int32_t getResourcesCount();
42 int32_t getCocoNodesCount();
43 std::vector<Resource*>* getResources();
44 Resource* getResourceAt(int32_t index);
45 std::vector<CocoNode*>* getCocoNodes();
46 CocoNode* getCocoNodeAt(int32_t index);
47 Timer* getTimer();
48
49 void setNumResources(int32_t numResources);
50 void setNumCocoNodes(int32_t numCocoNodes);
51 void setTimer(Timer* timer);
52 void unsetTimer();
53 void setResources(std::vector<Resource*>* resources);
54 void setCocoNodes(std::vector<CocoNode*>* cocoNodes);
55
56 ErrCode serialize(char* buf);
57 ErrCode deserialize(char* buf);
58
59 void populateUntuneRequest(Request* request);
60 void populateRetuneRequest(Request* request, int64_t duration);
61 static void cleanUpRequest(Request* request);
62};
63
64#endif
ErrCode
Custom Error Codes used by Resource Tuner APIs and Internal Functions.
Definition ErrCodes.h:17
Base-Type for Request and Signal classes.
Definition Message.h:12
Encapsulation type for a Resource Provisioning Request.
Definition Request.h:28
Timer * mTimer
Timer associated with the request.
Definition Request.h:34
int32_t mNumCocoNodes
Number of coco nodes Allocated for the Request.
Definition Request.h:31
int32_t mNumResources
Number of resources to be tuned as Part of the Request.
Definition Request.h:30
std::vector< Resource * > * mResources
Pointer to a vector, storing all the Resources to be tuned.
Definition Request.h:32
std::vector< CocoNode * > * mCocoNodes
Pointer to a vector, storing all the CocoNodes for the Request.
Definition Request.h:33
Used to store information regarding Resources / Tunables which need to be Provisioned as part of the ...
Definition Resource.h:16
Timer.
Definition Timer.h:20