MAJOR=4
MINOR=25
DEVNAME=tty25
 ¼    /* SPDX-License-Identifier: GPL-2.0 */
#ifndef __LINUX_VMPRESSURE_H
#define __LINUX_VMPRESSURE_H

#include <linux/mutex.h>
#include <linux/list.h>
#include <linux/workqueue.h>
#include <linux/gfp.h>
#include <linux/types.h>
#include <linux/cgroup.h>
#include <linux/eventfd.h>

struct vmpressure {
	unsigned long scanned;
	unsigned long reclaimed;

	unsigned long tree_scanned;
	unsigned long tree_reclaimed;
	/* The lock is used to keep the scanned/reclaimed above in sync. */
	spinlock_t sr_lock;

	/* The list of vmpressure_event structs. */
	struct list_head events;
	/* Have to grab the lock on events traversal or modifications. */
	struct mutex events_lock;

	struct work_struct work;
};

struct mem_cgroup;

#ifdef CONFIG_MEMCG
extern void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
		       unsigned long scanned, unsigned long reclaimed);
extern void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio);

extern void vmpressure_init(struct vmpressure *vmpr);
extern void vmpressure_cleanup(struct vmpressure *vmpr);
extern struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg);
extern struct mem_cgroup *vmpressure_to_memcg(struct vmpressure *vmpr);
extern int vmpressure_register_event(struct mem_cgroup *memcg,
				     struct eventfd_ctx *eventfd,
				     const char *args);
extern void vmpressure_unregister_event(struct mem_cgroup *memcg,
					struct eventfd_ctx *eventfd);
#else
static inline void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
			      unsigned long scanned, unsigned long reclaimed) {}
static inline void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg,
				   int prio) {}
#endif /* CONFIG_MEMCG */
#endif /* __LINUX_VMPRESSURE_H */
 ?÷     ý7zXZ  i"Þ6 !   t/å£ì½@ŒÁÆ:“¦'zänåžäðú…,”þñÝÈõzM\MBÀæ¬ß3½,�µ›gÂ¬fç‘IÂmàl*FU^ŒÑøÊcÏ8[ÆåŽœ,+–y×òiL)Ë¹©ú‘S1Û½BÇ*­—¢�Àˆ8¸)UïS óÁB<”ŠÖ„=ºM§3úxx?.ÒØ¥<&º¹xjØüJ›1#HnùÚHó½"ÿO×¾‘L4­Ÿ¡v\«Ü
