cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

vmpressure.h (1724B)


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