16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2607ca46eSDavid Howells #ifndef _UAPI_LINUX_RESOURCE_H 3607ca46eSDavid Howells #define _UAPI_LINUX_RESOURCE_H 4607ca46eSDavid Howells 5*1ef83969SKent Overstreet #include <linux/time_types.h> 6607ca46eSDavid Howells #include <linux/types.h> 7607ca46eSDavid Howells 8607ca46eSDavid Howells /* 9607ca46eSDavid Howells * Resource control/accounting header file for linux 10607ca46eSDavid Howells */ 11607ca46eSDavid Howells 12607ca46eSDavid Howells /* 13607ca46eSDavid Howells * Definition of struct rusage taken from BSD 4.3 Reno 14607ca46eSDavid Howells * 15607ca46eSDavid Howells * We don't support all of these yet, but we might as well have them.... 16607ca46eSDavid Howells * Otherwise, each time we add new items, programs which depend on this 17607ca46eSDavid Howells * structure will lose. This reduces the chances of that happening. 18607ca46eSDavid Howells */ 19607ca46eSDavid Howells #define RUSAGE_SELF 0 20607ca46eSDavid Howells #define RUSAGE_CHILDREN (-1) 21607ca46eSDavid Howells #define RUSAGE_BOTH (-2) /* sys_wait4() uses this */ 22607ca46eSDavid Howells #define RUSAGE_THREAD 1 /* only the calling thread */ 23607ca46eSDavid Howells 24607ca46eSDavid Howells struct rusage { 25bdd565f8SArnd Bergmann struct __kernel_old_timeval ru_utime; /* user time used */ 26bdd565f8SArnd Bergmann struct __kernel_old_timeval ru_stime; /* system time used */ 27b684bfedSH.J. Lu __kernel_long_t ru_maxrss; /* maximum resident set size */ 28b684bfedSH.J. Lu __kernel_long_t ru_ixrss; /* integral shared memory size */ 29b684bfedSH.J. Lu __kernel_long_t ru_idrss; /* integral unshared data size */ 30b684bfedSH.J. Lu __kernel_long_t ru_isrss; /* integral unshared stack size */ 31b684bfedSH.J. Lu __kernel_long_t ru_minflt; /* page reclaims */ 32b684bfedSH.J. Lu __kernel_long_t ru_majflt; /* page faults */ 33b684bfedSH.J. Lu __kernel_long_t ru_nswap; /* swaps */ 34b684bfedSH.J. Lu __kernel_long_t ru_inblock; /* block input operations */ 35b684bfedSH.J. Lu __kernel_long_t ru_oublock; /* block output operations */ 36b684bfedSH.J. Lu __kernel_long_t ru_msgsnd; /* messages sent */ 37b684bfedSH.J. Lu __kernel_long_t ru_msgrcv; /* messages received */ 38b684bfedSH.J. Lu __kernel_long_t ru_nsignals; /* signals received */ 39b684bfedSH.J. Lu __kernel_long_t ru_nvcsw; /* voluntary context switches */ 40b684bfedSH.J. Lu __kernel_long_t ru_nivcsw; /* involuntary " */ 41607ca46eSDavid Howells }; 42607ca46eSDavid Howells 43607ca46eSDavid Howells struct rlimit { 44b684bfedSH.J. Lu __kernel_ulong_t rlim_cur; 45b684bfedSH.J. Lu __kernel_ulong_t rlim_max; 46607ca46eSDavid Howells }; 47607ca46eSDavid Howells 48607ca46eSDavid Howells #define RLIM64_INFINITY (~0ULL) 49607ca46eSDavid Howells 50607ca46eSDavid Howells struct rlimit64 { 51607ca46eSDavid Howells __u64 rlim_cur; 52607ca46eSDavid Howells __u64 rlim_max; 53607ca46eSDavid Howells }; 54607ca46eSDavid Howells 55607ca46eSDavid Howells #define PRIO_MIN (-20) 56607ca46eSDavid Howells #define PRIO_MAX 20 57607ca46eSDavid Howells 58607ca46eSDavid Howells #define PRIO_PROCESS 0 59607ca46eSDavid Howells #define PRIO_PGRP 1 60607ca46eSDavid Howells #define PRIO_USER 2 61607ca46eSDavid Howells 62607ca46eSDavid Howells /* 63607ca46eSDavid Howells * Limit the stack by to some sane default: root can always 64607ca46eSDavid Howells * increase this limit if needed.. 8MB seems reasonable. 65607ca46eSDavid Howells */ 66607ca46eSDavid Howells #define _STK_LIM (8*1024*1024) 67607ca46eSDavid Howells 68607ca46eSDavid Howells /* 699dcc38e2SDrew DeVault * Limit the amount of locked memory by some sane default: 709dcc38e2SDrew DeVault * root can always increase this limit if needed. 719dcc38e2SDrew DeVault * 729dcc38e2SDrew DeVault * The main use-cases are (1) preventing sensitive memory 739dcc38e2SDrew DeVault * from being swapped; (2) real-time operations; (3) via 749dcc38e2SDrew DeVault * IOURING_REGISTER_BUFFERS. 759dcc38e2SDrew DeVault * 769dcc38e2SDrew DeVault * The first two don't need much. The latter will take as 779dcc38e2SDrew DeVault * much as it can get. 8MB is a reasonably sane default. 78607ca46eSDavid Howells */ 799dcc38e2SDrew DeVault #define MLOCK_LIMIT (8*1024*1024) 80607ca46eSDavid Howells 81607ca46eSDavid Howells /* 82607ca46eSDavid Howells * Due to binary compatibility, the actual resource numbers 83607ca46eSDavid Howells * may be different for different linux versions.. 84607ca46eSDavid Howells */ 85607ca46eSDavid Howells #include <asm/resource.h> 86607ca46eSDavid Howells 87607ca46eSDavid Howells 88607ca46eSDavid Howells #endif /* _UAPI_LINUX_RESOURCE_H */ 89