2472. [port] linux: check the number of available cpu's before

calling chroot as it depends on "/proc". [RT #16923]
This commit is contained in:
Mark Andrews
2008-10-24 01:14:52 +00:00
parent bd97007cc7
commit fcdee04edb
3 changed files with 15 additions and 8 deletions
+3
View File
@@ -1,3 +1,6 @@
2472. [port] linux: check the number of available cpu's before
calling chroot as it depends on "/proc". [RT #16923]
2469. [port] solaris: Work around Solaris's select() limitations.
[RT #18769]
+2 -1
View File
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: globals.h,v 1.59.68.7 2006/03/02 00:37:20 marka Exp $ */
/* $Id: globals.h,v 1.59.68.8 2008/10/24 01:14:52 marka Exp $ */
#ifndef NAMED_GLOBALS_H
#define NAMED_GLOBALS_H 1
@@ -46,6 +46,7 @@ EXTERN isc_taskmgr_t * ns_g_taskmgr INIT(NULL);
EXTERN dns_dispatchmgr_t * ns_g_dispatchmgr INIT(NULL);
EXTERN isc_entropy_t * ns_g_entropy INIT(NULL);
EXTERN isc_entropy_t * ns_g_fallbackentropy INIT(NULL);
EXTERN unsigned int ns_g_cpus_detected INIT(1);
/*
* XXXRTH We're going to want multiple timer managers eventually. One
+10 -7
View File
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: main.c,v 1.119.2.3.2.27 2008/08/21 23:45:31 tbox Exp $ */
/* $Id: main.c,v 1.119.2.3.2.28 2008/10/24 01:14:51 marka Exp $ */
#include <config.h>
@@ -462,17 +462,13 @@ static isc_result_t
create_managers(void) {
isc_result_t result;
unsigned int socks;
#ifdef ISC_PLATFORM_USETHREADS
unsigned int cpus_detected;
#endif
#ifdef ISC_PLATFORM_USETHREADS
cpus_detected = isc_os_ncpus();
if (ns_g_cpus == 0)
ns_g_cpus = cpus_detected;
ns_g_cpus = ns_g_cpus_detected;
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER,
ISC_LOG_INFO, "found %u CPU%s, using %u worker thread%s",
cpus_detected, cpus_detected == 1 ? "" : "s",
ns_g_cpus_detected, ns_g_cpus_detected == 1 ? "" : "s",
ns_g_cpus, ns_g_cpus == 1 ? "" : "s");
#else
ns_g_cpus = 1;
@@ -605,6 +601,13 @@ setup(void) {
}
#endif
#ifdef ISC_PLATFORM_USETHREADS
/*
* Check for the number of cpu's before ns_os_chroot().
*/
ns_g_cpus_detected = isc_os_ncpus();
#endif
ns_os_chroot(ns_g_chrootdir);
/*