From cd9e7e9d9137b62da84aa28b82109b60e0d3476c Mon Sep 17 00:00:00 2001 From: SangYoun Kwak Date: Wed, 29 Mar 2023 15:48:42 +0900 Subject: [PATCH] lowmem-controller: Move critical memory action from lowmem to controller For modulization, critical memory action is moved from lowmem.c(core) to lowmem-controller.c(controller) and this action will be assigned to lowmem.c by the initializer of controller. Change-Id: Ied7e33d21dd2f6055ad45cbd576521fa595d68a8 Signed-off-by: SangYoun Kwak --- src/resource-limiter/memory/lowmem-controller.c | 9 ++++++--- src/resource-limiter/memory/lowmem.c | 15 --------------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/src/resource-limiter/memory/lowmem-controller.c b/src/resource-limiter/memory/lowmem-controller.c index 8066072..7e9213e 100644 --- a/src/resource-limiter/memory/lowmem-controller.c +++ b/src/resource-limiter/memory/lowmem-controller.c @@ -384,10 +384,13 @@ static int critical_mem_act(void *data) { int scan_mode = KSM_SCAN_FULL; - if (dedup_prepare() < 0) - return RESOURCED_ERROR_FAIL; + if (dedup_prepare() >= 0) + resourced_notify(RESOURCED_NOTIFIER_DEDUP_SCAN, &scan_mode); - resourced_notify(RESOURCED_NOTIFIER_DEDUP_SCAN, &scan_mode); + lowmem_change_lowmem_state(MEM_LEVEL_CRITICAL); + resourced_notify(RESOURCED_NOTIFIER_SWAP_COMPACT, + (void *)SWAP_COMPACT_MEM_LEVEL_CRITICAL); + lowmem_memory_level_send_system_event(MEM_LEVEL_CRITICAL); return RESOURCED_ERROR_NONE; } diff --git a/src/resource-limiter/memory/lowmem.c b/src/resource-limiter/memory/lowmem.c index 3bf9bea..e972d2f 100644 --- a/src/resource-limiter/memory/lowmem.c +++ b/src/resource-limiter/memory/lowmem.c @@ -276,7 +276,6 @@ static void lowmem_request_destroy(gpointer data) /* low memory action function for cgroup */ /* low memory action function */ -static void swap_compact_act(void); static void lmk_act(void); struct lowmem_controller_ops { @@ -1029,13 +1028,6 @@ void lowmem_memory_level_send_system_event(int lv) bundle_free(b); } -static void swap_compact_act(void) -{ - lowmem_change_lowmem_state(MEM_LEVEL_CRITICAL); - resourced_notify(RESOURCED_NOTIFIER_SWAP_COMPACT, (void *)SWAP_COMPACT_MEM_LEVEL_CRITICAL); - lowmem_memory_level_send_system_event(MEM_LEVEL_CRITICAL); -} - static void medium_cb(struct lowmem_control *ctl) { if (ctl->status == LOWMEM_RECLAIM_DONE) @@ -1109,19 +1101,12 @@ void lowmem_trigger_memory_state_action(int mem_state) case MEM_LEVEL_HIGH: case MEM_LEVEL_MEDIUM: case MEM_LEVEL_LOW: - assert(lowmem_actions[mem_state].governor != NULL); - assert(lowmem_actions[mem_state].action != NULL); - if (lowmem_actions[mem_state].governor(NULL) < 0) - break; - lowmem_actions[mem_state].action(NULL); - break; case MEM_LEVEL_CRITICAL: assert(lowmem_actions[mem_state].governor != NULL); assert(lowmem_actions[mem_state].action != NULL); if (lowmem_actions[mem_state].governor(NULL) < 0) break; lowmem_actions[mem_state].action(NULL); - swap_compact_act(); break; case MEM_LEVEL_OOM: lmk_act(); -- 2.7.4