aboutsummaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorVinayak Menon <vinmenon@codeaurora.org>2015-03-04 16:38:28 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2015-03-23 01:48:49 -0700
commit52e8d6ef19b1c26e4a28604812ea99ba45dd2b4e (patch)
treec01a2b2a41e73e81cde0f5bc491e544c972e4384 /include/linux
parentb428221737823557987d96b0be5c2ac564ba1d7e (diff)
downloadqcom-msm-v3.10-52e8d6ef19b1c26e4a28604812ea99ba45dd2b4e.tar.gz
mm: vmpressure: allow in-kernel clients to subscribe for events
Currently, vmpressure is tied to memcg and its events are available only to userspace clients. This patch removes the dependency on CONFIG_MEMCG and adds a mechanism for in-kernel clients to subscribe for vmpressure events (in fact raw vmpressure values are delivered instead of vmpressure levels, to provide clients more flexibility to take actions on custom pressure levels which are not currently defined by vmpressure module). Change-Id: I38010f166546e8d7f12f5f355b5dbfd6ba04d587 Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/vmpressure.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/include/linux/vmpressure.h b/include/linux/vmpressure.h
index 76be077340e..f62cf53b9d9 100644
--- a/include/linux/vmpressure.h
+++ b/include/linux/vmpressure.h
@@ -24,11 +24,13 @@ struct vmpressure {
struct mem_cgroup;
-#ifdef CONFIG_MEMCG
+extern int vmpressure_notifier_register(struct notifier_block *nb);
+extern int vmpressure_notifier_unregister(struct notifier_block *nb);
extern void vmpressure(gfp_t gfp, struct mem_cgroup *memcg,
unsigned long scanned, unsigned long reclaimed);
extern void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio);
+#ifdef CONFIG_MEMCG
extern void vmpressure_init(struct vmpressure *vmpr);
extern struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg);
extern struct cgroup_subsys_state *vmpressure_to_css(struct vmpressure *vmpr);
@@ -39,9 +41,9 @@ extern int vmpressure_register_event(struct cgroup *cg, struct cftype *cft,
extern void vmpressure_unregister_event(struct cgroup *cg, struct cftype *cft,
struct eventfd_ctx *eventfd);
#else
-static inline void vmpressure(gfp_t gfp, struct mem_cgroup *memcg,
- unsigned long scanned, unsigned long reclaimed) {}
-static inline void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg,
- int prio) {}
+static inline struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg)
+{
+ return NULL;
+}
#endif /* CONFIG_MEMCG */
#endif /* __LINUX_VMPRESSURE_H */