1224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#ifndef _UAPI_LINUX_RESOURCE_H 2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define _UAPI_LINUX_RESOURCE_H 3224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/time.h> 5224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/types.h> 6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Resource control/accounting header file for linux 9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 11224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 12224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Definition of struct rusage taken from BSD 4.3 Reno 13224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 14224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * We don't support all of these yet, but we might as well have them.... 15224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Otherwise, each time we add new items, programs which depend on this 16224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * structure will lose. This reduces the chances of that happening. 17224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 18224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define RUSAGE_SELF 0 19224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define RUSAGE_CHILDREN (-1) 20224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define RUSAGE_BOTH (-2) /* sys_wait4() uses this */ 21224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define RUSAGE_THREAD 1 /* only the calling thread */ 22224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 23224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct rusage { 24224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct timeval ru_utime; /* user time used */ 25224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct timeval ru_stime; /* system time used */ 26e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_maxrss; /* maximum resident set size */ 27e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_ixrss; /* integral shared memory size */ 28e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_idrss; /* integral unshared data size */ 29e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_isrss; /* integral unshared stack size */ 30e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_minflt; /* page reclaims */ 31e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_majflt; /* page faults */ 32e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_nswap; /* swaps */ 33e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_inblock; /* block input operations */ 34e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_oublock; /* block output operations */ 35e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_msgsnd; /* messages sent */ 36e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_msgrcv; /* messages received */ 37e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_nsignals; /* signals received */ 38e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_nvcsw; /* voluntary context switches */ 39e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_long_t ru_nivcsw; /* involuntary " */ 40224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 41224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 42224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct rlimit { 43e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_ulong_t rlim_cur; 44e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __kernel_ulong_t rlim_max; 45224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 46224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 47224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define RLIM64_INFINITY (~0ULL) 48224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 49224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct rlimit64 { 50224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 rlim_cur; 51224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u64 rlim_max; 52224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 53224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 54224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PRIO_MIN (-20) 55224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PRIO_MAX 20 56224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 57224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PRIO_PROCESS 0 58224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PRIO_PGRP 1 59224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define PRIO_USER 2 60224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 61224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 62224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Limit the stack by to some sane default: root can always 63224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * increase this limit if needed.. 8MB seems reasonable. 64224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 65224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define _STK_LIM (8*1024*1024) 66224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 67224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 68224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * GPG2 wants 64kB of mlocked memory, to make sure pass phrases 69224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * and other sensitive information are never written to disk. 70224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 71224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define MLOCK_LIMIT ((PAGE_SIZE > 64*1024) ? PAGE_SIZE : 64*1024) 72224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 73224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 74224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Due to binary compatibility, the actual resource numbers 75224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * may be different for different linux versions.. 76224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 77224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <asm/resource.h> 78224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 79224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 80224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#endif /* _UAPI_LINUX_RESOURCE_H */ 81