Feature #10267 » etc-nprocessors.patch
| test/etc/test_etc.rb (working copy) | ||
|---|---|---|
|
}
|
||
|
end if defined?(Etc::PC_PIPE_BUF)
|
||
|
def test_nprocessors_online
|
||
|
n = Etc.nprocessors_online
|
||
|
assert_operator(1, :<=, n)
|
||
|
end
|
||
|
end
|
||
| ext/etc/etc.c (working copy) | ||
|---|---|---|
|
#define io_pathconf rb_f_notimplement
|
||
|
#endif
|
||
|
#if defined(HAVE_SYSCONF) && defined(_SC_NPROCESSORS_ONLN)
|
||
|
/*
|
||
|
* Returns the number of online processors.
|
||
|
*
|
||
|
* The result is intended as the number of processes to
|
||
|
* use all available processors.
|
||
|
*
|
||
|
* This method is implemented as:
|
||
|
* - sysconf(_SC_NPROCESSORS_ONLN): GNU/Linux, NetBSD, FreeBSD, OpenBSD, DragonFly BSD, OpenIndiana, Mac OS X, AIX
|
||
|
*
|
||
|
* Example:
|
||
|
*
|
||
|
* require 'etc'
|
||
|
* p Etc.nprocessors_online #=> 4
|
||
|
*
|
||
|
*/
|
||
|
static VALUE
|
||
|
etc_nprocessors_online(VALUE obj)
|
||
|
{
|
||
|
long ret;
|
||
|
errno = 0;
|
||
|
ret = sysconf(_SC_NPROCESSORS_ONLN);
|
||
|
if (ret == -1) {
|
||
|
rb_sys_fail("sysconf(_SC_NPROCESSORS_ONLN)");
|
||
|
}
|
||
|
return LONG2NUM(ret);
|
||
|
}
|
||
|
#else
|
||
|
#define etc_nprocessors_online rb_f_notimplement
|
||
|
#endif
|
||
|
/*
|
||
|
* The Etc module provides access to information typically stored in
|
||
|
* files in the /etc directory on Unix systems.
|
||
| ... | ... | |
|
rb_define_module_function(mEtc, "sysconf", etc_sysconf, 1);
|
||
|
rb_define_module_function(mEtc, "confstr", etc_confstr, 1);
|
||
|
rb_define_method(rb_cIO, "pathconf", io_pathconf, 1);
|
||
|
rb_define_module_function(mEtc, "nprocessors_online", etc_nprocessors_online, 0);
|
||
|
sPasswd = rb_struct_define_under(mEtc, "Passwd",
|
||
|
"name",
|
||