@RLIMITS_DEFNS
__RCSID("$MirOS: src/bin/mksh/rlimits.opt,v 1.1 2013/11/17 22:21:18 tg Exp $");
struct limits {
	/* limit resource */
	int resource;
	/* multiply by to get rlim_{cur,max} values */
	unsigned int factor;
	/* getopts char */
	char optchar;
	/* limit name */
	char name[1];
};
#define FN(lname,lid,lfac,lopt)				\
	static const struct {				\
		int resource;				\
		unsigned int factor;			\
		char optchar;				\
		char name[sizeof(lname)];		\
	} rlimits_ ## lid = {				\
		lid, lfac, lopt, lname			\
	};
@RLIMITS_ITEMS
#define FN(lname,lid,lfac,lopt)				\
	(const struct limits *)(&rlimits_ ## lid),
@@

/* generic options for the ulimit builtin */

<a|
<H|
<S|

/* do not use options -H, -S or -a or change the order */

>t|RLIMIT_CPU
FN("time(cpu-seconds)", RLIMIT_CPU, 1

>f|RLIMIT_FSIZE
FN("file(blocks)", RLIMIT_FSIZE, 512

>c|RLIMIT_CORE
FN("coredump(blocks)", RLIMIT_CORE, 512

>d|RLIMIT_DATA
FN("data(KiB)", RLIMIT_DATA, 1024

>s|RLIMIT_STACK
FN("stack(KiB)", RLIMIT_STACK, 1024

>l|RLIMIT_MEMLOCK
FN("lockedmem(KiB)", RLIMIT_MEMLOCK, 1024

>n|RLIMIT_NOFILE
FN("nofiles(descriptors)", RLIMIT_NOFILE, 1

>p|RLIMIT_NPROC
FN("processes", RLIMIT_NPROC, 1

>w|RLIMIT_SWAP
FN("swap(KiB)", RLIMIT_SWAP, 1024

>T|RLIMIT_TIME
FN("humantime(seconds)", RLIMIT_TIME, 1

>V|RLIMIT_NOVMON
FN("vnodemonitors", RLIMIT_NOVMON, 1

>i|RLIMIT_SIGPENDING
FN("sigpending", RLIMIT_SIGPENDING, 1

>q|RLIMIT_MSGQUEUE
FN("msgqueue(bytes)", RLIMIT_MSGQUEUE, 1

>M|RLIMIT_AIO_MEM
FN("AIOlockedmem(KiB)", RLIMIT_AIO_MEM, 1024

>O|RLIMIT_AIO_OPS
FN("AIOoperations", RLIMIT_AIO_OPS, 1

>C|RLIMIT_TCACHE
FN("cachedthreads", RLIMIT_TCACHE, 1

>B|RLIMIT_SBSIZE
FN("sockbufsiz(KiB)", RLIMIT_SBSIZE, 1024

>P|RLIMIT_PTHREAD
FN("threadsperprocess", RLIMIT_PTHREAD, 1

>e|RLIMIT_NICE
FN("maxnice", RLIMIT_NICE, 1

>r|RLIMIT_RTPRIO
FN("maxrtprio", RLIMIT_RTPRIO, 1

>m|ULIMIT_M_IS_RSS
FN("resident-set(KiB)", RLIMIT_RSS, 1024
>m|ULIMIT_M_IS_VMEM
FN("memory(KiB)", RLIMIT_VMEM, 1024

>v|ULIMIT_V_IS_VMEM
FN("virtual-memory(KiB)", RLIMIT_VMEM, 1024
>v|ULIMIT_V_IS_AS
FN("address-space(KiB)", RLIMIT_AS, 1024

|RLIMITS_OPTCS