øx<Ó6ÊÒ
úõãìîI7ø�w¨Y(¹mãH1[2iy¨«7Y âí¾Ú‹&b²´k©c˜eöm°²G` KÈ'É�]ÛšMd{ æ°?‰nëÊõ²vð€7/F|)ª¹5clà‡ý{¤èõõôÙ&rÉTU+¯@¶^ÔûaˆCô™– ÞP»ÿôÒ‚­cµ»8‘b‰o‡Á¥b»×ë"»àþ¦‹«Û!¢r<¶†7ðó—'{Ôê+lIÄ]s¡X9),‰ö�ÓÍ¾,9Kà/°,‰ùäÔ3Ù2ÐºÈ5K>½Y Ü�‡æÍWuÞL„Fqw™jZé™ì»šQØ7É¦uœ'%¯íB0›FÇ[éî¢ýÍ]# Ø:9w´¨Ý&ºXMª~Izò
?í€x�7q7+ÔµóC‹Ê“û9ÞËMwˆô3˜ 
áp•qYŽ¨Ÿ“ÿÐšs5�.püÌŸ´!»J�û§­K<áòwy¨Û§GQ²ªuÀ•8§É¥5ËZ¦Ž�H™æÃ¸DÊûZDïÉðÒ¼æ¸ç�çb²¦`hëàjLT€Úéà�ËÐÜ£`œßú�¯; Ûðÿ6YI©—0€JW±w.¹zÅ=¿\ýSq�<£<ø|™i|;�“*ºòQNç’×yÜÜ�7kq4áÎ6Ýu8	›1ÃJpv™*ÁÂ[DêI¹=žÿ»×»$øVc˜*Ùcï{~T([·/Ûu[jŠ“ƒ%)þå{Á|ò„2QpËÁ‚­—Dû–âoÁå+%�'2b{:%¶«4¾Ë`þØª-jŸ%ZX\’3‹Í@˜HŠB·_…ê"�@ú�¸ræ#ÏÀZÌ*­÷m4óÙü‚¶v€ÍÚ¤±#<&z?XYë‰iæo…4<jï¨�Æ�é4/«a³ú-íDþ]ì4¨êUxBdÅ¾¨Õ²,¼3€ÅÃþªßè¿p�#þ5Ûò0|”eÖå?™líUhrbFÃwÇ]%O‰©N¤ïcD¸á»;)›áºœ¢ßÖ	(g�óÉÁ“Ü–sÞ"Æ,¸q‘ÒQÈ3?0Ä3×&”dŽ”}“Ç}’°J&èðqzQîL­­=óÒ	ÕZX$ ”H^ÅæG(†û…€?‰Å[¸Š¾LyK/“’â>É×ÐÆABí§£:I§@ºqÖðºh.­‚Å#	Qi
s3ÌöDþùºð·¿VÊv¨�H‰ÄþxX+«5óRIpÏ:8£Þþ`f�qy™`èTŸöþƒÈµ�¶Â q7à…9‰'œ˜%µµ`‹dß¨ñ|ú†ˆñ@@L®³òA°÷…bÈ‘»Ô£½½ù@r²º(}»F£Â�íoµYq†ÐH^NZÈü*¯ ˜à>@¯àô+œ}c©Þ–›%¨±ÿ{T‚ôõ÷ˆ�—àgX¥Fr?$…„º˜KÁ4·5�.mÔIô‡Âsh¥aªåÄ{o8Ãõþ›5’^ð¶A2ÏçPt+AÏøº)Î¼3>H#×·š\Îø�AfÏû8¨íoƒÉÙ·�HséöÇÜ±ôÙúFíÖP|Q´°dhÊ¢Å€U@F«~uzÎÀ$¼éTÙÖäãA\Yáî1:øÇØÌ½V”xÍ/Ib Ä ™n¡—’hÕF›úÐÈæXâ\oÝ˜e,4x)GIF�5´û`h¹ÑôµŸ®ÙÞ ÷OÐß¡V·xž9å)¬QG÷–•´¥
cj˜>DEåíukö‘ òêR%Ão?û¶6és+2j+åãÆŽF^”)n¨¶…	ªøPfyËsò^:ÊbF·š¤D3^‰{¿OQ¬vê¿ƒh¾"Y=­p	cZ@æN \§$¯Z˜®¨yòÔØ}°AtWh¿õÌê¸^s@à,üÀ{ÿ$ž·Ö&]_;§8Éÿòqšöæ	Dõ1|O·ýaX÷û…€!Éô¢ÜäÇ¢?ðóÓ•�Eû$t8“�Ø›à‰Ìý^Ž×0Q^­�ãýZý¼éKZ¶ü0æÏRæ[„aV%\ÀhuÄw’Ý‘¯ÈVrF7vÐ”Ú–ëYª:äÅÆÿcra’+37
õÚn!‘Ö8.J‡“kX$“T"ún÷	o¾zà ‚ƒÝ*±D*-uÁ›ž­ø™’ï Õ.C‚dÖ–�vð¸n§&šº˜H­cygdö‹�ÀO9ÈùÞ¾K¦”eîèÎyˆC}'EnE!IÝ ¤–50ø®ô?hå`/Ëšƒdæ0�ƒ6Ýfr
3U '­¼ÕWÉSöšS^'�z<›o3èenÀžÈÃé H²JX¤mv›æþ�PI·kŠî3~¼Î¯2c, ,WÞŸõ£^J£Ð´Í;¿ñäŒû¼ú'&a®BéR Ç"!M *E+Šf§²(Á´<AkqõœMf»´V+\ã¼Ï®þjfÿÅoþL¸´’h„�ÇŽ«s{�ý$? �ºÝ‰O‡ðâœÀW€EÀ¹¿(€JlIÀ$ö.ÿ¼²]–�ågˆ½Çjq¤ÓÙ×M^D�/Õ.Îµ¹”Ây�ËÏ^ü|¤ðogÏ'–™SälL@FLqÌ»å±XgW³~ˆ*ˆwƒh8H¶(WxQ	_¡ùê®ø�ú±ä[>²¥±oÎ“.ÌƒWÒÞ‘œHX+" F¹ÃŽúÿ\†‡Ê†³k¿Ôq /×™J6dLíü¥¥BjÂÓ{ù¥¨zñÀŒp/ÐºDø#ŽrÔŠÝ�–‡t5t	†XQýqûÏó°B�ºçÓP!‚xŽ!ñ8A