{
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;
}
/* 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 {
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)
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();