ANDROID: ashmem: dynamically allocate the android-ashmem shrinker
Old APIs are removed since the upstream commit
f2383e0150 ("mm: shrinker: remove old APIs").
So use the new APIs to dynamically allocate the
android-ashmem shrinker.
Bug: 146449535
Change-Id: I1100b9eb66886c3350c780a759f66f6a3807d52f
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
committed by
Treehugger Robot
parent
95f9b6b044
commit
967e7533ac
@@ -527,15 +527,26 @@ ashmem_shrink_count(struct shrinker *shrink, struct shrink_control *sc)
|
||||
return lru_count;
|
||||
}
|
||||
|
||||
static struct shrinker ashmem_shrinker = {
|
||||
.count_objects = ashmem_shrink_count,
|
||||
.scan_objects = ashmem_shrink_scan,
|
||||
static struct shrinker *ashmem_shrinker;
|
||||
|
||||
static int __init ashmem_init_shrinker(void)
|
||||
{
|
||||
ashmem_shrinker = shrinker_alloc(0, "android-ashmem");
|
||||
if (!ashmem_shrinker)
|
||||
return -ENOMEM;
|
||||
|
||||
ashmem_shrinker->count_objects = ashmem_shrink_count;
|
||||
ashmem_shrinker->scan_objects = ashmem_shrink_scan;
|
||||
/*
|
||||
* XXX (dchinner): I wish people would comment on why they need on
|
||||
* significant changes to the default value here
|
||||
*/
|
||||
.seeks = DEFAULT_SEEKS * 4,
|
||||
};
|
||||
ashmem_shrinker->seeks = DEFAULT_SEEKS * 4;
|
||||
|
||||
shrinker_register(ashmem_shrinker);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int set_prot_mask(struct ashmem_area *asma, unsigned long prot)
|
||||
{
|
||||
@@ -860,8 +871,8 @@ static long ashmem_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
.gfp_mask = GFP_KERNEL,
|
||||
.nr_to_scan = LONG_MAX,
|
||||
};
|
||||
ret = ashmem_shrink_count(&ashmem_shrinker, &sc);
|
||||
ashmem_shrink_scan(&ashmem_shrinker, &sc);
|
||||
ret = ashmem_shrink_count(ashmem_shrinker, &sc);
|
||||
ashmem_shrink_scan(ashmem_shrinker, &sc);
|
||||
}
|
||||
break;
|
||||
case ASHMEM_GET_FILE_ID:
|
||||
@@ -969,7 +980,7 @@ static int __init ashmem_init(void)
|
||||
goto out_free2;
|
||||
}
|
||||
|
||||
ret = register_shrinker(&ashmem_shrinker, "android-ashmem");
|
||||
ret = ashmem_init_shrinker();
|
||||
if (ret) {
|
||||
pr_err("failed to register shrinker!\n");
|
||||
goto out_demisc;
|
||||
|
||||
Reference in New Issue
Block a user