Stub for setrlimit

Change-Id: I54c7233d71805711bd72e1e751456aad30fd3e35
This commit is contained in:
Lionel Sambuc 2014-04-28 10:05:45 +02:00
parent e39e890e08
commit ac5b3e53d8
10 changed files with 49 additions and 25 deletions

View file

@ -374,13 +374,10 @@ sig_cleanup(int which_sig)
static int
gen_init(void)
{
#if !defined(__minix)
struct rlimit reslimit;
#endif /* !defined(__minix) */
struct sigaction n_hand;
struct sigaction o_hand;
#if !defined(__minix)
/*
* Really needed to handle large archives. We can run out of memory for
* internal tables really fast when we have a whole lot of files...
@ -416,7 +413,6 @@ gen_init(void)
(void)setrlimit(RLIMIT_RSS , &reslimit);
}
#endif
#endif /* !defined(__minix) */
/*
* Handle posix locale

View file

@ -22,7 +22,7 @@ SRCS+= accept.c access.c adjtime.c bind.c brk.c sbrk.c m_closefrom.c getsid.c \
sync.c syscall.c sysuname.c truncate.c umask.c unlink.c write.c \
utimensat.c utimes.c futimes.c lutimes.c futimens.c \
_exit.c _ucontext.c environ.c __getcwd.c vfork.c sizeup.c init.c \
getrusage.c
getrusage.c setrlimit.c
# Minix specific syscalls / utils.
SRCS+= cprofile.c sprofile.c stack_utils.c _mcontext.c

View file

@ -20,12 +20,18 @@ int getrlimit(int resource, struct rlimit *rlp)
switch (resource)
{
case RLIMIT_CORE:
case RLIMIT_CPU:
case RLIMIT_DATA:
case RLIMIT_FSIZE:
case RLIMIT_DATA:
case RLIMIT_STACK:
case RLIMIT_CORE:
case RLIMIT_RSS:
case RLIMIT_MEMLOCK:
case RLIMIT_NPROC:
case RLIMIT_SBSIZE:
case RLIMIT_AS:
/* case RLIMIT_VMEM: Same as RLIMIT_AS */
case RLIMIT_NTHR:
/* no limit enforced (however architectural limits
* may apply)
*/

View file

@ -0,0 +1,38 @@
#include <sys/cdefs.h>
#include "namespace.h"
#include <errno.h>
#include <limits.h>
#include <sys/resource.h>
#include <unistd.h>
/* Simple stub for now. */
int setrlimit(int resource, const struct rlimit *rlp)
{
rlim_t limit;
switch (resource)
{
case RLIMIT_CPU:
case RLIMIT_FSIZE:
case RLIMIT_DATA:
case RLIMIT_STACK:
case RLIMIT_CORE:
case RLIMIT_RSS:
case RLIMIT_MEMLOCK:
case RLIMIT_NPROC:
case RLIMIT_NOFILE:
case RLIMIT_SBSIZE:
case RLIMIT_AS:
/* case RLIMIT_VMEM: Same as RLIMIT_AS */
case RLIMIT_NTHR:
break;
default:
errno = EINVAL;
return -1;
}
return 0;
}

View file

@ -417,17 +417,13 @@ static struct {
{ RLIMIT_FSIZE, R_CSIZE, "filesize", },
{ RLIMIT_DATA, R_CSIZE, "datasize", },
{ RLIMIT_STACK, R_CSIZE, "stacksize", },
#if !defined(__minix)
{ RLIMIT_RSS, R_CSIZE, "memoryuse", },
{ RLIMIT_MEMLOCK, R_CSIZE, "memorylocked", },
{ RLIMIT_NPROC, R_CNUMB, "maxproc", },
{ RLIMIT_NTHR, R_CNUMB, "maxthread", },
#endif /* !defined(__minix) */
{ RLIMIT_NOFILE, R_CNUMB, "openfiles", },
{ RLIMIT_CORE, R_CSIZE, "coredumpsize", },
#ifdef RLIMIT_SBSIZE
{ RLIMIT_SBSIZE, R_CSIZE, "sbsize", },
#endif
{ -1, 0, 0 }
};
@ -477,13 +473,11 @@ gsetrl(login_cap_t *lc, int what, const char *name, int type)
return (-1);
}
#if !defined(__minix)
if (setrlimit(what, &rl)) {
syslog(LOG_ERR, "%s: setting resource limit %s: %m",
lc->lc_class, name);
return (-1);
}
#endif /* !defined(__minix) */
#undef RCUR
#undef RMAX
return (0);

