Compare commits
10 Commits
6d9f6d7f6b
...
7e64e1a7dc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e64e1a7dc | ||
|
|
6f36c57ebe | ||
|
|
977a6ebc23 | ||
|
|
d8f7e7a53c | ||
|
|
1995dd5cf9 | ||
|
|
dd59bf798c | ||
|
|
c03904164a | ||
|
|
6a04742f87 | ||
|
|
194e6fb0c8 | ||
|
|
b1689d83a7 |
335
0047-move-all-the-files-to-sub-directory-of-etmem.patch
Normal file
335
0047-move-all-the-files-to-sub-directory-of-etmem.patch
Normal file
@ -0,0 +1,335 @@
|
||||
From b89f142798ebb23ad58ad3a0d1fe34f74e7801a6 Mon Sep 17 00:00:00 2001
|
||||
From: louhongxiang <louhongxiang@huawei.com>
|
||||
Date: Thu, 30 Sep 2021 14:15:50 +0800
|
||||
Subject: [PATCH 47/50] move all the files to sub directory of etmem.
|
||||
|
||||
---
|
||||
CMakeLists.txt => etmem/CMakeLists.txt | 0
|
||||
{conf => etmem/conf}/example_conf.yaml | 0
|
||||
{inc => etmem/inc}/etmem_inc/etmem.h | 0
|
||||
{inc => etmem/inc}/etmem_inc/etmem_common.h | 0
|
||||
{inc => etmem/inc}/etmem_inc/etmem_engine.h | 0
|
||||
{inc => etmem/inc}/etmem_inc/etmem_obj.h | 0
|
||||
{inc => etmem/inc}/etmem_inc/etmem_project.h | 0
|
||||
{inc => etmem/inc}/etmem_inc/etmem_rpc.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_common.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_cslide.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_engine.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_engine_exp.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_exp.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_file.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_log.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_migrate.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_pool_adapter.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_project.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_project_exp.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_rpc.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_scan.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_scan_exp.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_scan_export.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_slide.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_task.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_task_exp.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_thirdparty.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_thirdparty_export.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_threadpool.h | 0
|
||||
{inc => etmem/inc}/etmemd_inc/etmemd_threadtimer.h | 0
|
||||
{src => etmem/src}/etmem_src/etmem.c | 0
|
||||
{src => etmem/src}/etmem_src/etmem_common.c | 0
|
||||
{src => etmem/src}/etmem_src/etmem_engine.c | 0
|
||||
{src => etmem/src}/etmem_src/etmem_obj.c | 0
|
||||
{src => etmem/src}/etmem_src/etmem_project.c | 0
|
||||
{src => etmem/src}/etmem_src/etmem_rpc.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_common.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_cslide.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_engine.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_file.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_log.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_migrate.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_pool_adapter.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_project.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_rpc.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_scan.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_scan.version | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_slide.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_task.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_thirdparty.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_threadpool.c | 0
|
||||
{src => etmem/src}/etmemd_src/etmemd_threadtimer.c | 0
|
||||
56 files changed, 0 insertions(+), 0 deletions(-)
|
||||
rename CMakeLists.txt => etmem/CMakeLists.txt (100%)
|
||||
rename {conf => etmem/conf}/example_conf.yaml (100%)
|
||||
rename {inc => etmem/inc}/etmem_inc/etmem.h (100%)
|
||||
rename {inc => etmem/inc}/etmem_inc/etmem_common.h (100%)
|
||||
rename {inc => etmem/inc}/etmem_inc/etmem_engine.h (100%)
|
||||
rename {inc => etmem/inc}/etmem_inc/etmem_obj.h (100%)
|
||||
rename {inc => etmem/inc}/etmem_inc/etmem_project.h (100%)
|
||||
rename {inc => etmem/inc}/etmem_inc/etmem_rpc.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_common.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_cslide.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_engine.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_engine_exp.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_exp.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_file.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_log.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_migrate.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_pool_adapter.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_project.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_project_exp.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_rpc.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_scan.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_scan_exp.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_scan_export.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_slide.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_task.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_task_exp.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_thirdparty.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_thirdparty_export.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_threadpool.h (100%)
|
||||
rename {inc => etmem/inc}/etmemd_inc/etmemd_threadtimer.h (100%)
|
||||
rename {src => etmem/src}/etmem_src/etmem.c (100%)
|
||||
rename {src => etmem/src}/etmem_src/etmem_common.c (100%)
|
||||
rename {src => etmem/src}/etmem_src/etmem_engine.c (100%)
|
||||
rename {src => etmem/src}/etmem_src/etmem_obj.c (100%)
|
||||
rename {src => etmem/src}/etmem_src/etmem_project.c (100%)
|
||||
rename {src => etmem/src}/etmem_src/etmem_rpc.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_common.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_cslide.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_engine.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_file.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_log.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_migrate.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_pool_adapter.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_project.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_rpc.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_scan.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_scan.version (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_slide.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_task.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_thirdparty.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_threadpool.c (100%)
|
||||
rename {src => etmem/src}/etmemd_src/etmemd_threadtimer.c (100%)
|
||||
|
||||
diff --git a/CMakeLists.txt b/etmem/CMakeLists.txt
|
||||
similarity index 100%
|
||||
rename from CMakeLists.txt
|
||||
rename to etmem/CMakeLists.txt
|
||||
diff --git a/conf/example_conf.yaml b/etmem/conf/example_conf.yaml
|
||||
similarity index 100%
|
||||
rename from conf/example_conf.yaml
|
||||
rename to etmem/conf/example_conf.yaml
|
||||
diff --git a/inc/etmem_inc/etmem.h b/etmem/inc/etmem_inc/etmem.h
|
||||
similarity index 100%
|
||||
rename from inc/etmem_inc/etmem.h
|
||||
rename to etmem/inc/etmem_inc/etmem.h
|
||||
diff --git a/inc/etmem_inc/etmem_common.h b/etmem/inc/etmem_inc/etmem_common.h
|
||||
similarity index 100%
|
||||
rename from inc/etmem_inc/etmem_common.h
|
||||
rename to etmem/inc/etmem_inc/etmem_common.h
|
||||
diff --git a/inc/etmem_inc/etmem_engine.h b/etmem/inc/etmem_inc/etmem_engine.h
|
||||
similarity index 100%
|
||||
rename from inc/etmem_inc/etmem_engine.h
|
||||
rename to etmem/inc/etmem_inc/etmem_engine.h
|
||||
diff --git a/inc/etmem_inc/etmem_obj.h b/etmem/inc/etmem_inc/etmem_obj.h
|
||||
similarity index 100%
|
||||
rename from inc/etmem_inc/etmem_obj.h
|
||||
rename to etmem/inc/etmem_inc/etmem_obj.h
|
||||
diff --git a/inc/etmem_inc/etmem_project.h b/etmem/inc/etmem_inc/etmem_project.h
|
||||
similarity index 100%
|
||||
rename from inc/etmem_inc/etmem_project.h
|
||||
rename to etmem/inc/etmem_inc/etmem_project.h
|
||||
diff --git a/inc/etmem_inc/etmem_rpc.h b/etmem/inc/etmem_inc/etmem_rpc.h
|
||||
similarity index 100%
|
||||
rename from inc/etmem_inc/etmem_rpc.h
|
||||
rename to etmem/inc/etmem_inc/etmem_rpc.h
|
||||
diff --git a/inc/etmemd_inc/etmemd.h b/etmem/inc/etmemd_inc/etmemd.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_common.h b/etmem/inc/etmemd_inc/etmemd_common.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_common.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_common.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_cslide.h b/etmem/inc/etmemd_inc/etmemd_cslide.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_cslide.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_cslide.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_engine.h b/etmem/inc/etmemd_inc/etmemd_engine.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_engine.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_engine.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_engine_exp.h b/etmem/inc/etmemd_inc/etmemd_engine_exp.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_engine_exp.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_engine_exp.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_exp.h b/etmem/inc/etmemd_inc/etmemd_exp.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_exp.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_exp.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_file.h b/etmem/inc/etmemd_inc/etmemd_file.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_file.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_file.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_log.h b/etmem/inc/etmemd_inc/etmemd_log.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_log.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_log.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_migrate.h b/etmem/inc/etmemd_inc/etmemd_migrate.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_migrate.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_migrate.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_pool_adapter.h b/etmem/inc/etmemd_inc/etmemd_pool_adapter.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_pool_adapter.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_pool_adapter.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_project.h b/etmem/inc/etmemd_inc/etmemd_project.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_project.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_project.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_project_exp.h b/etmem/inc/etmemd_inc/etmemd_project_exp.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_project_exp.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_project_exp.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_rpc.h b/etmem/inc/etmemd_inc/etmemd_rpc.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_rpc.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_rpc.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_scan.h b/etmem/inc/etmemd_inc/etmemd_scan.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_scan.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_scan.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_scan_exp.h b/etmem/inc/etmemd_inc/etmemd_scan_exp.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_scan_exp.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_scan_exp.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_scan_export.h b/etmem/inc/etmemd_inc/etmemd_scan_export.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_scan_export.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_scan_export.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_slide.h b/etmem/inc/etmemd_inc/etmemd_slide.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_slide.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_slide.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_task.h b/etmem/inc/etmemd_inc/etmemd_task.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_task.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_task.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_task_exp.h b/etmem/inc/etmemd_inc/etmemd_task_exp.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_task_exp.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_task_exp.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_thirdparty.h b/etmem/inc/etmemd_inc/etmemd_thirdparty.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_thirdparty.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_thirdparty.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_thirdparty_export.h b/etmem/inc/etmemd_inc/etmemd_thirdparty_export.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_thirdparty_export.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_thirdparty_export.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_threadpool.h b/etmem/inc/etmemd_inc/etmemd_threadpool.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_threadpool.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_threadpool.h
|
||||
diff --git a/inc/etmemd_inc/etmemd_threadtimer.h b/etmem/inc/etmemd_inc/etmemd_threadtimer.h
|
||||
similarity index 100%
|
||||
rename from inc/etmemd_inc/etmemd_threadtimer.h
|
||||
rename to etmem/inc/etmemd_inc/etmemd_threadtimer.h
|
||||
diff --git a/src/etmem_src/etmem.c b/etmem/src/etmem_src/etmem.c
|
||||
similarity index 100%
|
||||
rename from src/etmem_src/etmem.c
|
||||
rename to etmem/src/etmem_src/etmem.c
|
||||
diff --git a/src/etmem_src/etmem_common.c b/etmem/src/etmem_src/etmem_common.c
|
||||
similarity index 100%
|
||||
rename from src/etmem_src/etmem_common.c
|
||||
rename to etmem/src/etmem_src/etmem_common.c
|
||||
diff --git a/src/etmem_src/etmem_engine.c b/etmem/src/etmem_src/etmem_engine.c
|
||||
similarity index 100%
|
||||
rename from src/etmem_src/etmem_engine.c
|
||||
rename to etmem/src/etmem_src/etmem_engine.c
|
||||
diff --git a/src/etmem_src/etmem_obj.c b/etmem/src/etmem_src/etmem_obj.c
|
||||
similarity index 100%
|
||||
rename from src/etmem_src/etmem_obj.c
|
||||
rename to etmem/src/etmem_src/etmem_obj.c
|
||||
diff --git a/src/etmem_src/etmem_project.c b/etmem/src/etmem_src/etmem_project.c
|
||||
similarity index 100%
|
||||
rename from src/etmem_src/etmem_project.c
|
||||
rename to etmem/src/etmem_src/etmem_project.c
|
||||
diff --git a/src/etmem_src/etmem_rpc.c b/etmem/src/etmem_src/etmem_rpc.c
|
||||
similarity index 100%
|
||||
rename from src/etmem_src/etmem_rpc.c
|
||||
rename to etmem/src/etmem_src/etmem_rpc.c
|
||||
diff --git a/src/etmemd_src/etmemd.c b/etmem/src/etmemd_src/etmemd.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd.c
|
||||
rename to etmem/src/etmemd_src/etmemd.c
|
||||
diff --git a/src/etmemd_src/etmemd_common.c b/etmem/src/etmemd_src/etmemd_common.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_common.c
|
||||
rename to etmem/src/etmemd_src/etmemd_common.c
|
||||
diff --git a/src/etmemd_src/etmemd_cslide.c b/etmem/src/etmemd_src/etmemd_cslide.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_cslide.c
|
||||
rename to etmem/src/etmemd_src/etmemd_cslide.c
|
||||
diff --git a/src/etmemd_src/etmemd_engine.c b/etmem/src/etmemd_src/etmemd_engine.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_engine.c
|
||||
rename to etmem/src/etmemd_src/etmemd_engine.c
|
||||
diff --git a/src/etmemd_src/etmemd_file.c b/etmem/src/etmemd_src/etmemd_file.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_file.c
|
||||
rename to etmem/src/etmemd_src/etmemd_file.c
|
||||
diff --git a/src/etmemd_src/etmemd_log.c b/etmem/src/etmemd_src/etmemd_log.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_log.c
|
||||
rename to etmem/src/etmemd_src/etmemd_log.c
|
||||
diff --git a/src/etmemd_src/etmemd_migrate.c b/etmem/src/etmemd_src/etmemd_migrate.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_migrate.c
|
||||
rename to etmem/src/etmemd_src/etmemd_migrate.c
|
||||
diff --git a/src/etmemd_src/etmemd_pool_adapter.c b/etmem/src/etmemd_src/etmemd_pool_adapter.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_pool_adapter.c
|
||||
rename to etmem/src/etmemd_src/etmemd_pool_adapter.c
|
||||
diff --git a/src/etmemd_src/etmemd_project.c b/etmem/src/etmemd_src/etmemd_project.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_project.c
|
||||
rename to etmem/src/etmemd_src/etmemd_project.c
|
||||
diff --git a/src/etmemd_src/etmemd_rpc.c b/etmem/src/etmemd_src/etmemd_rpc.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_rpc.c
|
||||
rename to etmem/src/etmemd_src/etmemd_rpc.c
|
||||
diff --git a/src/etmemd_src/etmemd_scan.c b/etmem/src/etmemd_src/etmemd_scan.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_scan.c
|
||||
rename to etmem/src/etmemd_src/etmemd_scan.c
|
||||
diff --git a/src/etmemd_src/etmemd_scan.version b/etmem/src/etmemd_src/etmemd_scan.version
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_scan.version
|
||||
rename to etmem/src/etmemd_src/etmemd_scan.version
|
||||
diff --git a/src/etmemd_src/etmemd_slide.c b/etmem/src/etmemd_src/etmemd_slide.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_slide.c
|
||||
rename to etmem/src/etmemd_src/etmemd_slide.c
|
||||
diff --git a/src/etmemd_src/etmemd_task.c b/etmem/src/etmemd_src/etmemd_task.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_task.c
|
||||
rename to etmem/src/etmemd_src/etmemd_task.c
|
||||
diff --git a/src/etmemd_src/etmemd_thirdparty.c b/etmem/src/etmemd_src/etmemd_thirdparty.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_thirdparty.c
|
||||
rename to etmem/src/etmemd_src/etmemd_thirdparty.c
|
||||
diff --git a/src/etmemd_src/etmemd_threadpool.c b/etmem/src/etmemd_src/etmemd_threadpool.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_threadpool.c
|
||||
rename to etmem/src/etmemd_src/etmemd_threadpool.c
|
||||
diff --git a/src/etmemd_src/etmemd_threadtimer.c b/etmem/src/etmemd_src/etmemd_threadtimer.c
|
||||
similarity index 100%
|
||||
rename from src/etmemd_src/etmemd_threadtimer.c
|
||||
rename to etmem/src/etmemd_src/etmemd_threadtimer.c
|
||||
--
|
||||
2.27.0
|
||||
|
||||
3286
0048-Commit-new-features-memRouter-and-userswap-to-etmem.patch
Normal file
3286
0048-Commit-new-features-memRouter-and-userswap-to-etmem.patch
Normal file
File diff suppressed because it is too large
Load Diff
481
0049-Add-engine-memdcd-to-etmemd.patch
Normal file
481
0049-Add-engine-memdcd-to-etmemd.patch
Normal file
@ -0,0 +1,481 @@
|
||||
From 498679879e2a81820126971839a23d307cdce9f5 Mon Sep 17 00:00:00 2001
|
||||
From: Yangxin <245051644@qq.com>
|
||||
Date: Thu, 30 Sep 2021 18:09:41 +0800
|
||||
Subject: [PATCH 49/50] Add engine memdcd to etmemd.
|
||||
|
||||
Signed-off-by: Yangxin <245051644@qq.com>
|
||||
---
|
||||
etmem/CMakeLists.txt | 1 +
|
||||
etmem/inc/etmemd_inc/etmemd_engine.h | 1 +
|
||||
etmem/inc/etmemd_inc/etmemd_memdcd.h | 31 +++
|
||||
etmem/src/etmemd_src/etmemd_engine.c | 2 +
|
||||
etmem/src/etmemd_src/etmemd_memdcd.c | 374 +++++++++++++++++++++++++++
|
||||
5 files changed, 409 insertions(+)
|
||||
create mode 100644 etmem/inc/etmemd_inc/etmemd_memdcd.h
|
||||
create mode 100644 etmem/src/etmemd_src/etmemd_memdcd.c
|
||||
|
||||
diff --git a/etmem/CMakeLists.txt b/etmem/CMakeLists.txt
|
||||
index 6d11da9..b5eb83e 100644
|
||||
--- a/etmem/CMakeLists.txt
|
||||
+++ b/etmem/CMakeLists.txt
|
||||
@@ -31,6 +31,7 @@ set(ETMEMD_SRC
|
||||
${ETMEMD_SRC_DIR}/etmemd_log.c
|
||||
${ETMEMD_SRC_DIR}/etmemd_project.c
|
||||
${ETMEMD_SRC_DIR}/etmemd_engine.c
|
||||
+ ${ETMEMD_SRC_DIR}/etmemd_memdcd.c
|
||||
${ETMEMD_SRC_DIR}/etmemd_slide.c
|
||||
${ETMEMD_SRC_DIR}/etmemd_cslide.c
|
||||
${ETMEMD_SRC_DIR}/etmemd_thirdparty.c
|
||||
diff --git a/etmem/inc/etmemd_inc/etmemd_engine.h b/etmem/inc/etmemd_inc/etmemd_engine.h
|
||||
index 0134d21..9a50e10 100644
|
||||
--- a/etmem/inc/etmemd_inc/etmemd_engine.h
|
||||
+++ b/etmem/inc/etmemd_inc/etmemd_engine.h
|
||||
@@ -24,6 +24,7 @@
|
||||
enum eng_type {
|
||||
SLIDE_ENGINE = 0,
|
||||
CSLIDE_ENGINE,
|
||||
+ MEMDCD_ENGINE,
|
||||
DYNAMIC_FB_ENGINE,
|
||||
HISTORICAL_FB_ENGINE,
|
||||
THIRDPARTY_ENGINE,
|
||||
diff --git a/etmem/inc/etmemd_inc/etmemd_memdcd.h b/etmem/inc/etmemd_inc/etmemd_memdcd.h
|
||||
new file mode 100644
|
||||
index 0000000..96f9307
|
||||
--- /dev/null
|
||||
+++ b/etmem/inc/etmemd_inc/etmemd_memdcd.h
|
||||
@@ -0,0 +1,31 @@
|
||||
+/******************************************************************************
|
||||
+ * Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
|
||||
+ * etmem is licensed under the Mulan PSL v2.
|
||||
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
+ * You may obtain a copy of Mulan PSL v2 at:
|
||||
+ * http://license.coscl.org.cn/MulanPSL2
|
||||
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
|
||||
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
|
||||
+ * PURPOSE.
|
||||
+ * See the Mulan PSL v2 for more details.
|
||||
+ * Author: YangXin
|
||||
+ * Create: 2021-4-20
|
||||
+ * Description: This is a header file of the function declaration for memdcd engine..
|
||||
+ ******************************************************************************/
|
||||
+
|
||||
+
|
||||
+#ifndef ETMEMD_MEMDCD_H
|
||||
+#define ETMEMD_MEMDCD_H
|
||||
+
|
||||
+#include "etmemd_engine.h"
|
||||
+
|
||||
+#define MAX_SOCK_PATH_LENGTH 108
|
||||
+
|
||||
+struct memdcd_params {
|
||||
+ struct task_executor *executor;
|
||||
+ char memdcd_socket[MAX_SOCK_PATH_LENGTH];
|
||||
+};
|
||||
+
|
||||
+int fill_engine_type_memdcd(struct engine *eng, GKeyFile *config);
|
||||
+
|
||||
+#endif
|
||||
diff --git a/etmem/src/etmemd_src/etmemd_engine.c b/etmem/src/etmemd_src/etmemd_engine.c
|
||||
index f57d52b..6a14ecb 100644
|
||||
--- a/etmem/src/etmemd_src/etmemd_engine.c
|
||||
+++ b/etmem/src/etmemd_src/etmemd_engine.c
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "etmemd_engine.h"
|
||||
#include "etmemd_slide.h"
|
||||
#include "etmemd_cslide.h"
|
||||
+#include "etmemd_memdcd.h"
|
||||
#include "etmemd_thirdparty.h"
|
||||
#include "etmemd_log.h"
|
||||
#include "etmemd_common.h"
|
||||
@@ -36,6 +37,7 @@ struct engine_remove_item {
|
||||
static struct engine_add_item g_engine_add_items[] = {
|
||||
{"slide", fill_engine_type_slide},
|
||||
{"cslide", fill_engine_type_cslide},
|
||||
+ {"memdcd", fill_engine_type_memdcd},
|
||||
{"thirdparty", fill_engine_type_thirdparty},
|
||||
};
|
||||
|
||||
diff --git a/etmem/src/etmemd_src/etmemd_memdcd.c b/etmem/src/etmemd_src/etmemd_memdcd.c
|
||||
new file mode 100644
|
||||
index 0000000..635e5a2
|
||||
--- /dev/null
|
||||
+++ b/etmem/src/etmemd_src/etmemd_memdcd.c
|
||||
@@ -0,0 +1,374 @@
|
||||
+/******************************************************************************
|
||||
+ * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
|
||||
+ * etmem is licensed under the Mulan PSL v2.
|
||||
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
+ * You may obtain a copy of Mulan PSL v2 at:
|
||||
+ * http://license.coscl.org.cn/MulanPSL2
|
||||
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
|
||||
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
|
||||
+ * PURPOSE.
|
||||
+ * See the Mulan PSL v2 for more details.
|
||||
+ * Author: Yangxin
|
||||
+ * Create: 2021-04-05
|
||||
+ * Description: API of memdcd engine.
|
||||
+ ******************************************************************************/
|
||||
+
|
||||
+#include <stdlib.h>
|
||||
+#include <stdio.h>
|
||||
+#include <string.h>
|
||||
+#include <sys/socket.h>
|
||||
+#include <sys/un.h>
|
||||
+#include <unistd.h>
|
||||
+#include <errno.h>
|
||||
+
|
||||
+#include "securec.h"
|
||||
+#include "etmemd_log.h"
|
||||
+#include "etmemd_common.h"
|
||||
+#include "etmemd_engine.h"
|
||||
+#include "etmemd_scan.h"
|
||||
+#include "etmemd_migrate.h"
|
||||
+#include "etmemd_pool_adapter.h"
|
||||
+#include "etmemd_file.h"
|
||||
+#include "etmemd_memdcd.h"
|
||||
+
|
||||
+#define MAX_VMA_NUM 512
|
||||
+#define RESP_MSG_MAX_LEN 10
|
||||
+#define CLIENT_RECV_DEFAULT_TIME 10
|
||||
+
|
||||
+enum MEMDCD_CMD_TYPE {
|
||||
+ MEMDCD_CMD_MEM = 0
|
||||
+};
|
||||
+
|
||||
+enum SwapType {
|
||||
+ SWAP_TYPE_VMA_ADDR = 0xFFFFFF01,
|
||||
+ SWAP_TYPE_MAX
|
||||
+};
|
||||
+
|
||||
+struct vma_addr {
|
||||
+ uint64_t start_addr;
|
||||
+ uint64_t vma_len;
|
||||
+};
|
||||
+
|
||||
+struct vma_addr_with_count {
|
||||
+ struct vma_addr vma;
|
||||
+ int count;
|
||||
+};
|
||||
+
|
||||
+enum MEMDCD_MESSAGE_STATUS {
|
||||
+ MEMDCD_SEND_START,
|
||||
+ MEMDCD_SEND_PROCESS,
|
||||
+ MEMDCD_SEND_END,
|
||||
+};
|
||||
+
|
||||
+struct swap_vma_with_count {
|
||||
+ enum SwapType type;
|
||||
+ uint64_t length;
|
||||
+ uint64_t total_length;
|
||||
+ enum MEMDCD_MESSAGE_STATUS status;
|
||||
+ struct vma_addr_with_count vma_addrs[MAX_VMA_NUM];
|
||||
+};
|
||||
+
|
||||
+struct memory_message {
|
||||
+ int pid;
|
||||
+ uint32_t enable_uswap;
|
||||
+ struct swap_vma_with_count vma;
|
||||
+};
|
||||
+
|
||||
+struct memdcd_message {
|
||||
+ enum MEMDCD_CMD_TYPE cmd_type;
|
||||
+ union {
|
||||
+ struct memory_message memory_msg;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+static int memdcd_connection_init(time_t tm_out, const char sock_path[])
|
||||
+{
|
||||
+ struct sockaddr_un addr;
|
||||
+ int len;
|
||||
+
|
||||
+ int sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||
+ if (sockfd < 0){
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "new socket for memdcd error.");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ len = offsetof(struct sockaddr_un, sun_path) + strlen(addr.sun_path);
|
||||
+
|
||||
+ if (memset_s(&addr, sizeof(struct sockaddr_un),
|
||||
+ 0, sizeof(struct sockaddr_un)) != EOK) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "clear addr failed\n");
|
||||
+ goto err_out;
|
||||
+ }
|
||||
+
|
||||
+ addr.sun_family = AF_UNIX;
|
||||
+ if (memcpy_s(addr.sun_path, sizeof(addr.sun_path),
|
||||
+ sock_path, strlen(sock_path)) != EOK) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "copy for memdcd server path to addr fail, error(%s)\n",
|
||||
+ strerror(errno));
|
||||
+ goto err_out;
|
||||
+ }
|
||||
+
|
||||
+ /* note, the below two line **MUST** maintain the order */
|
||||
+ len = offsetof(struct sockaddr_un, sun_path) + strlen(addr.sun_path);
|
||||
+ addr.sun_path[0] = '\0';
|
||||
+ if (connect(sockfd, (struct sockaddr *)&addr, len) < 0){
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "connect memdcd failed\n");
|
||||
+ goto err_out;
|
||||
+ }
|
||||
+
|
||||
+ return sockfd;
|
||||
+
|
||||
+err_out:
|
||||
+ close(sockfd);
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+static int send_data_to_memdcd(unsigned int pid, struct memdcd_message *msg, const char sock_path[])
|
||||
+{
|
||||
+ int client_fd;
|
||||
+ int ret = 0;
|
||||
+ int read_bytes;
|
||||
+ int write_bytes;
|
||||
+ char buff[RESP_MSG_MAX_LEN] = {0};
|
||||
+ time_t recv_timeout = CLIENT_RECV_DEFAULT_TIME;
|
||||
+
|
||||
+ client_fd = memdcd_connection_init(recv_timeout, sock_path);
|
||||
+ if (client_fd < 0) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "%s: connect error %d.\n", __func__, client_fd);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ write_bytes = write(client_fd, msg, sizeof(struct memdcd_message));
|
||||
+ if (write_bytes <= 0) {
|
||||
+ etmemd_log(ETMEMD_LOG_DEBUG, "etmemd_socket: send to memdcd for pid %u, bytes: %d\n",
|
||||
+ pid, write_bytes);
|
||||
+ ret = -1;
|
||||
+ goto CLOSE_SOCK;
|
||||
+ }
|
||||
+
|
||||
+ read_bytes = read(client_fd, buff, RESP_MSG_MAX_LEN);
|
||||
+ if (read_bytes > 0) {
|
||||
+ if (strcmp(buff, "success") == 0) {
|
||||
+ etmemd_log(ETMEMD_LOG_INFO, "etmemd_socket: recv respond success.\n");
|
||||
+ } else {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "etmemd_socket: recv respond failed.\n");
|
||||
+ ret = -1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+CLOSE_SOCK:
|
||||
+ close(client_fd);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int memdcd_do_migrate(unsigned int pid, struct page_refs *page_refs_list, const char sock_path[])
|
||||
+{
|
||||
+ int count = 0, total_count = 0;
|
||||
+ int ret = 0;
|
||||
+ struct swap_vma_with_count *swap_vma = NULL;
|
||||
+ struct page_refs *page_refs = page_refs_list;
|
||||
+ struct memdcd_message *msg;
|
||||
+
|
||||
+ if (page_refs_list == NULL) {
|
||||
+ /* do nothing */
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ while (page_refs != NULL) {
|
||||
+ page_refs = page_refs->next;
|
||||
+ total_count++;
|
||||
+ }
|
||||
+ page_refs = page_refs_list;
|
||||
+
|
||||
+ msg = (struct memdcd_message *)calloc(1, sizeof(struct memdcd_message));
|
||||
+ if (msg == NULL) {
|
||||
+ etmemd_log(ETMEMD_LOG_WARN, "memigd_socket: malloc for swap vma failed. \n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ msg->cmd_type = MEMDCD_CMD_MEM;
|
||||
+ msg->memory_msg.pid = pid;
|
||||
+ msg->memory_msg.enable_uswap = true;
|
||||
+ msg->memory_msg.vma.status = MEMDCD_SEND_START;
|
||||
+
|
||||
+ swap_vma = &(msg->memory_msg.vma);
|
||||
+ swap_vma->type = SWAP_TYPE_VMA_ADDR;
|
||||
+ swap_vma->total_length = total_count;
|
||||
+
|
||||
+ while (page_refs != NULL) {
|
||||
+ swap_vma->vma_addrs[count].vma.start_addr = page_refs->addr;
|
||||
+ swap_vma->vma_addrs[count].vma.vma_len = page_type_to_size(page_refs->type);
|
||||
+ swap_vma->vma_addrs[count].count = page_refs->count;
|
||||
+ count++;
|
||||
+ page_refs = page_refs->next;
|
||||
+
|
||||
+ if (count < MAX_VMA_NUM) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (page_refs == NULL) {
|
||||
+ break;
|
||||
+ }
|
||||
+ swap_vma->length = count * sizeof(struct vma_addr_with_count);
|
||||
+ if (send_data_to_memdcd(pid, msg, sock_path) != 0) {
|
||||
+ ret = -1;
|
||||
+ goto FREE_SWAP;
|
||||
+ }
|
||||
+ count = 0;
|
||||
+ msg->memory_msg.vma.status = MEMDCD_SEND_PROCESS;
|
||||
+ if (memset_s(swap_vma->vma_addrs, sizeof(swap_vma->vma_addrs),
|
||||
+ 0, sizeof(swap_vma->vma_addrs)) != EOK) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "clear swap_vma failed\n");
|
||||
+ ret = -1;
|
||||
+ goto FREE_SWAP;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (msg->memory_msg.vma.status != MEMDCD_SEND_START)
|
||||
+ msg->memory_msg.vma.status = MEMDCD_SEND_END;
|
||||
+ swap_vma->length = count * sizeof(struct vma_addr_with_count);
|
||||
+ if (send_data_to_memdcd(pid, msg, sock_path) != 0) {
|
||||
+ ret = -1;
|
||||
+ }
|
||||
+
|
||||
+FREE_SWAP:
|
||||
+ free(msg);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void *memdcd_executor(void *arg)
|
||||
+{
|
||||
+ struct task_pid *tk_pid = (struct task_pid *)arg;
|
||||
+ struct memdcd_params *memdcd_params = (struct memdcd_params *)(tk_pid->tk->params);
|
||||
+ struct page_refs *page_refs = NULL;
|
||||
+
|
||||
+ /* register cleanup function in case of unexpected cancellation detected,
|
||||
+ * and register for memory_grade first, because it needs to clean after page_refs is cleaned */
|
||||
+ pthread_cleanup_push(clean_page_refs_unexpected, &page_refs);
|
||||
+ page_refs = etmemd_do_scan(tk_pid, tk_pid->tk);
|
||||
+ if (page_refs != NULL) {
|
||||
+ if (memdcd_do_migrate(tk_pid->pid, page_refs, memdcd_params->memdcd_socket) != 0) {
|
||||
+ etmemd_log(ETMEMD_LOG_WARN, "memdcd migrate for pid %u fail\n", tk_pid->pid);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* no need to use page_refs any longer.
|
||||
+ * pop the cleanup function with parameter 1, because the items in page_refs list will be moved
|
||||
+ * into the at least on list of memory_grade after polidy function called if no problems happened,
|
||||
+ * but mig_policy_func() may fails to move page_refs in rare cases.
|
||||
+ * It will do nothing if page_refs is NULL */
|
||||
+ pthread_cleanup_pop(1);
|
||||
+
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+static int fill_task_sock_path(void *obj, void *val)
|
||||
+{
|
||||
+ const char *default_path = "@_memdcd.server";
|
||||
+
|
||||
+ struct memdcd_params *params = (struct memdcd_params *)obj;
|
||||
+ char *sock_path = (char *)val;
|
||||
+
|
||||
+ if(strcmp(sock_path, "-") == 0) {
|
||||
+ if (strncpy_s(params->memdcd_socket, MAX_SOCK_PATH_LENGTH, default_path, strlen(default_path)) != 0) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "strncpy for memdcd_socket fail");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ } else {
|
||||
+ if (strncpy_s(params->memdcd_socket, MAX_SOCK_PATH_LENGTH, sock_path, strlen(sock_path)) != 0) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "strncpy for memdcd_socket fail");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct config_item g_memdcd_task_config_items[] = {
|
||||
+ {"Sock", STR_VAL, fill_task_sock_path, false},
|
||||
+};
|
||||
+
|
||||
+static int memdcd_fill_task(GKeyFile *config, struct task *tk)
|
||||
+{
|
||||
+ struct memdcd_params *params = calloc(1, sizeof(struct memdcd_params));
|
||||
+ memset_s(params->memdcd_socket, MAX_SOCK_PATH_LENGTH, 0, MAX_SOCK_PATH_LENGTH);
|
||||
+
|
||||
+ if (params == NULL) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "alloc memdcd param fail\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (parse_file_config(config, TASK_GROUP, g_memdcd_task_config_items, ARRAY_SIZE(g_memdcd_task_config_items),
|
||||
+ (void *)params) != 0) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "memdcd fill task fail\n");
|
||||
+ goto free_params;
|
||||
+ }
|
||||
+
|
||||
+ if (strlen(params->memdcd_socket) >= MAX_SOCK_PATH_LENGTH) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "length of engine param Sock must less than 108.\n");
|
||||
+ goto free_params;
|
||||
+ }
|
||||
+
|
||||
+ tk->params = params;
|
||||
+ return 0;
|
||||
+
|
||||
+free_params:
|
||||
+ free(params);
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+static void memdcd_clear_task(struct task *tk)
|
||||
+{
|
||||
+ free(tk->params);
|
||||
+ tk->params = NULL;
|
||||
+}
|
||||
+
|
||||
+static int memdcd_start_task(struct engine *eng, struct task *tk)
|
||||
+{
|
||||
+ struct memdcd_params *params = tk->params;
|
||||
+
|
||||
+ params->executor = malloc(sizeof(struct task_executor));
|
||||
+ if (params->executor == NULL) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "memdcd alloc memory for task_executor fail\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ params->executor->tk = tk;
|
||||
+ params->executor->func = memdcd_executor;
|
||||
+ if (start_threadpool_work(params->executor) != 0) {
|
||||
+ free(params->executor);
|
||||
+ params->executor = NULL;
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "memdcd start task executor fail\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void memdcd_stop_task(struct engine *eng, struct task *tk)
|
||||
+{
|
||||
+ struct memdcd_params *params = tk->params;
|
||||
+
|
||||
+ stop_and_delete_threadpool_work(tk);
|
||||
+ free(params->executor);
|
||||
+ params->executor = NULL;
|
||||
+}
|
||||
+
|
||||
+struct engine_ops g_memdcd_eng_ops = {
|
||||
+ .fill_eng_params = NULL,
|
||||
+ .clear_eng_params = NULL,
|
||||
+ .fill_task_params = memdcd_fill_task,
|
||||
+ .clear_task_params = memdcd_clear_task,
|
||||
+ .start_task = memdcd_start_task,
|
||||
+ .stop_task = memdcd_stop_task,
|
||||
+ .alloc_pid_params = NULL,
|
||||
+ .free_pid_params = NULL,
|
||||
+ .eng_mgt_func = NULL,
|
||||
+};
|
||||
+
|
||||
+int fill_engine_type_memdcd(struct engine *eng, GKeyFile *config)
|
||||
+{
|
||||
+ eng->ops = &g_memdcd_eng_ops;
|
||||
+ eng->engine_type = MEMDCD_ENGINE;
|
||||
+ eng->name = "memdcd";
|
||||
+ return 0;
|
||||
+}
|
||||
\ No newline at end of file
|
||||
--
|
||||
2.27.0
|
||||
|
||||
39
0050-Add-CMakeLists.txt-for-three-features-of-etmem.patch
Normal file
39
0050-Add-CMakeLists.txt-for-three-features-of-etmem.patch
Normal file
@ -0,0 +1,39 @@
|
||||
From 1aef995d51254409b7aa1e2e84b9b750007e2413 Mon Sep 17 00:00:00 2001
|
||||
From: YangXin <245051644@qq.com>
|
||||
Date: Thu, 30 Sep 2021 18:58:33 +0800
|
||||
Subject: [PATCH 50/50] Add CMakeLists.txt for three features of etmem.
|
||||
|
||||
Signed-off-by: YangXin <245051644@qq.com>
|
||||
---
|
||||
CMakeLists.txt | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
create mode 100644 CMakeLists.txt
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
new file mode 100644
|
||||
index 0000000..a5d6761
|
||||
--- /dev/null
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -0,0 +1,18 @@
|
||||
+# /******************************************************************************
|
||||
+# * Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
|
||||
+# * etmem is licensed under the Mulan PSL v2.
|
||||
+# * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
+# * You may obtain a copy of Mulan PSL v2 at:
|
||||
+# * http://license.coscl.org.cn/MulanPSL2
|
||||
+# * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
|
||||
+# * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
|
||||
+# * PURPOSE.
|
||||
+# * See the Mulan PSL v2 for more details.
|
||||
+# * Author:YangXin
|
||||
+# * Create: 2021-09-31
|
||||
+# * Description:CMakeLists for three features of etmem to compile
|
||||
+# ******************************************************************************/
|
||||
+
|
||||
+add_subdirectory(etmem)
|
||||
+add_subdirectory(memRouter)
|
||||
+add_subdirectory(userswap)
|
||||
\ No newline at end of file
|
||||
--
|
||||
2.27.0
|
||||
|
||||
99
0051-update-memdcd-engine-for-userswap.patch
Normal file
99
0051-update-memdcd-engine-for-userswap.patch
Normal file
@ -0,0 +1,99 @@
|
||||
From 6b25858292a295ab928cd8bfb89715ecee2e600b Mon Sep 17 00:00:00 2001
|
||||
From: yangxin <245051644@qq.com>
|
||||
Date: Wed, 15 Dec 2021 10:19:43 +0000
|
||||
Subject: [PATCH] update memdcd engine for userswap
|
||||
|
||||
Filter out vmas without userswap flags in the memdcd engine.
|
||||
|
||||
Signed-off-by: YangXin <245051644@qq.com>
|
||||
---
|
||||
etmem/src/etmemd_src/etmemd_memdcd.c | 54 ++++++++++++++++++++++++++--
|
||||
1 file changed, 51 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/etmem/src/etmemd_src/etmemd_memdcd.c b/etmem/src/etmemd_src/etmemd_memdcd.c
|
||||
index 635e5a2..28590e2 100644
|
||||
--- a/etmem/src/etmemd_src/etmemd_memdcd.c
|
||||
+++ b/etmem/src/etmemd_src/etmemd_memdcd.c
|
||||
@@ -235,6 +235,54 @@ FREE_SWAP:
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static struct page_refs *memdcd_do_scan(const struct task_pid *tpid, const struct task *tk)
|
||||
+{
|
||||
+ int i = 0;
|
||||
+ struct vmas *vmas = NULL;
|
||||
+ struct page_refs *page_refs = NULL;
|
||||
+ int ret = 0;
|
||||
+ char pid[PID_STR_MAX_LEN] = {0};
|
||||
+ char *us = "us";
|
||||
+
|
||||
+ if(tpid == NULL) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "task pid is null\n");
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (tk == NULL) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "task struct is null for pid %u\n", tpid->pid);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (snprintf_s(pid, PID_STR_MAX_LEN, PID_STR_MAX_LEN - 1, "%u", tpid->pid) <= 0) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "snprintf pid fail %u", tpid->pid);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ /* get vmas of target pid first. */
|
||||
+ vmas = get_vmas_with_flags(pid, &us, 1, true);
|
||||
+ if (vmas == NULL) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "get vmas for %s fail\n", pid);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ /* loop for scanning idle_pages to get result of memory access. */
|
||||
+ for (i = 0; i < tk->eng->proj->loop; i++) {
|
||||
+ ret = get_page_refs(vmas, pid, &page_refs, NULL, 0);
|
||||
+ if (ret != 0) {
|
||||
+ etmemd_log(ETMEMD_LOG_ERR, "scan operation failed\n");
|
||||
+ /* free page_refs nodes already exist */
|
||||
+ etmemd_free_page_refs(page_refs);
|
||||
+ page_refs = NULL;
|
||||
+ break;
|
||||
+ }
|
||||
+ sleep((unsigned)tk->eng->proj->sleep);
|
||||
+ }
|
||||
+
|
||||
+ free_vmas(vmas);
|
||||
+
|
||||
+ return page_refs;
|
||||
+}
|
||||
+
|
||||
static void *memdcd_executor(void *arg)
|
||||
{
|
||||
struct task_pid *tk_pid = (struct task_pid *)arg;
|
||||
@@ -244,7 +292,7 @@ static void *memdcd_executor(void *arg)
|
||||
/* register cleanup function in case of unexpected cancellation detected,
|
||||
* and register for memory_grade first, because it needs to clean after page_refs is cleaned */
|
||||
pthread_cleanup_push(clean_page_refs_unexpected, &page_refs);
|
||||
- page_refs = etmemd_do_scan(tk_pid, tk_pid->tk);
|
||||
+ page_refs = memdcd_do_scan(tk_pid, tk_pid->tk);
|
||||
if (page_refs != NULL) {
|
||||
if (memdcd_do_migrate(tk_pid->pid, page_refs, memdcd_params->memdcd_socket) != 0) {
|
||||
etmemd_log(ETMEMD_LOG_WARN, "memdcd migrate for pid %u fail\n", tk_pid->pid);
|
||||
@@ -290,13 +338,13 @@ static struct config_item g_memdcd_task_config_items[] = {
|
||||
static int memdcd_fill_task(GKeyFile *config, struct task *tk)
|
||||
{
|
||||
struct memdcd_params *params = calloc(1, sizeof(struct memdcd_params));
|
||||
- memset_s(params->memdcd_socket, MAX_SOCK_PATH_LENGTH, 0, MAX_SOCK_PATH_LENGTH);
|
||||
-
|
||||
if (params == NULL) {
|
||||
etmemd_log(ETMEMD_LOG_ERR, "alloc memdcd param fail\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
+ memset_s(params->memdcd_socket, MAX_SOCK_PATH_LENGTH, 0, MAX_SOCK_PATH_LENGTH);
|
||||
+
|
||||
if (parse_file_config(config, TASK_GROUP, g_memdcd_task_config_items, ARRAY_SIZE(g_memdcd_task_config_items),
|
||||
(void *)params) != 0) {
|
||||
etmemd_log(ETMEMD_LOG_ERR, "memdcd fill task fail\n");
|
||||
--
|
||||
2.27.0
|
||||
|
||||
59
0052-etmem-construct-etmem-debug-info-package.patch
Normal file
59
0052-etmem-construct-etmem-debug-info-package.patch
Normal file
@ -0,0 +1,59 @@
|
||||
From ae1a854beda0b9318e080acff64de3375eff75d3 Mon Sep 17 00:00:00 2001
|
||||
From: Liu Chao <liuchao173@huawei.com>
|
||||
Date: Tue, 2 Apr 2024 16:01:50 +0800
|
||||
Subject: [PATCH] etmem: construct etmem debug info package
|
||||
|
||||
Currently, there is no debug info package for etmem, and this
|
||||
can be a problem when trying to analyze a coredump
|
||||
|
||||
Signed-off-by: tangyuchen <tangyuchen5@huawei.com>
|
||||
---
|
||||
etmem/CMakeLists.txt | 12 +++++++++---
|
||||
1 file changed, 9 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/etmem/CMakeLists.txt b/etmem/CMakeLists.txt
|
||||
index 0b38f07..6018ce0 100644
|
||||
--- a/etmem/CMakeLists.txt
|
||||
+++ b/etmem/CMakeLists.txt
|
||||
@@ -83,9 +83,11 @@ target_compile_options(etmemd PRIVATE -fsigned-char -fno-omit-frame-pointer -Wal
|
||||
|
||||
if(CONFIG_DEBUG STREQUAL "y")
|
||||
target_compile_options(etmemd PRIVATE -g)
|
||||
+else()
|
||||
+ target_link_options(etmemd PRIVATE -s)
|
||||
endif()
|
||||
|
||||
-set_target_properties(etmemd PROPERTIES LINK_FLAGS "-s -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines")
|
||||
+target_link_options(etmemd PRIVATE -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines)
|
||||
target_link_libraries(etmemd PRIVATE pthread dl rt boundscheck numa ${GLIB2_LIBRARIES})
|
||||
|
||||
if( ${ARCHITECTURE} STREQUAL "aarch64" )
|
||||
@@ -102,9 +104,11 @@ target_compile_options(etmem PRIVATE -fsigned-char -fno-omit-frame-pointer -Wall
|
||||
|
||||
if(CONFIG_DEBUG STREQUAL "y")
|
||||
target_compile_options(etmem PRIVATE -g)
|
||||
+else()
|
||||
+ target_link_options(etmem PRIVATE -s)
|
||||
endif()
|
||||
|
||||
-set_target_properties(etmem PROPERTIES LINK_FLAGS "-s -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines")
|
||||
+target_link_options(etmem PRIVATE -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines)
|
||||
target_link_libraries(etmem PRIVATE pthread dl rt boundscheck)
|
||||
|
||||
if( ${ARCHITECTURE} STREQUAL "aarch64" )
|
||||
@@ -122,9 +126,11 @@ target_compile_options(etmemd_scan PRIVATE -fsigned-char -fno-omit-frame-pointer
|
||||
|
||||
if(CONFIG_DEBUG STREQUAL "y")
|
||||
target_compile_options(etmemd_scan PRIVATE -g)
|
||||
+else()
|
||||
+ target_link_options(etmemd_scan PRIVATE -s)
|
||||
endif()
|
||||
|
||||
-set_target_properties(etmemd_scan PROPERTIES LINK_FLAGS "-s -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--version-script=${ETMEMD_SRC_DIR}/etmemd_scan.version")
|
||||
+target_link_options(etmemd_scan PRIVATE -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--version-script=${ETMEMD_SRC_DIR}/etmemd_scan.version)
|
||||
target_link_libraries(etmemd_scan PRIVATE pthread dl rt boundscheck numa ${GLIB2_LIBRARIES})
|
||||
|
||||
if( ${ARCHITECTURE} STREQUAL "aarch64" )
|
||||
--
|
||||
2.33.0
|
||||
|
||||
BIN
1.0.tar.gz
Normal file
BIN
1.0.tar.gz
Normal file
Binary file not shown.
@ -16,7 +16,7 @@ etmem内存分级扩展技术,通过DRAM+内存压缩/高性能存储新介质
|
||||
|
||||
a) 下载代码包手动编译
|
||||
|
||||
$ tar -xf etmem-1.0.tar.gz
|
||||
$ tar -xf 1.0.tar.gz
|
||||
|
||||
$ cd etmem-1.0
|
||||
|
||||
|
||||
BIN
etmem-1.0.tar.gz
BIN
etmem-1.0.tar.gz
Binary file not shown.
61
etmem.spec
61
etmem.spec
@ -1,11 +1,10 @@
|
||||
%global debug_package %{nil}
|
||||
|
||||
Name: etmem
|
||||
Version: 1.0
|
||||
Release: 6
|
||||
Release: 11
|
||||
Summary: etmem
|
||||
License: Mulan PSL v2
|
||||
Source0: etmem-%{version}.tar.gz
|
||||
URL: https://gitee.com/openeuler/etmem
|
||||
Source0: https://gitee.com/openeuler/etmem/repository/archive/%{version}.tar.gz
|
||||
|
||||
Patch0: 0001-fix-64K-pagesize-scan-problem.patch
|
||||
Patch1: 0002-change-aarch64-march-to-armv8-a.patch
|
||||
@ -53,12 +52,18 @@ Patch42: 0043-update-README.md.patch
|
||||
Patch43: 0044-etmem-cleancode.patch
|
||||
Patch44: 0045-add-dram_percent-to-etmem.patch
|
||||
Patch45: 0046-Fix-memory-leak-in-slide-engine.patch
|
||||
|
||||
Patch46: 0047-move-all-the-files-to-sub-directory-of-etmem.patch
|
||||
Patch47: 0048-Commit-new-features-memRouter-and-userswap-to-etmem.patch
|
||||
Patch48: 0049-Add-engine-memdcd-to-etmemd.patch
|
||||
Patch49: 0050-Add-CMakeLists.txt-for-three-features-of-etmem.patch
|
||||
Patch50: 0051-update-memdcd-engine-for-userswap.patch
|
||||
Patch51: 0052-etmem-construct-etmem-debug-info-package.patch
|
||||
|
||||
#Dependency
|
||||
BuildRequires: cmake gcc gcc-c++
|
||||
BuildRequires: libboundscheck
|
||||
Requires: libboundscheck
|
||||
BuildRequires: cmake gcc gcc-c++ glib2-devel
|
||||
BuildRequires: libboundscheck numactl-devel libcap-devel json-c-devel
|
||||
Requires: libboundscheck json-c libcap numactl-libs
|
||||
Requires: glib2
|
||||
|
||||
%description
|
||||
etmem module
|
||||
@ -70,28 +75,56 @@ etmem module
|
||||
%build
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake ..
|
||||
cmake .. -DCONFIG_DEBUG=y
|
||||
make
|
||||
|
||||
%install
|
||||
mkdir -p $RPM_BUILD_ROOT%{_bindir}
|
||||
mkdir -p $RPM_BUILD_ROOT%{_libdir}
|
||||
mkdir -p $RPM_BUILD_ROOT%{_includedir}
|
||||
install -d $RPM_BUILD_ROOT%{_sysconfdir}/etmem/
|
||||
|
||||
install -m 0500 build/bin/etmem $RPM_BUILD_ROOT%{_bindir}
|
||||
install -m 0500 build/bin/etmemd $RPM_BUILD_ROOT%{_bindir}
|
||||
install -m 0600 conf/example_conf.yaml $RPM_BUILD_ROOT%{_sysconfdir}/etmem/
|
||||
install -m 0700 etmem/build/bin/etmem $RPM_BUILD_ROOT%{_bindir}
|
||||
install -m 0700 etmem/build/bin/etmemd $RPM_BUILD_ROOT%{_bindir}
|
||||
install -m 0600 etmem/conf/example_conf.yaml $RPM_BUILD_ROOT%{_sysconfdir}/etmem/
|
||||
|
||||
install -m 0750 build/memRouter/memdcd $RPM_BUILD_ROOT%{_bindir}
|
||||
install -m 0750 build/userswap/libuswap.a $RPM_BUILD_ROOT%{_libdir}
|
||||
install -m 0644 userswap/include/uswap_api.h $RPM_BUILD_ROOT%{_includedir}
|
||||
%files
|
||||
%defattr(-,root,root,0750)
|
||||
%{_bindir}/etmem
|
||||
%{_bindir}/etmemd
|
||||
%attr(0500, -, -) %{_bindir}/etmem
|
||||
%attr(0500, -, -) %{_bindir}/etmemd
|
||||
%dir %{_sysconfdir}/etmem
|
||||
%{_sysconfdir}/etmem/example_conf.yaml
|
||||
%attr(0550, -, -) %{_bindir}/memdcd
|
||||
%attr(0550, -, -) %{_libdir}/libuswap.a
|
||||
%{_includedir}/uswap_api.h
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
%postun -p /sbin/ldconfig
|
||||
|
||||
%changelog
|
||||
* Wed Apr 3 2024 tangyuchen <tangyuchen5@huawei.com> 1.0-11
|
||||
- Type:bugfix
|
||||
- CVE:NA
|
||||
- SUG:NA
|
||||
- DESC:add debug info support for etmem
|
||||
|
||||
* Fri Dec 15 2021 YangXin <245051644@qq.com> 1.0-10
|
||||
- Update memdcd engine for userswap page filter.
|
||||
|
||||
* Fri Oct 29 2021 liubo <liubo254@huawei.com> 1.0-9
|
||||
- Add missing URL and source to etmem.spec
|
||||
|
||||
* Thu Oct 20 2021 shikemeng <shikemeng@huawei.com> 1.0-8
|
||||
- Add missing Requires
|
||||
- Remove write permssion in %file after strip
|
||||
- Change Requires numactl to numactl-libs
|
||||
|
||||
* Thu Sep 30 2021 yangxin <245051644@qq.com> 1.0-7
|
||||
- Update etmem and add new features memRouter and userswap.=
|
||||
|
||||
* Mon Aug 1 2021 louhongxiang <louhongxiang@huawei.com> 1.0-6
|
||||
- cancel write permission of root.
|
||||
|
||||
|
||||
4
etmem.yaml
Normal file
4
etmem.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
version_control: gitee
|
||||
src_repo: openEuler/etmem
|
||||
tag_prefix: ""
|
||||
seperator: .
|
||||
Loading…
x
Reference in New Issue
Block a user