-#if defined(__KERNEL__) && defined(_VX_INFO_DEF_)
-
-#include <asm/atomic.h>
-#include <asm/resource.h>
-
-/* context sub struct */
-
-#define RLIMIT_OPENFD 12
-
-#define NUM_RLIMITS 16
-
-#define VLIMIT_SOCK 16
-
-
-struct _vx_limit {
- atomic_t ticks;
-
- unsigned long rlim[NUM_RLIMITS]; /* Per context limit */
- atomic_t res[NUM_RLIMITS]; /* Current value */
-};
-
-static inline void vx_info_init_limit(struct _vx_limit *limit)
-{
- int lim;
-
- for (lim=0; lim<NUM_RLIMITS; lim++) {
- limit->rlim[lim] = RLIM_INFINITY;
- atomic_set(&limit->res[lim], 0);
- }
-}
-
-extern unsigned int vx_debug_limit;
-
-static inline void vx_info_exit_limit(struct _vx_limit *limit)
-{
- int lim, value;
-
- for (lim=0; lim<NUM_RLIMITS; lim++) {
- value = atomic_read(&limit->res[lim]);
- if (value && vx_debug_limit)
- printk("!!! limit: %p[%d] = %d on exit.\n",
- limit, lim, value);
- }
-}
-
-
-static inline int vx_info_proc_limit(struct _vx_limit *limit, char *buffer)
-{
- return sprintf(buffer,
- "PROC:\t%8d/%ld\n"
- "VM:\t%8d/%ld\n"
- "VML:\t%8d/%ld\n"
- "RSS:\t%8d/%ld\n"
- "FILES:\t%8d/%ld\n"
- "OFD:\t%8d/%ld\n"
- ,atomic_read(&limit->res[RLIMIT_NPROC])
- ,limit->rlim[RLIMIT_NPROC]
- ,atomic_read(&limit->res[RLIMIT_AS])
- ,limit->rlim[RLIMIT_AS]
- ,atomic_read(&limit->res[RLIMIT_MEMLOCK])
- ,limit->rlim[RLIMIT_MEMLOCK]
- ,atomic_read(&limit->res[RLIMIT_RSS])
- ,limit->rlim[RLIMIT_RSS]
- ,atomic_read(&limit->res[RLIMIT_NOFILE])
- ,limit->rlim[RLIMIT_NOFILE]
- ,atomic_read(&limit->res[RLIMIT_OPENFD])
- ,limit->rlim[RLIMIT_OPENFD]
- );
-}
-
-#else /* _VX_INFO_DEF_ */