linux/include/linux/vmpressure.h
<<
>>
Prefs
   1#ifndef __LINUX_VMPRESSURE_H
   2#define __LINUX_VMPRESSURE_H
   3
   4#include <linux/mutex.h>
   5#include <linux/list.h>
   6#include <linux/workqueue.h>
   7#include <linux/gfp.h>
   8#include <linux/types.h>
   9#include <linux/cgroup.h>
  10#include <linux/eventfd.h>
  11
  12struct vmpressure {
  13        unsigned long scanned;
  14        unsigned long reclaimed;
  15
  16        unsigned long tree_scanned;
  17        unsigned long tree_reclaimed;
  18        /* The lock is used to keep the scanned/reclaimed above in sync. */
  19        struct spinlock sr_lock;
  20
  21        /* The list of vmpressure_event structs. */
  22        struct list_head events;
  23        /* Have to grab the lock on events traversal or modifications. */
  24        struct mutex events_lock;
  25
  26        struct work_struct work;
  27};
  28
  29struct mem_cgroup;
  30
  31#ifdef CONFIG_MEMCG
  32extern void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
  33                       unsigned long scanned, unsigned long reclaimed);
  34extern void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio);
  35
  36extern void vmpressure_init(struct vmpressure *vmpr);
  37extern void vmpressure_cleanup(struct vmpressure *vmpr);
  38extern struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg);
  39extern struct cgroup_subsys_state *vmpressure_to_css(struct vmpressure *vmpr);
  40extern int vmpressure_register_event(struct mem_cgroup *memcg,
  41                                     struct eventfd_ctx *eventfd,
  42                                     const char *args);
  43extern void vmpressure_unregister_event(struct mem_cgroup *memcg,
  44                                        struct eventfd_ctx *eventfd);
  45#else
  46static inline void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
  47                              unsigned long scanned, unsigned long reclaimed) {}
  48static inline void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg,
  49                                   int prio) {}
  50#endif /* CONFIG_MEMCG */
  51#endif /* __LINUX_VMPRESSURE_H */
  52