Enable RDC policy feature
1. Add policy APIs 2. Add policy example for policy API usage Change-Id: I14deb7c809d0b865b7bb083842092fc37868025e Signed-off-by: Chao Fei <Chao.Fei@amd.com>
이 커밋은 다음에 포함됨:
@@ -22,6 +22,8 @@ THE SOFTWARE.
|
||||
#ifndef SERVER_INCLUDE_RDC_RDC_API_SERVICE_H_
|
||||
#define SERVER_INCLUDE_RDC_RDC_API_SERVICE_H_
|
||||
|
||||
#include <thread>
|
||||
|
||||
#include "rdc.grpc.pb.h" // NOLINT
|
||||
#include "rdc/rdc.h"
|
||||
|
||||
@@ -34,6 +36,7 @@ class RdcAPIServiceImpl final : public ::rdc::RdcAPI::Service {
|
||||
~RdcAPIServiceImpl();
|
||||
|
||||
rdc_status_t Initialize(uint64_t rdcd_init_flags = 0);
|
||||
void Shutdown();
|
||||
|
||||
::grpc::Status GetAllDevices(::grpc::ServerContext* context, const ::rdc::Empty* request,
|
||||
::rdc::GetAllDevicesResponse* reply) override;
|
||||
@@ -42,8 +45,9 @@ class RdcAPIServiceImpl final : public ::rdc::RdcAPI::Service {
|
||||
const ::rdc::GetDeviceAttributesRequest* request,
|
||||
::rdc::GetDeviceAttributesResponse* reply) override;
|
||||
|
||||
::grpc::Status GetComponentVersion(::grpc::ServerContext* context, const ::rdc::GetComponentVersionRequest* request,
|
||||
::rdc::GetComponentVersionResponse* reply) override;
|
||||
::grpc::Status GetComponentVersion(::grpc::ServerContext* context,
|
||||
const ::rdc::GetComponentVersionRequest* request,
|
||||
::rdc::GetComponentVersionResponse* reply) override;
|
||||
|
||||
::grpc::Status CreateGpuGroup(::grpc::ServerContext* context,
|
||||
const ::rdc::CreateGpuGroupRequest* request,
|
||||
@@ -125,11 +129,41 @@ class RdcAPIServiceImpl final : public ::rdc::RdcAPI::Service {
|
||||
const ::rdc::DiagnosticTestCaseRunRequest* request,
|
||||
::rdc::DiagnosticTestCaseRunResponse* reply) override;
|
||||
|
||||
::grpc::Status GetMixedComponentVersion(::grpc::ServerContext* context, const ::rdc::GetMixedComponentVersionRequest* request,
|
||||
::rdc::GetMixedComponentVersionResponse* reply) override;
|
||||
::grpc::Status GetMixedComponentVersion(::grpc::ServerContext* context,
|
||||
const ::rdc::GetMixedComponentVersionRequest* request,
|
||||
::rdc::GetMixedComponentVersionResponse* reply) override;
|
||||
|
||||
::grpc::Status SetPolicy(::grpc::ServerContext* context, const ::rdc::SetPolicyRequest* request,
|
||||
::rdc::SetPolicyResponse* reply) override;
|
||||
|
||||
::grpc::Status GetPolicy(::grpc::ServerContext* context, const ::rdc::GetPolicyRequest* request,
|
||||
::rdc::GetPolicyResponse* reply) override;
|
||||
|
||||
::grpc::Status DeletePolicy(::grpc::ServerContext* context,
|
||||
const ::rdc::DeletePolicyRequest* request,
|
||||
::rdc::DeletePolicyResponse* reply) override;
|
||||
|
||||
::grpc::Status RegisterPolicy(
|
||||
::grpc::ServerContext* context, const ::rdc::RegisterPolicyRequest* request,
|
||||
::grpc::ServerWriter< ::rdc::RegisterPolicyResponse>* stream) override;
|
||||
|
||||
::grpc::Status UnRegisterPolicy(::grpc::ServerContext* context,
|
||||
const ::rdc::UnRegisterPolicyRequest* request,
|
||||
::rdc::UnRegisterPolicyResponse* reply) override;
|
||||
|
||||
private:
|
||||
bool copy_gpu_usage_info(const rdc_gpu_usage_info_t& src, ::rdc::GpuUsageInfo* target);
|
||||
rdc_handle_t rdc_handle_;
|
||||
|
||||
struct policy_thread_context {
|
||||
pthread_mutex_t mutex;
|
||||
pthread_cond_t cond;
|
||||
rdc_policy_callback_response_t response;
|
||||
bool start;
|
||||
};
|
||||
// map for group_id and thread context
|
||||
static std::map<uint32_t, struct policy_thread_context*> policy_threads_;
|
||||
static int PolicyCallback(rdc_policy_callback_response_t* userData);
|
||||
};
|
||||
|
||||
} // namespace rdc
|
||||
|
||||
새 이슈에서 참조
사용자 차단