pin-server/0029-PluginServer-Add-class-for-Server-Command.patch
2023-09-19 11:08:34 +08:00

160 lines
5.6 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 9353b8793f8725568c04ba03adf8b7f84d0cd226 Mon Sep 17 00:00:00 2001
From: Mingchuan Wu <wumingchuan1992@foxmail.com>
Date: Sat, 2 Sep 2023 15:57:33 +0800
Subject: [PATCH 2/2] [PluginServer] Add class for Server Command.
---
include/PluginAPI/BasicPluginOpsAPI.h | 1 +
include/PluginAPI/PluginServerAPI.h | 1 +
include/PluginServer/PluginOptBase.h | 2 +-
include/PluginServer/PluginServer.h | 44 +++++++++++++++++++++++++++
lib/PluginAPI/PluginServerAPI.cpp | 5 +++
lib/PluginServer/main.cpp | 5 +--
6 files changed, 55 insertions(+), 3 deletions(-)
diff --git a/include/PluginAPI/BasicPluginOpsAPI.h b/include/PluginAPI/BasicPluginOpsAPI.h
index 065274d..b047175 100644
--- a/include/PluginAPI/BasicPluginOpsAPI.h
+++ b/include/PluginAPI/BasicPluginOpsAPI.h
@@ -44,6 +44,7 @@ public:
virtual string GetIncludeFile() = 0;
virtual int GetDeclSourceLine(int64_t) = 0;
virtual int GetDeclSourceColumn(int64_t) = 0;
+ virtual void ShutdownCompile() = 0;
// CGnodeOp
virtual vector<CGnodeOp> GetAllCGnode() = 0;
diff --git a/include/PluginAPI/PluginServerAPI.h b/include/PluginAPI/PluginServerAPI.h
index 9cc8498..54e18a3 100644
--- a/include/PluginAPI/PluginServerAPI.h
+++ b/include/PluginAPI/PluginServerAPI.h
@@ -124,6 +124,7 @@ public:
string GetIncludeFile() override;
int GetDeclSourceLine(int64_t) override;
int GetDeclSourceColumn(int64_t) override;
+ void ShutdownCompile() override;
private:
mlir::Block* BlockResult(const string& funName, const string& params);
vector<mlir::Block*> BlocksResult(const string& funName, const string& params);
diff --git a/include/PluginServer/PluginOptBase.h b/include/PluginServer/PluginOptBase.h
index 474d072..926ab7a 100755
--- a/include/PluginServer/PluginOptBase.h
+++ b/include/PluginServer/PluginOptBase.h
@@ -74,9 +74,9 @@ public:
}
private:
- mlir::MLIRContext context;
InjectPoint inject;
uint64_t func; // 保存managerSetup fun参数指针
+ mlir::MLIRContext context;
};
} // namespace PluginOpt
#endif
diff --git a/include/PluginServer/PluginServer.h b/include/PluginServer/PluginServer.h
index 81f92e9..3b4b8e6 100644
--- a/include/PluginServer/PluginServer.h
+++ b/include/PluginServer/PluginServer.h
@@ -98,8 +98,51 @@ private:
std::shared_ptr<PluginOptBase> opt;
};
+class ServerCommand {
+public:
+ ServerCommand() = default;
+ ~ServerCommand() = default;
+ ServerCommand(const string& input, const string& dir, const string& common,
+ const string& extra, const string& output) {
+ this->input = input;
+ this->dir = dir;
+ this->common = common;
+ this->extra = extra;
+ this->output = output;
+ }
+
+ void SetInput(const string& input) { this->input = input; }
+ void SetDir(const string& dir) { this->dir = dir; }
+ void SetCommon(const string& common) { this->common = common; }
+ void SetExtra(const string& extra) { this->extra = extra; }
+ void SetOutput(const string& output) { this->output = output; }
+
+ string GetInput() { return this->input; }
+ string GetDir() { return this->dir; }
+ string GetCommon() { return this->common; }
+ string GetExtra() { return this->extra; }
+ string GetOutput() { return this->output; }
+private:
+ string input;
+ string dir;
+ string common;
+ string extra;
+ string output;
+};
+
class PluginServer {
public:
+ void SetServerCommand(
+ const string& input, const string& dir, const string& common,
+ const string& extra, const string& output) {
+ this->serverCMD.SetInput(input);
+ this->serverCMD.SetDir(dir);
+ this->serverCMD.SetCommon(common);
+ this->serverCMD.SetExtra(extra);
+ this->serverCMD.SetOutput(output);
+ }
+ ServerCommand GetServerCommand() { return this->serverCMD; }
+
PluginServer(LogPriority priority, const string& port)
{
userFunState = STATE_WAIT_BEGIN;
@@ -276,6 +319,7 @@ public:
void RemoteCallClientWithAPI(const string& api, const string& params);
private:
+ ServerCommand serverCMD;
/* 用户函数执行状态client返回结果后为STATE_RETURN,开始执行下一个函数 */
volatile UserFunStateEnum userFunState;
mlir::MLIRContext *context;
diff --git a/lib/PluginAPI/PluginServerAPI.cpp b/lib/PluginAPI/PluginServerAPI.cpp
index 09bd358..00a2a35 100644
--- a/lib/PluginAPI/PluginServerAPI.cpp
+++ b/lib/PluginAPI/PluginServerAPI.cpp
@@ -472,6 +472,11 @@ llvm::SmallVector<mlir::Plugin::FieldDeclOp> PluginServerAPI::GetFields(uint64_t
return PluginServer::GetInstance()->GetFieldsResult(funName, params);
}
+void PluginServerAPI::ShutdownCompile() {
+ string funName = __func__;
+ PluginServer::GetInstance()->RemoteCallClientWithAPI(funName, "");
+}
+
void PluginServerAPI::SetDeclName(uint64_t newfieldId, uint64_t fieldId)
{
Json::Value root;
diff --git a/lib/PluginServer/main.cpp b/lib/PluginServer/main.cpp
index 333d55e..669d5e4 100644
--- a/lib/PluginServer/main.cpp
+++ b/lib/PluginServer/main.cpp
@@ -24,7 +24,7 @@ using namespace PinServer;
int main(int argc, char** argv)
{
- const int argcNum = 2; // 参数只有2个argv[0]port argv[1]log级别
+ const int argcNum = 7;
if (argc != argcNum) {
printf("param num:%d, should be:%d\n", argc, argcNum);
return -1;
@@ -32,6 +32,7 @@ int main(int argc, char** argv)
std::string port = argv[0];
LogPriority priority = (LogPriority)atoi(argv[1]);
PluginServer server(priority, port);
+ server.SetServerCommand(argv[2], argv[3], argv[4], argv[5], argv[6]);
server.RunServer();
return 0;
-}
\ No newline at end of file
+}
--
2.33.0