本文整理汇总了C++中rlimit函数的典型用法代码示例。如果您正苦于以下问题:C++ rlimit函数的具体用法?C++ rlimit怎么用?C++ rlimit使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rlimit函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: test
int test(char *URL)
{
CURLcode res;
CURL *curl;
if(!strcmp(URL, "check")) {
/* used by the test script to ask if we can run this test or not */
if(rlimit(FALSE)) {
fprintf(stdout, "rlimit problem: %s\n", msgbuff);
return 1;
}
return 0; /* sure, run this! */
}
if(rlimit(TRUE)) {
/* failure */
return TEST_ERR_MAJOR_BAD;
}
/* run the test with the bunch of open file descriptors
and close them all once the test is over */
if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
fprintf(stderr, "curl_global_init() failed\n");
close_file_descriptors();
return TEST_ERR_MAJOR_BAD;
}
curl = curl_easy_init();
if(!curl) {
fprintf(stderr, "curl_easy_init() failed\n");
close_file_descriptors();
curl_global_cleanup();
return TEST_ERR_MAJOR_BAD;
}
test_setopt(curl, CURLOPT_URL, URL);
test_setopt(curl, CURLOPT_HEADER, 1L);
res = curl_easy_perform(curl);
test_cleanup:
close_file_descriptors();
curl_easy_cleanup(curl);
curl_global_cleanup();
return (int)res;
}
示例2: inode_newsize_ok
/**
* inode_newsize_ok - may this inode be truncated to a given size
* @inode: the inode to be truncated
* @offset: the new size to assign to the inode
* @Returns: 0 on success, -ve errno on failure
*
* inode_newsize_ok must be called with i_mutex held.
*
* inode_newsize_ok will check filesystem limits and ulimits to check that the
* new inode size is within limits. inode_newsize_ok will also send SIGXFSZ
* when necessary. Caller must not proceed with inode size change if failure is
* returned. @inode must be a file (not directory), with appropriate
* permissions to allow truncate (inode_newsize_ok does NOT check these
* conditions).
*/
int inode_newsize_ok(const struct inode *inode, loff_t offset)
{
if (inode->i_size < offset) {
unsigned long limit;
limit = rlimit(RLIMIT_FSIZE);
if (limit != RLIM_INFINITY && offset > limit)
goto out_sig;
if (offset > inode->i_sb->s_maxbytes)
goto out_big;
} else {
/*
* truncation of in-use swapfiles is disallowed - it would
* cause subsequent swapout to scribble on the now-freed
* blocks.
*/
if (IS_SWAPFILE(inode))
return -ETXTBSY;
}
return 0;
out_sig:
send_sig(SIGXFSZ, current, 0);
out_big:
return -EFBIG;
}
示例3: inode_newsize_ok
int inode_newsize_ok(const struct inode *inode, loff_t offset)
{
if (inode->i_size < offset) {
unsigned long limit;
limit = rlimit(RLIMIT_FSIZE);
if (limit != RLIM_INFINITY && offset > limit)
goto out_sig;
if (offset > inode->i_sb->s_maxbytes)
goto out_big;
} else {
/*
*/
if (IS_SWAPFILE(inode))
return -ETXTBSY;
}
return 0;
out_sig:
send_sig(SIGXFSZ, current, 0);
out_big:
return -EFBIG;
}
示例4: arch_pick_mmap_layout
void arch_pick_mmap_layout(struct mm_struct *mm)
{
unsigned long random_factor = mmap_rnd();
unsigned long gap;
/*
* Fall back to the standard layout if the personality
* bit is set, or if the expected stack growth is unlimited:
*/
gap = rlimit(RLIMIT_STACK);
if (!test_thread_flag(TIF_32BIT) ||
(current->personality & ADDR_COMPAT_LAYOUT) ||
gap == RLIM_INFINITY ||
sysctl_legacy_va_layout) {
mm->mmap_base = TASK_UNMAPPED_BASE + random_factor;
mm->get_unmapped_area = arch_get_unmapped_area;
mm->unmap_area = arch_unmap_area;
} else {
/* We know it's 32-bit */
unsigned long task_size = STACK_TOP32;
if (gap < 128 * 1024 * 1024)
gap = 128 * 1024 * 1024;
if (gap > (task_size / 6 * 5))
gap = (task_size / 6 * 5);
mm->mmap_base = PAGE_ALIGN(task_size - gap - random_factor);
mm->get_unmapped_area = arch_get_unmapped_area_topdown;
mm->unmap_area = arch_unmap_area_topdown;
}
}
示例5: mmap_is_legacy
static inline int mmap_is_legacy(void)
{
if (current->personality & ADDR_COMPAT_LAYOUT)
return 1;
if (rlimit(RLIMIT_STACK) == RLIM_INFINITY)
return 1;
return sysctl_legacy_va_layout;
}
示例6: memobj_init
void
memobj_init(void)
{
unsigned long min_bytes, max_bytes;
unsigned long mem_bytes = GetPhysicalPages() * 0.90 * TILT_PAGESIZE;
unsigned long cache_bytes = GetBcacheSize() * 2;
min_bytes = 2048 * 1024;
min_bytes = Max(min_bytes, cache_bytes);
max_bytes = (unsigned long)INT_MAX;
max_bytes = Min(max_bytes, mem_bytes);
max_bytes = Min(max_bytes, rlimit(RLIMIT_DATA));
max_bytes = Min(max_bytes, rlimit(RLIMIT_AS));
#ifdef RLIMIT_VMEM
max_bytes = Min(max_bytes, rlimit(RLIMIT_VMEM));
#endif
init_int(&MinHeapByte, min_bytes);
init_int(&MaxHeapByte, 0.40 * max_bytes);
assert(MinHeapByte <= MaxHeapByte);
#ifdef sparc
assert(TILT_PAGESIZE == sysconf(_SC_PAGESIZE));
#else
assert(TILT_PAGESIZE == sysconf(_SC_PAGE_SIZE));
#endif
StackInitialize();
HeapInitialize();
GuardStackletSize = TILT_PAGESIZE / kilobyte;
stackletOffset = (GuardStackletSize + MLStackletSize + CStackletSize) *
kilobyte;
primaryStackletOffset = 0;
replicaStackletOffset = stackletOffset;
/* So we don't pay mmap for first thread - general case? XXXX */
{
int i;
Stacklet_t *temp[5];
for (i=0; i<5; i++)
temp[i] = Stacklet_Alloc(NULL);
for (i=0; i<5; i++)
Stacklet_Dealloc(temp[i]);
}
}
示例7: mmap_base
static inline unsigned long mmap_base(void)
{
unsigned long gap = rlimit(RLIMIT_STACK);
if (gap < MIN_GAP)
gap = MIN_GAP;
else if (gap > MAX_GAP)
gap = MAX_GAP;
return PAGE_ALIGN(TASK_SIZE - gap - mmap_rnd());
}
示例8: mmap_base
static unsigned long mmap_base(unsigned long rnd)
{
unsigned long gap = rlimit(RLIMIT_STACK);
if (gap < MIN_GAP)
gap = MIN_GAP;
else if (gap > MAX_GAP)
gap = MAX_GAP;
return PAGE_ALIGN(TASK_SIZE - gap - rnd);
}
示例9: mmap_base
static inline unsigned long mmap_base(void)
{
unsigned long gap = rlimit(RLIMIT_STACK);
if (gap < MIN_GAP)
gap = MIN_GAP;
else if (gap > MAX_GAP)
gap = MAX_GAP;
gap &= PAGE_MASK;
return STACK_TOP - stack_maxrandom_size() - mmap_rnd() - gap;
}
示例10: mmap_base
static inline unsigned long mmap_base(void)
{
unsigned long gap = rlimit(RLIMIT_STACK);
if (gap < MIN_GAP)
gap = MIN_GAP;
else if (gap > MAX_GAP)
gap = MAX_GAP;
return STACK_TOP - (gap & PAGE_MASK);
}
示例11: mmap_is_legacy
static inline int mmap_is_legacy(void)
{
#ifdef CONFIG_64BIT
/*
* Force standard allocation for 64 bit programs.
*/
if (!is_compat_task())
return 1;
#endif
return sysctl_legacy_va_layout ||
(current->personality & ADDR_COMPAT_LAYOUT) ||
rlimit(RLIMIT_STACK) == RLIM_INFINITY;
}
示例12: SYSCALL_DEFINE1
SYSCALL_DEFINE1(brk, unsigned long, brk)
{
unsigned long rlim, retval;
unsigned long newbrk, oldbrk;
struct mm_struct *mm = current->mm;
unsigned long min_brk;
down_write(&mm->mmap_sem);
#ifdef CONFIG_COMPAT_BRK
if (current->brk_randomized)
min_brk = mm->start_brk;
else
min_brk = mm->end_data;
#else
min_brk = mm->start_brk;
#endif
if (brk < min_brk)
goto out;
rlim = rlimit(RLIMIT_DATA);
if (rlim < RLIM_INFINITY && (brk - mm->start_brk) +
(mm->end_data - mm->start_data) > rlim)
goto out;
newbrk = PAGE_ALIGN(brk);
oldbrk = PAGE_ALIGN(mm->brk);
if (oldbrk == newbrk)
goto set_brk;
if (brk <= mm->brk) {
if (!do_munmap(mm, newbrk, oldbrk-newbrk))
goto set_brk;
goto out;
}
if (find_vma_intersection(mm, oldbrk, newbrk+PAGE_SIZE))
goto out;
if (do_brk(oldbrk, newbrk-oldbrk) != oldbrk)
goto out;
set_brk:
mm->brk = brk;
out:
retval = mm->brk;
up_write(&mm->mmap_sem);
return retval;
}
示例13: mmap_base
static inline unsigned long mmap_base(struct mm_struct *mm)
{
unsigned long gap = rlimit(RLIMIT_STACK);
unsigned long random_factor = 0;
if (current->flags & PF_RANDOMIZE)
random_factor = get_random_int() % (1024*1024);
if (gap < MIN_GAP)
gap = MIN_GAP;
else if (gap > MAX_GAP)
gap = MAX_GAP;
return PAGE_ALIGN(TASK_SIZE - gap - random_factor);
}
示例14: spufs_dump_write
/*
* These are the only things you should do on a core-file: use only these
* functions to write out all the necessary info.
*/
static int spufs_dump_write(struct file *file, const void *addr, int nr, loff_t *foffset)
{
unsigned long limit = rlimit(RLIMIT_CORE);
ssize_t written;
if (*foffset + nr > limit)
return -EIO;
written = file->f_op->write(file, addr, nr, &file->f_pos);
*foffset += written;
if (written != nr)
return -EIO;
return 0;
}
示例15: siw_pd_ofa2siw
/*
* siw_reg_user_mr()
*
* Register Memory Region.
*
* @ofa_pd: OFA PD contained in siw PD.
* @start: starting address of MR (virtual address)
* @len: len of MR
* @rnic_va: not used by siw
* @rights: MR access rights
* @udata: user buffer to communicate STag and Key.
*/
struct ib_mr *siw_reg_user_mr(struct ib_pd *ofa_pd, u64 start, u64 len,
u64 rnic_va, int rights, struct ib_udata *udata)
{
struct siw_mr *mr = NULL;
struct siw_pd *pd = siw_pd_ofa2siw(ofa_pd);
struct siw_umem *umem = NULL;
struct siw_ureq_reg_mr ureq;
struct siw_uresp_reg_mr uresp;
struct siw_dev *sdev = pd->hdr.sdev;
unsigned long mem_limit = rlimit(RLIMIT_MEMLOCK);
int rv;
dprint(DBG_MM|DBG_OBJ, " start: 0x%016llx, "
"va: 0x%016llx, len: %llu, ctx: %p\n",
(unsigned long long)start,
(unsigned long long)rnic_va,
(unsigned long long)len,
ofa_pd->uobject->context);
if (atomic_inc_return(&sdev->num_mem) > SIW_MAX_MR) {
dprint(DBG_ON, ": Out of MRs: %d\n",
atomic_read(&sdev->num_mem));
rv = -ENOMEM;
goto err_out;
}
if (!len) {
rv = -EINVAL;
goto err_out;
}
if (mem_limit != RLIM_INFINITY) {
unsigned long num_pages =
(PAGE_ALIGN(len + (start & ~PAGE_MASK))) >> PAGE_SHIFT;
mem_limit >>= PAGE_SHIFT;
if (num_pages > mem_limit - current->mm->locked_vm) {
dprint(DBG_ON|DBG_MM,
": pages req: %lu, limit: %lu, locked: %lu\n",
num_pages, mem_limit, current->mm->locked_vm);
rv = -ENOMEM;
goto err_out;
}
}