vserver 1.9.5.x5
[linux-2.6.git] / include / linux / vs_memory.h
index 43cde1a..2944c8a 100644 (file)
@@ -1,22 +1,19 @@
 #ifndef _VX_VS_MEMORY_H
 #define _VX_VS_MEMORY_H
 
-#include <linux/kernel.h>
-#include <linux/rcupdate.h>
-#include <linux/sched.h>
 
-#include "vserver/context.h"
 #include "vserver/limit.h"
 #include "vserver/debug.h"
 
 
-#define vx_acc_page(m, d, v, r) \
+#define vx_acc_page(m,d,v,r) \
        __vx_acc_page(&(m->v), m->mm_vx_info, r, d, __FILE__, __LINE__)
 
 static inline void __vx_acc_page(unsigned long *v, struct vx_info *vxi,
                int res, int dir, char *file, int line)
 {
        if (VXD_RLIMIT(res, RLIMIT_RSS) ||
+               VXD_RLIMIT(res, VLIMIT_ANON) ||
                VXD_RLIMIT(res, RLIMIT_AS) ||
                VXD_RLIMIT(res, RLIMIT_MEMLOCK))
                vxlprintk(1, "vx_acc_page[%5d,%s,%2d]: %5d%s",
@@ -38,13 +35,14 @@ static inline void __vx_acc_page(unsigned long *v, struct vx_info *vxi,
 }
 
 
-#define vx_acc_pages(m, p, v, r) \
+#define vx_acc_pages(m,p,v,r) \
        __vx_acc_pages(&(m->v), m->mm_vx_info, r, p, __FILE__, __LINE__)
 
 static inline void __vx_acc_pages(unsigned long *v, struct vx_info *vxi,
                int res, int pages, char *_file, int _line)
 {
        if (VXD_RLIMIT(res, RLIMIT_RSS) ||
+               VXD_RLIMIT(res, VLIMIT_ANON) ||
                VXD_RLIMIT(res, RLIMIT_AS) ||
                VXD_RLIMIT(res, RLIMIT_MEMLOCK))
                vxlprintk(1, "vx_acc_pages[%5d,%s,%2d]: %5d += %5d",
@@ -64,10 +62,12 @@ static inline void __vx_acc_pages(unsigned long *v, struct vx_info *vxi,
 #define vx_acc_vmpage(m,d)     vx_acc_page(m, d, total_vm,  RLIMIT_AS)
 #define vx_acc_vmlpage(m,d)    vx_acc_page(m, d, locked_vm, RLIMIT_MEMLOCK)
 #define vx_acc_rsspage(m,d)    vx_acc_page(m, d, rss,       RLIMIT_RSS)
+#define vx_acc_anonpage(m,d)   vx_acc_page(m, d, anon_rss,  VLIMIT_ANON)
 
 #define vx_acc_vmpages(m,p)    vx_acc_pages(m, p, total_vm,  RLIMIT_AS)
 #define vx_acc_vmlpages(m,p)   vx_acc_pages(m, p, locked_vm, RLIMIT_MEMLOCK)
 #define vx_acc_rsspages(m,p)   vx_acc_pages(m, p, rss,       RLIMIT_RSS)
+#define vx_acc_anonpages(m,p)  vx_acc_pages(m, p, anon_rss,  VLIMIT_ANON)
 
 #define vx_pages_add(s,r,p)    __vx_acc_pages(0, s, r, p, __FILE__, __LINE__)
 #define vx_pages_sub(s,r,p)    vx_pages_add(s, r, -(p))
@@ -87,10 +87,14 @@ static inline void __vx_acc_pages(unsigned long *v, struct vx_info *vxi,
 #define vx_rsspages_add(m,p)   vx_acc_rsspages(m, p)
 #define vx_rsspages_sub(m,p)   vx_acc_rsspages(m,-(p))
 
+#define vx_anonpages_inc(m)    vx_acc_anonpage(m, 1)
+#define vx_anonpages_dec(m)    vx_acc_anonpage(m,-1)
+#define vx_anonpages_add(m,p)  vx_acc_anonpages(m, p)
+#define vx_anonpages_sub(m,p)  vx_acc_anonpages(m,-(p))
 
 
-#define vx_pages_avail(m, p, r) \
-       __vx_pages_avail((m)->mm_vx_info, (r), (p), __FILE__, __LINE__)
+#define vx_pages_avail(m,p,r) \
+       __vx_pages_avail((m)->mm_vx_info, r, p, __FILE__, __LINE__)
 
 static inline int __vx_pages_avail(struct vx_info *vxi,
                int res, int pages, char *_file, int _line)
@@ -121,6 +125,7 @@ static inline int __vx_pages_avail(struct vx_info *vxi,
 #define vx_vmpages_avail(m,p)  vx_pages_avail(m, p, RLIMIT_AS)
 #define vx_vmlocked_avail(m,p) vx_pages_avail(m, p, RLIMIT_MEMLOCK)
 #define vx_rsspages_avail(m,p) vx_pages_avail(m, p, RLIMIT_RSS)
+#define vx_anonpages_avail(m,p)        vx_pages_avail(m, p, VLIMIT_ANON)
 
 #else
 #warning duplicate inclusion