View file

@ -207,7 +207,6 @@ pw_cont(int sig)
void
pw_init(void)
{
#if !defined(__minix)
struct rlimit rlim;
/* Unlimited resource limits. */
@ -221,7 +220,6 @@ pw_init(void)
/* Don't drop core (not really necessary, but GP's). */
rlim.rlim_cur = rlim.rlim_max = 0;
(void)setrlimit(RLIMIT_CORE, &rlim);
#endif /* !defined(__minix) */
/* Turn off signals. */
(void)signal(SIGALRM, SIG_IGN);

View file

@ -219,10 +219,10 @@ main(int argc, char *argv[], char *envp[])
*/
#if !defined(__minix)
(void)signal(SIGXCPU, timeoverrun);
#endif /* !defined(__minix) */
limit.rlim_max = RLIM_INFINITY;
limit.rlim_cur = GETTY_TIMEOUT;
(void)setrlimit(RLIMIT_CPU, &limit);
#endif /* !defined(__minix) */
/*
* The following is a work around for vhangup interactions
@ -432,9 +432,7 @@ main(int argc, char *argv[], char *envp[])
limit.rlim_max = RLIM_INFINITY;
limit.rlim_cur = RLIM_INFINITY;
#if !defined(__minix)
(void)setrlimit(RLIMIT_CPU, &limit);
#endif /* !defined(__minix) */
if (NN)
(void)execle(LO, "login", AL ? "-fp" : "-p",
NULL, env);

View file

@ -138,14 +138,12 @@ ATF_TC_BODY(snprintf_float, tc)
uint32_t ul, uh;
time_t now;
char buf[1000];
#if !defined(__minix)
struct rlimit rl;
rl.rlim_cur = rl.rlim_max = 1 * 1024 * 1024;
ATF_CHECK(setrlimit(RLIMIT_AS, &rl) != -1);
rl.rlim_cur = rl.rlim_max = 1 * 1024 * 1024;
ATF_CHECK(setrlimit(RLIMIT_DATA, &rl) != -1);
#endif /* !defined(__minix) */
time(&now);
srand(now);

View file

@ -841,7 +841,7 @@ main(int argc, char **argv)
progname++;
else
progname = argv[0];
#if !defined(__minix) && (defined(MAKE_NATIVE) || (defined(HAVE_SETRLIMIT) && defined(RLIMIT_NOFILE)))
#if defined(MAKE_NATIVE) || (defined(HAVE_SETRLIMIT) && defined(RLIMIT_NOFILE))
/*
* get rid of resource limit on file descriptors
*/

View file

@ -124,21 +124,17 @@ main(int argc, char *argv[])
struct filelist filelist;
int num_input_files;
FILE *outfp = NULL;
#if !defined(__minix)
struct rlimit rl;
#endif /* !defined(__minix) */
struct stat st;
setlocale(LC_ALL, "");
#if !defined(__minix)
/* bump RLIMIT_NOFILE to maximum our hard limit allows */
if (getrlimit(RLIMIT_NOFILE, &rl) < 0)
err(2, "getrlimit");
rl.rlim_cur = rl.rlim_max;
if (setrlimit(RLIMIT_NOFILE, &rl) < 0)
err(2, "setrlimit");
#endif /* !defined(__minix) */
d_mask[REC_D = '\n'] = REC_D_F;
d_mask['\t'] = d_mask[' '] = BLANK | FLD_D;