Commit 98a1031e authored by Ingo Molnar's avatar Ingo Molnar Committed by Linus Torvalds

[PATCH] clean up and unify asm-*/resource.h files

This patch does the final consolidation of asm-*/resource.h file, without
changing any of the rlimit definitions on any architecture.  Primarily it
removes the __ARCH_RLIMIT_ORDER method and replaces it with a more compact
and isolated one that allows architectures to define only the offending
rlimits.

This method has the positive effect that adding a new rlimit can now be
purely done via changing asm-generic/resource.h alone.  Previously one
would have to patch 4 other (sparc, sparc64, alpha and mips) resource.h
files.

The patch also does style unification, whitespace cleanups and
simplification of resource.h files and cleans up the asm-generic/resource.h
file as well.  I've added more comments too.

This patch should have no effect on any code on any architecture.  (i.e.
it's a pure identity patch.)

Tested on x86 and carefully reviewed to make sure that Sparc, Sparc64,
MIPS and Alpha rlimits are still the same as required by the ABI.
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Acked-by: default avatarChris Wright <chrisw@osdl.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 54f1a7a7
...@@ -2,32 +2,20 @@ ...@@ -2,32 +2,20 @@
#define _ALPHA_RESOURCE_H #define _ALPHA_RESOURCE_H
/* /*
* Resource limits * Alpha/Linux-specific ordering of these four resource limit IDs,
* the rest comes from the generic header:
*/ */
#define RLIMIT_NOFILE 6 /* max number of open files */
#define RLIMIT_CPU 0 /* CPU time in ms */ #define RLIMIT_AS 7 /* address space limit */
#define RLIMIT_FSIZE 1 /* Maximum filesize */ #define RLIMIT_NPROC 8 /* max number of processes */
#define RLIMIT_DATA 2 /* max data size */ #define RLIMIT_MEMLOCK 9 /* max locked-in-memory address space */
#define RLIMIT_STACK 3 /* max stack size */
#define RLIMIT_CORE 4 /* max core file size */
#define RLIMIT_RSS 5 /* max resident set size */
#define RLIMIT_NOFILE 6 /* max number of open files */
#define RLIMIT_AS 7 /* address space limit(?) */
#define RLIMIT_NPROC 8 /* max number of processes */
#define RLIMIT_MEMLOCK 9 /* max locked-in-memory address space */
#define RLIMIT_LOCKS 10 /* maximum file locks held */
#define RLIMIT_SIGPENDING 11 /* max number of pending signals */
#define RLIMIT_MSGQUEUE 12 /* maximum bytes in POSIX mqueues */
#define RLIM_NLIMITS 13
#define __ARCH_RLIMIT_ORDER
/* /*
* SuS says limits have to be unsigned. Fine, it's unsigned, but * SuS says limits have to be unsigned. Fine, it's unsigned, but
* we retain the old value for compatibility, especially with DU. * we retain the old value for compatibility, especially with DU.
* When you run into the 2^63 barrier, you call me. * When you run into the 2^63 barrier, you call me.
*/ */
#define RLIM_INFINITY 0x7ffffffffffffffful #define RLIM_INFINITY 0x7ffffffffffffffful
#include <asm-generic/resource.h> #include <asm-generic/resource.h>
......
...@@ -2,57 +2,85 @@ ...@@ -2,57 +2,85 @@
#define _ASM_GENERIC_RESOURCE_H #define _ASM_GENERIC_RESOURCE_H
/* /*
* Resource limits * Resource limit IDs
*
* ( Compatibility detail: there are architectures that have
* a different rlimit ID order in the 5-9 range and want
* to keep that order for binary compatibility. The reasons
* are historic and all new rlimits are identical across all
* arches. If an arch has such special order for some rlimits
* then it defines them prior including asm-generic/resource.h. )
*/ */
/* Allow arch to control resource order */
#ifndef __ARCH_RLIMIT_ORDER
#define RLIMIT_CPU 0 /* CPU time in ms */ #define RLIMIT_CPU 0 /* CPU time in ms */
#define RLIMIT_FSIZE 1 /* Maximum filesize */ #define RLIMIT_FSIZE 1 /* Maximum filesize */
#define RLIMIT_DATA 2 /* max data size */ #define RLIMIT_DATA 2 /* max data size */
#define RLIMIT_STACK 3 /* max stack size */ #define RLIMIT_STACK 3 /* max stack size */
#define RLIMIT_CORE 4 /* max core file size */ #define RLIMIT_CORE 4 /* max core file size */
#define RLIMIT_RSS 5 /* max resident set size */
#define RLIMIT_NPROC 6 /* max number of processes */ #ifndef RLIMIT_RSS
#define RLIMIT_NOFILE 7 /* max number of open files */ # define RLIMIT_RSS 5 /* max resident set size */
#define RLIMIT_MEMLOCK 8 /* max locked-in-memory address space */ #endif
#define RLIMIT_AS 9 /* address space limit */
#ifndef RLIMIT_NPROC
# define RLIMIT_NPROC 6 /* max number of processes */
#endif
#ifndef RLIMIT_NOFILE
# define RLIMIT_NOFILE 7 /* max number of open files */
#endif
#ifndef RLIMIT_MEMLOCK
# define RLIMIT_MEMLOCK 8 /* max locked-in-memory address space */
#endif
#ifndef RLIMIT_AS
# define RLIMIT_AS 9 /* address space limit */
#endif
#define RLIMIT_LOCKS 10 /* maximum file locks held */ #define RLIMIT_LOCKS 10 /* maximum file locks held */
#define RLIMIT_SIGPENDING 11 /* max number of pending signals */ #define RLIMIT_SIGPENDING 11 /* max number of pending signals */
#define RLIMIT_MSGQUEUE 12 /* maximum bytes in POSIX mqueues */ #define RLIMIT_MSGQUEUE 12 /* maximum bytes in POSIX mqueues */
#define RLIM_NLIMITS 13 #define RLIM_NLIMITS 13
#endif
/* /*
* SuS says limits have to be unsigned. * SuS says limits have to be unsigned.
* Which makes a ton more sense anyway. * Which makes a ton more sense anyway.
*
* Some architectures override this (for compatibility reasons):
*/ */
#ifndef RLIM_INFINITY #ifndef RLIM_INFINITY
#define RLIM_INFINITY (~0UL) # define RLIM_INFINITY (~0UL)
#endif #endif
/*
* RLIMIT_STACK default maximum - some architectures override it:
*/
#ifndef _STK_LIM_MAX #ifndef _STK_LIM_MAX
#define _STK_LIM_MAX RLIM_INFINITY # define _STK_LIM_MAX RLIM_INFINITY
#endif #endif
#ifdef __KERNEL__ #ifdef __KERNEL__
/*
* boot-time rlimit defaults for the init task:
*/
#define INIT_RLIMITS \ #define INIT_RLIMITS \
{ \ { \
[RLIMIT_CPU] = { RLIM_INFINITY, RLIM_INFINITY }, \ [RLIMIT_CPU] = { RLIM_INFINITY, RLIM_INFINITY }, \
[RLIMIT_FSIZE] = { RLIM_INFINITY, RLIM_INFINITY }, \ [RLIMIT_FSIZE] = { RLIM_INFINITY, RLIM_INFINITY }, \
[RLIMIT_DATA] = { RLIM_INFINITY, RLIM_INFINITY }, \ [RLIMIT_DATA] = { RLIM_INFINITY, RLIM_INFINITY }, \
[RLIMIT_STACK] = { _STK_LIM, _STK_LIM_MAX }, \ [RLIMIT_STACK] = { _STK_LIM, _STK_LIM_MAX }, \
[RLIMIT_CORE] = { 0, RLIM_INFINITY }, \ [RLIMIT_CORE] = { 0, RLIM_INFINITY }, \
[RLIMIT_RSS] = { RLIM_INFINITY, RLIM_INFINITY }, \ [RLIMIT_RSS] = { RLIM_INFINITY, RLIM_INFINITY }, \
[RLIMIT_NPROC] = { 0, 0 }, \ [RLIMIT_NPROC] = { 0, 0 }, \
[RLIMIT_NOFILE] = { INR_OPEN, INR_OPEN }, \ [RLIMIT_NOFILE] = { INR_OPEN, INR_OPEN }, \
[RLIMIT_MEMLOCK] = { MLOCK_LIMIT, MLOCK_LIMIT }, \ [RLIMIT_MEMLOCK] = { MLOCK_LIMIT, MLOCK_LIMIT }, \
[RLIMIT_AS] = { RLIM_INFINITY, RLIM_INFINITY }, \ [RLIMIT_AS] = { RLIM_INFINITY, RLIM_INFINITY }, \
[RLIMIT_LOCKS] = { RLIM_INFINITY, RLIM_INFINITY }, \ [RLIMIT_LOCKS] = { RLIM_INFINITY, RLIM_INFINITY }, \
[RLIMIT_SIGPENDING] = { MAX_SIGPENDING, MAX_SIGPENDING }, \ [RLIMIT_SIGPENDING] = { MAX_SIGPENDING, MAX_SIGPENDING }, \
[RLIMIT_MSGQUEUE] = { MQ_BYTES_MAX, MQ_BYTES_MAX }, \ [RLIMIT_MSGQUEUE] = { MQ_BYTES_MAX, MQ_BYTES_MAX }, \
} }
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
......
...@@ -9,36 +9,26 @@ ...@@ -9,36 +9,26 @@
#ifndef _ASM_RESOURCE_H #ifndef _ASM_RESOURCE_H
#define _ASM_RESOURCE_H #define _ASM_RESOURCE_H
#include <linux/config.h>
/* /*
* Resource limits * These five resource limit IDs have a MIPS/Linux-specific ordering,
* the rest comes from the generic header:
*/ */
#define RLIMIT_CPU 0 /* CPU time in ms */ #define RLIMIT_NOFILE 5 /* max number of open files */
#define RLIMIT_FSIZE 1 /* Maximum filesize */ #define RLIMIT_AS 6 /* address space limit */
#define RLIMIT_DATA 2 /* max data size */ #define RLIMIT_RSS 7 /* max resident set size */
#define RLIMIT_STACK 3 /* max stack size */ #define RLIMIT_NPROC 8 /* max number of processes */
#define RLIMIT_CORE 4 /* max core file size */ #define RLIMIT_MEMLOCK 9 /* max locked-in-memory address space */
#define RLIMIT_NOFILE 5 /* max number of open files */
#define RLIMIT_AS 6 /* mapped memory */
#define RLIMIT_RSS 7 /* max resident set size */
#define RLIMIT_NPROC 8 /* max number of processes */
#define RLIMIT_MEMLOCK 9 /* max locked-in-memory address space */
#define RLIMIT_LOCKS 10 /* maximum file locks held */
#define RLIMIT_SIGPENDING 11 /* max number of pending signals */
#define RLIMIT_MSGQUEUE 12 /* maximum bytes in POSIX mqueues */
#define RLIM_NLIMITS 13 /* Number of limit flavors. */
#define __ARCH_RLIMIT_ORDER
/* /*
* SuS says limits have to be unsigned. * SuS says limits have to be unsigned.
* Which makes a ton more sense anyway. * Which makes a ton more sense anyway,
* but we keep the old value on MIPS32,
* for compatibility:
*/ */
#include <linux/config.h>
#ifdef CONFIG_MIPS32 #ifdef CONFIG_MIPS32
#define RLIM_INFINITY 0x7fffffffUL # define RLIM_INFINITY 0x7fffffffUL
#endif
#ifdef CONFIG_MIPS64
#define RLIM_INFINITY (~0UL)
#endif #endif
#include <asm-generic/resource.h> #include <asm-generic/resource.h>
......
...@@ -8,32 +8,18 @@ ...@@ -8,32 +8,18 @@
#define _SPARC_RESOURCE_H #define _SPARC_RESOURCE_H
/* /*
* Resource limits * These two resource limit IDs have a Sparc/Linux-specific ordering,
* the rest comes from the generic header:
*/ */
#define RLIMIT_NOFILE 6 /* max number of open files */
#define RLIMIT_CPU 0 /* CPU time in ms */ #define RLIMIT_NPROC 7 /* max number of processes */
#define RLIMIT_FSIZE 1 /* Maximum filesize */
#define RLIMIT_DATA 2 /* max data size */
#define RLIMIT_STACK 3 /* max stack size */
#define RLIMIT_CORE 4 /* max core file size */
#define RLIMIT_RSS 5 /* max resident set size */
#define RLIMIT_NOFILE 6 /* max number of open files */
#define RLIMIT_NPROC 7 /* max number of processes */
#define RLIMIT_MEMLOCK 8 /* max locked-in-memory address space */
#define RLIMIT_AS 9 /* address space limit */
#define RLIMIT_LOCKS 10 /* maximum file locks held */
#define RLIMIT_SIGPENDING 11 /* max number of pending signals */
#define RLIMIT_MSGQUEUE 12 /* maximum bytes in POSIX mqueues */
#define RLIM_NLIMITS 13
#define __ARCH_RLIMIT_ORDER
/* /*
* SuS says limits have to be unsigned. * SuS says limits have to be unsigned.
* We make this unsigned, but keep the * We make this unsigned, but keep the
* old value. * old value for compatibility:
*/ */
#define RLIM_INFINITY 0x7fffffff #define RLIM_INFINITY 0x7fffffff
#include <asm-generic/resource.h> #include <asm-generic/resource.h>
......
...@@ -8,25 +8,11 @@ ...@@ -8,25 +8,11 @@
#define _SPARC64_RESOURCE_H #define _SPARC64_RESOURCE_H
/* /*
* Resource limits * These two resource limit IDs have a Sparc/Linux-specific ordering,
* the rest comes from the generic header:
*/ */
#define RLIMIT_NOFILE 6 /* max number of open files */
#define RLIMIT_CPU 0 /* CPU time in ms */ #define RLIMIT_NPROC 7 /* max number of processes */
#define RLIMIT_FSIZE 1 /* Maximum filesize */
#define RLIMIT_DATA 2 /* max data size */
#define RLIMIT_STACK 3 /* max stack size */
#define RLIMIT_CORE 4 /* max core file size */
#define RLIMIT_RSS 5 /* max resident set size */
#define RLIMIT_NOFILE 6 /* max number of open files */
#define RLIMIT_NPROC 7 /* max number of processes */
#define RLIMIT_MEMLOCK 8 /* max locked-in-memory address space */
#define RLIMIT_AS 9 /* address space limit */
#define RLIMIT_LOCKS 10 /* maximum file locks held */
#define RLIMIT_SIGPENDING 11 /* max number of pending signals */
#define RLIMIT_MSGQUEUE 12 /* maximum bytes in POSIX mqueues */
#define RLIM_NLIMITS 13
#define __ARCH_RLIMIT_ORDER
#include <asm-generic/resource.h> #include <asm-generic/resource.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment