00001
00002
00003
00004
00005
00006
00007 #include "config.h"
00008
00009 #ifndef lint
00010 static const char revid[] = "$Id: mp__method_8c-source.html,v 1.1 2008/06/08 10:20:48 sebdiaz Exp $";
00011 #endif
00012
00013 #ifndef NO_SYSTEM_INCLUDES
00014 #include <sys/types.h>
00015 #endif
00016
00017 #ifdef HAVE_RPC
00018 #include "db_server.h"
00019 #endif
00020
00021 #include "db_int.h"
00022 #include "db_shash.h"
00023 #include "mp.h"
00024
00025 #ifdef HAVE_RPC
00026 #include "gen_client_ext.h"
00027 #include "rpc_client_ext.h"
00028 #endif
00029
00030 static int __memp_set_cachesize __P((DB_ENV *, u_int32_t, u_int32_t, int));
00031 static int __memp_set_mp_mmapsize __P((DB_ENV *, size_t));
00032
00033
00034
00035
00036
00037
00038
00039 void
00040 CDB___memp_dbenv_create(dbenv)
00041 DB_ENV *dbenv;
00042 {
00043
00044
00045
00046
00047
00048
00049
00050 dbenv->mp_bytes = 32 * ((8 * 1024) + sizeof(BH));
00051 dbenv->mp_ncache = 1;
00052
00053 dbenv->set_mp_mmapsize = __memp_set_mp_mmapsize;
00054 dbenv->set_cachesize = __memp_set_cachesize;
00055
00056 #ifdef HAVE_RPC
00057
00058
00059
00060
00061 if (F_ISSET(dbenv, DB_ENV_RPCCLIENT)) {
00062 dbenv->set_cachesize = __dbcl_env_cachesize;
00063 dbenv->set_mp_mmapsize = __dbcl_set_mp_mmapsize;
00064 }
00065 #endif
00066
00067 }
00068
00069
00070
00071
00072
00073 static int
00074 __memp_set_cachesize(dbenv, gbytes, bytes, ncache)
00075 DB_ENV *dbenv;
00076 u_int32_t gbytes, bytes;
00077 int ncache;
00078 {
00079 ENV_ILLEGAL_AFTER_OPEN(dbenv, "set_cachesize");
00080
00081 dbenv->mp_gbytes = gbytes + bytes / GIGABYTE;
00082 dbenv->mp_bytes = bytes % GIGABYTE;
00083 dbenv->mp_ncache = ncache == 0 ? 1 : ncache;
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094 if (dbenv->mp_gbytes == 0) {
00095 if (dbenv->mp_bytes < 500 * MEGABYTE)
00096 dbenv->mp_bytes += dbenv->mp_bytes / 4;
00097 if (dbenv->mp_bytes < DB_CACHESIZE_MIN)
00098 dbenv->mp_bytes = DB_CACHESIZE_MIN;
00099 }
00100
00101 return (0);
00102 }
00103
00104
00105
00106
00107
00108 static int
00109 __memp_set_mp_mmapsize(dbenv, mp_mmapsize )
00110 DB_ENV *dbenv;
00111 size_t mp_mmapsize;
00112 {
00113 dbenv->mp_mmapsize = mp_mmapsize;
00114 return (0);
00115 }