/* +++ GENERATED FILE +++ DO NOT EDIT +++ */
/*-
 * Copyright (c) 2013, 2015
 *	mirabilos <m@mirbsd.org>
 *
 * Provided that these terms and disclaimer and all copyright notices
 * are retained or reproduced in an accompanying document, permission
 * is granted to deal in this work without restriction, including un-
 * limited rights to use, publicly perform, distribute, sell, modify,
 * merge, give away, or sublicence.
 *
 * This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
 * the utmost extent permitted by applicable law, neither express nor
 * implied; without malicious intent or gross negligence. In no event
 * may a licensor, author or contributor be held liable for indirect,
 * direct, other damage, loss, or other issues arising in any way out
 * of dealing in the work, even if advised of the possibility of such
 * damage or existence of a defect, except proven that it results out
 * of said person's immediate fault when using the work as intended.
 */

#ifndef RLIMITS_OPTCS
#if defined(RLIMITS_DEFNS)
__RCSID("$MirOS: src/bin/mksh/rlimits.opt,v 1.4 2019/04/24 20:56:31 tg Exp $");
#elif defined(RLIMITS_ITEMS)
#define FN(lname,lid,lfac,lopt) (const struct limits *)(&rlimits_ ## lid),
#endif
#ifndef F0
#define F0 FN
#endif
#ifdef RLIMIT_CPU
FN("time(cpu-seconds)", RLIMIT_CPU, 1, 't')
#endif
#ifdef RLIMIT_FSIZE
FN("file(blocks)", RLIMIT_FSIZE, 512, 'f')
#endif
#ifdef RLIMIT_CORE
FN("coredump(blocks)", RLIMIT_CORE, 512, 'c')
#endif
#ifdef RLIMIT_DATA
FN("data(KiB)", RLIMIT_DATA, 1024, 'd')
#endif
#ifdef RLIMIT_STACK
FN("stack(KiB)", RLIMIT_STACK, 1024, 's')
#endif
#ifdef RLIMIT_MEMLOCK
FN("lockedmem(KiB)", RLIMIT_MEMLOCK, 1024, 'l')
#endif
#ifdef RLIMIT_NOFILE
FN("nofiles(descriptors)", RLIMIT_NOFILE, 1, 'n')
#endif
#ifdef RLIMIT_NPROC
FN("processes", RLIMIT_NPROC, 1, 'p')
#endif
#ifdef RLIMIT_SWAP
FN("swap(KiB)", RLIMIT_SWAP, 1024, 'w')
#endif
#ifdef RLIMIT_TIME
FN("humantime(seconds)", RLIMIT_TIME, 1, 'T')
#endif
#ifdef RLIMIT_NOVMON
FN("vnodemonitors", RLIMIT_NOVMON, 1, 'V')
#endif
#ifdef RLIMIT_SIGPENDING
FN("sigpending", RLIMIT_SIGPENDING, 1, 'i')
#endif
#ifdef RLIMIT_MSGQUEUE
FN("msgqueue(bytes)", RLIMIT_MSGQUEUE, 1, 'q')
#endif
#ifdef RLIMIT_AIO_MEM
FN("AIOlockedmem(KiB)", RLIMIT_AIO_MEM, 1024, 'M')
#endif
#ifdef RLIMIT_AIO_OPS
FN("AIOoperations", RLIMIT_AIO_OPS, 1, 'O')
#endif
#ifdef RLIMIT_TCACHE
FN("cachedthreads", RLIMIT_TCACHE, 1, 'C')
#endif
#ifdef RLIMIT_SBSIZE
FN("sockbufsiz(KiB)", RLIMIT_SBSIZE, 1024, 'B')
#endif
#ifdef RLIMIT_PTHREAD
FN("threadsperprocess", RLIMIT_PTHREAD, 1, 'P')
#endif
#ifdef RLIMIT_THREADS
FN("threadsperprocess", RLIMIT_THREADS, 1, 'r')
#endif
#ifdef RLIMIT_NICE
FN("maxnice", RLIMIT_NICE, 1, 'e')
#endif
#ifdef RLIMIT_RTPRIO
FN("maxrtprio", RLIMIT_RTPRIO, 1, 'r')
#endif
#ifdef ULIMIT_M_IS_RSS
FN("resident-set(KiB)", RLIMIT_RSS, 1024, 'm')
#endif
#ifdef ULIMIT_M_IS_VMEM
FN("memory(KiB)", RLIMIT_VMEM, 1024, 'm')
#endif
#ifdef ULIMIT_V_IS_VMEM
FN("virtual-memory(KiB)", RLIMIT_VMEM, 1024, 'v')
#endif
#ifdef ULIMIT_V_IS_AS
FN("address-space(KiB)", RLIMIT_AS, 1024, 'v')
#endif
#ifdef RLIMIT_LOCKS
FN("filelocks", RLIMIT_LOCKS, 1, 'x')
#endif
#undef F0
#undef FN
#undef RLIMITS_DEFNS
#undef RLIMITS_ITEMS
#else
"a"
#ifdef RLIMIT_SBSIZE
"B"
#endif
#ifdef RLIMIT_TCACHE
"C"
#endif
#ifdef RLIMIT_CORE
"c"
#endif
#ifdef RLIMIT_DATA
"d"
#endif
#ifdef RLIMIT_NICE
"e"
#endif
#ifdef RLIMIT_FSIZE
"f"
#endif
"H"
#ifdef RLIMIT_SIGPENDING
"i"
#endif
#ifdef RLIMIT_MEMLOCK
"l"
#endif
#ifdef RLIMIT_AIO_MEM
"M"
#endif
#ifdef ULIMIT_M_IS_RSS
"m"
#endif
#ifdef ULIMIT_M_IS_VMEM
"m"
#endif
#ifdef RLIMIT_NOFILE
"n"
#endif
#ifdef RLIMIT_AIO_OPS
"O"
#endif
#ifdef RLIMIT_PTHREAD
"P"
#endif
#ifdef RLIMIT_NPROC
"p"
#endif
#ifdef RLIMIT_MSGQUEUE
"q"
#endif
#ifdef RLIMIT_RTPRIO
"r"
#endif
#ifdef RLIMIT_THREADS
"r"
#endif
"S"
#ifdef RLIMIT_STACK
"s"
#endif
#ifdef RLIMIT_TIME
"T"
#endif
#ifdef RLIMIT_CPU
"t"
#endif
#ifdef RLIMIT_NOVMON
"V"
#endif
#ifdef ULIMIT_V_IS_AS
"v"
#endif
#ifdef ULIMIT_V_IS_VMEM
"v"
#endif
#ifdef RLIMIT_SWAP
"w"
#endif
#ifdef RLIMIT_LOCKS
"x"
#endif
#undef RLIMITS_OPTCS
#endif
