#include "db_config.h"
#include "db_int.h"
#ifdef HAVE_SYSTEM_INCLUDE_FILES
#if defined(HAVE_PSTAT_GETDYNAMIC)
#include <sys/pstat.h>
#endif
#endif
#if defined(HAVE_PSTAT_GETDYNAMIC)
static int __os_pstat_getdynamic __P((void));
static int
__os_pstat_getdynamic()
{
struct pst_dynamic psd;
return (pstat_getdynamic(&psd,
sizeof(psd), (size_t)1, 0) == -1 ? 1 : psd.psd_proc_cnt);
}
#endif
#if defined(HAVE_SYSCONF) && defined(_SC_NPROCESSORS_ONLN)
static u_int32_t __os_sysconf __P((void));
static u_int32_t
__os_sysconf()
{
long nproc;
nproc = sysconf(_SC_NPROCESSORS_ONLN);
return ((u_int32_t)(nproc > 1 ? nproc : 1));
}
#endif
u_int32_t
__os_spin(dbenv)
DB_ENV *dbenv;
{
u_int32_t tas_spins;
COMPQUIET(dbenv, NULL);
tas_spins = 1;
#if defined(HAVE_PSTAT_GETDYNAMIC)
tas_spins = __os_pstat_getdynamic();
#endif
#if defined(HAVE_SYSCONF) && defined(_SC_NPROCESSORS_ONLN)
tas_spins = __os_sysconf();
#endif
if (tas_spins != 1)
tas_spins *= 50;
return (tas_spins);
}