tcp_memcontrol.h revision 1d62e43657c63a858560c98069706c705d20505d
1d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa#ifndef _TCP_MEMCG_H
2d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa#define _TCP_MEMCG_H
3d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa
4d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costastruct tcp_memcontrol {
5d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa	struct cg_proto cg_proto;
6d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa	/* per-cgroup tcp memory pressure knobs */
7d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa	struct res_counter tcp_memory_allocated;
8d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa	struct percpu_counter tcp_sockets_allocated;
9d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa	/* those two are read-mostly, leave them at the end */
10d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa	long tcp_prot_mem[3];
11d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa	int tcp_memory_pressure;
12d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa};
13d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa
14d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costastruct cg_proto *tcp_proto_cgroup(struct mem_cgroup *memcg);
151d62e43657c63a858560c98069706c705d20505dGlauber Costaint tcp_init_cgroup(struct mem_cgroup *memcg, struct cgroup_subsys *ss);
161d62e43657c63a858560c98069706c705d20505dGlauber Costavoid tcp_destroy_cgroup(struct mem_cgroup *memcg);
173aaabe2342c36bf48567b88fa78b819eee14bb5eGlauber Costaunsigned long long tcp_max_memory(const struct mem_cgroup *memcg);
183aaabe2342c36bf48567b88fa78b819eee14bb5eGlauber Costavoid tcp_prot_mem(struct mem_cgroup *memcg, long val, int idx);
19d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7Glauber Costa#endif /* _TCP_MEMCG_H */
20