Stub for setrlimit
Change-Id: I54c7233d71805711bd72e1e751456aad30fd3e35
This commit is contained in:
parent
e39e890e08
commit
ac5b3e53d8
10 changed files with 49 additions and 25 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
*/
|
||||
|
|
38
lib/libc/sys-minix/setrlimit.c
Normal file
38
lib/libc/sys-minix/setrlimit.c
Normal 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;
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue