Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
8fbd2923
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8fbd2923
编写于
11月 11, 2015
作者:
B
bors
浏览文件
操作
浏览文件
下载
差异文件
Auto merge of #29752 - tamird:fix-compiletest-stage1, r=alexcrichton
Fixes #29751.
上级
b53020a5
f5e9a4ae
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
5 addition
and
22 deletion
+5
-22
src/compiletest/raise_fd_limit.rs
src/compiletest/raise_fd_limit.rs
+5
-22
未找到文件。
src/compiletest/raise_fd_limit.rs
浏览文件 @
8fbd2923
...
...
@@ -23,25 +23,8 @@ pub unsafe fn raise_fd_limit() {
use
std
::
mem
::
size_of_val
;
use
std
::
ptr
::
null_mut
;
type
rlim_t
=
libc
::
uint64_t
;
#[repr(C)]
struct
rlimit
{
rlim_cur
:
rlim_t
,
rlim_max
:
rlim_t
}
extern
{
// name probably doesn't need to be mut, but the C function doesn't
// specify const
fn
sysctl
(
name
:
*
mut
libc
::
c_int
,
namelen
:
libc
::
c_uint
,
oldp
:
*
mut
libc
::
c_void
,
oldlenp
:
*
mut
libc
::
size_t
,
newp
:
*
mut
libc
::
c_void
,
newlen
:
libc
::
size_t
)
->
libc
::
c_int
;
fn
getrlimit
(
resource
:
libc
::
c_int
,
rlp
:
*
mut
rlimit
)
->
libc
::
c_int
;
fn
setrlimit
(
resource
:
libc
::
c_int
,
rlp
:
*
const
rlimit
)
->
libc
::
c_int
;
}
static
CTL_KERN
:
libc
::
c_int
=
1
;
static
KERN_MAXFILESPERPROC
:
libc
::
c_int
=
29
;
static
RLIMIT_NOFILE
:
libc
::
c_int
=
8
;
// The strategy here is to fetch the current resource limits, read the
// kern.maxfilesperproc sysctl value, and bump the soft resource limit for
...
...
@@ -51,25 +34,25 @@ fn sysctl(name: *mut libc::c_int, namelen: libc::c_uint,
let
mut
mib
:
[
libc
::
c_int
;
2
]
=
[
CTL_KERN
,
KERN_MAXFILESPERPROC
];
let
mut
maxfiles
:
libc
::
c_int
=
0
;
let
mut
size
:
libc
::
size_t
=
size_of_val
(
&
maxfiles
)
as
libc
::
size_t
;
if
sysctl
(
&
mut
mib
[
0
],
2
,
&
mut
maxfiles
as
*
mut
_
as
*
mut
_
,
&
mut
size
,
if
libc
::
sysctl
(
&
mut
mib
[
0
],
2
,
&
mut
maxfiles
as
*
mut
_
as
*
mut
_
,
&
mut
size
,
null_mut
(),
0
)
!=
0
{
let
err
=
io
::
Error
::
last_os_error
();
panic!
(
"raise_fd_limit: error calling sysctl: {}"
,
err
);
}
// Fetch the current resource limits
let
mut
rlim
=
rlimit
{
rlim_cur
:
0
,
rlim_max
:
0
};
if
getrlimit
(
RLIMIT_NOFILE
,
&
mut
rlim
)
!=
0
{
let
mut
rlim
=
libc
::
rlimit
{
rlim_cur
:
0
,
rlim_max
:
0
};
if
libc
::
getrlimit
(
libc
::
RLIMIT_NOFILE
,
&
mut
rlim
)
!=
0
{
let
err
=
io
::
Error
::
last_os_error
();
panic!
(
"raise_fd_limit: error calling getrlimit: {}"
,
err
);
}
// Bump the soft limit to the smaller of kern.maxfilesperproc and the hard
// limit
rlim
.rlim_cur
=
cmp
::
min
(
maxfiles
as
rlim_t
,
rlim
.rlim_max
);
rlim
.rlim_cur
=
cmp
::
min
(
maxfiles
as
libc
::
rlim_t
,
rlim
.rlim_max
);
// Set our newly-increased resource limit
if
setrlimit
(
RLIMIT_NOFILE
,
&
rlim
)
!=
0
{
if
libc
::
setrlimit
(
libc
::
RLIMIT_NOFILE
,
&
rlim
)
!=
0
{
let
err
=
io
::
Error
::
last_os_error
();
panic!
(
"raise_fd_limit: error calling setrlimit: {}"
,
err
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录