@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