⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 berkeleydb.xs

📁 linux 下的源代码分析阅读器 red hat公司新版
💻 XS
📖 第 1 页 / 共 5 页
字号:
#endif#ifdef AT_LEAST_DB_4_2#    define DB_CLIENT	DB_RPCCLIENT#endif	  status = db_env_create(&RETVAL->Env, server ? DB_CLIENT : 0) ;	  Trace(("db_env_create flags = %d returned %s\n", flags,	  					my_db_strerror(status))) ;	  env = RETVAL->Env ;#ifdef AT_LEAST_DB_3_3	  env->set_alloc(env, safemalloc, MyRealloc, safefree) ;#endif#ifdef AT_LEAST_DB_3_1	  if (status == 0 && shm_key) {	      status = env->set_shm_key(env, shm_key) ;	      Trace(("set_shm_key [%d] returned %s\n", shm_key,			my_db_strerror(status)));	  }#endif	  	  if (status == 0 && cachesize) {	      status = env->set_cachesize(env, 0, cachesize, 0) ;	      Trace(("set_cachesize [%d] returned %s\n",			cachesize, my_db_strerror(status)));	  }		  if (status == 0 && lk_detect) {	      status = env->set_lk_detect(env, lk_detect) ;	      Trace(("set_lk_detect [%d] returned %s\n",	              lk_detect, my_db_strerror(status)));	  }#ifdef AT_LEAST_DB_4_1	  /* set encryption */	  if (enc_passwd && status == 0)	  {	      status = env->set_encrypt(env, enc_passwd, enc_flags);	      Trace(("ENV->set_encrypt passwd = %s, flags %d returned %s\n", 				      		enc_passwd, enc_flags,	  					my_db_strerror(status))) ;	  }#endif	  #ifdef AT_LEAST_DB_4	  /* set the server */	  if (server && status == 0)	  {	      status = env->set_rpc_server(env, NULL, server, 0, 0, 0);	      Trace(("ENV->set_rpc_server server = %s returned %s\n", server,	  					my_db_strerror(status))) ;	  }#else#  if defined(AT_LEAST_DB_3_1) && ! defined(AT_LEAST_DB_4)	  /* set the server */	  if (server && status == 0)	  {	      status = env->set_server(env, server, 0, 0, 0);	      Trace(("ENV->set_server server = %s returned %s\n", server,	  					my_db_strerror(status))) ;	  }#  endif#endif#ifdef AT_LEAST_DB_3_2	  if (setflags && status == 0)	  {	      status = env->set_flags(env, setflags, 1);	      Trace(("ENV->set_flags value = %d returned %s\n", setflags,	  					my_db_strerror(status))) ;	  }#endif	  if (status == 0)	  {	    int		mode = 0 ;	    /* Take a copy of the error prefix */	    if (errprefix) {	        Trace(("copying errprefix\n" )) ;		RETVAL->ErrPrefix = newSVsv(errprefix) ;		SvPOK_only(RETVAL->ErrPrefix) ;	    }	    if (RETVAL->ErrPrefix)	        env->set_errpfx(env, SvPVX(RETVAL->ErrPrefix)) ;	    if (SvGMAGICAL(errfile))		    mg_get(errfile);	    if (SvOK(errfile)) {	        FILE * ef = GetFILEptr(errfile);	    	if (! ef)		    croak("Cannot open file ErrFile", Strerror(errno));		RETVAL->ErrHandle = newSVsv(errfile) ;	    	env->set_errfile(env, ef) ;	    }	    SetValue_iv(mode, "Mode") ;	    env->set_errcall(env, db_errcall_cb) ;	    RETVAL->active = TRUE ;	    RETVAL->cds_enabled = ((flags & DB_INIT_CDB) != 0 ? TRUE : FALSE) ; #ifdef IS_DB_3_0_x	    status = (env->open)(env, home, config, flags, mode) ;#else /* > 3.0 */	    status = (env->open)(env, home, flags, mode) ;#endif	    Trace(("ENV->open(env=%s,home=%s,flags=%d,mode=%d)\n",env,home,flags,mode)) ;	    Trace(("ENV->open returned %s\n", my_db_strerror(status))) ;	  }	  if (status == 0)	      hash_store_iv("BerkeleyDB::Term::Env", (char *)RETVAL, 1) ;	  else {	      (env->close)(env, 0) ;              if (RETVAL->ErrHandle)                  SvREFCNT_dec(RETVAL->ErrHandle) ;              if (RETVAL->ErrPrefix)                  SvREFCNT_dec(RETVAL->ErrPrefix) ;              Safefree(RETVAL) ;	      RETVAL = NULL ;	  }#endif /* DB_VERSION_MAJOR > 2 */	  {	      SV * sv_err = perl_get_sv(ERR_BUFF, FALSE);	      sv_setpv(sv_err, db_strerror(status));	  }	}	OUTPUT:	    RETVALDB_ENV*DB_ENV(env)	BerkeleyDB::Env		env	PREINIT:	  dMY_CXT;	CODE:	    if (env->active)	        RETVAL = env->Env ;	    else	        RETVAL = NULL;	OUTPUT:        RETVAL voidlog_archive(env, flags=0)	u_int32_t		flags	BerkeleyDB::Env		env	PREINIT:	  dMY_CXT;	PPCODE:	{	  char ** list;	  char ** file;	  AV    * av;#ifndef AT_LEAST_DB_3          softCrash("log_archive needs at least Berkeley DB 3.x.x");#else#  ifdef AT_LEAST_DB_4	  env->Status = env->Env->log_archive(env->Env, &list, flags) ;#  else#    ifdef AT_LEAST_DB_3_3	  env->Status = log_archive(env->Env, &list, flags) ;#    else	  env->Status = log_archive(env->Env, &list, flags, safemalloc) ;#    endif#  endif#ifdef DB_ARCH_REMOVE	  if (env->Status == 0 && list != NULL && flags != DB_ARCH_REMOVE)#else	  if (env->Status == 0 && list != NULL )#endif          {	      for (file = list; *file != NULL; ++file)	      {	        XPUSHs(sv_2mortal(newSVpv(*file, 0))) ;	      }	      safefree(list);	  }#endif	}BerkeleyDB::Txn::Raw_txn_begin(env, pid=NULL, flags=0)	u_int32_t		flags	BerkeleyDB::Env		env	BerkeleyDB::Txn		pid	PREINIT:	  dMY_CXT;	CODE:	{	    DB_TXN *txn ;	    DB_TXN *p_id = NULL ;	    Trace(("txn_begin pid %d, flags %d\n", pid, flags)) ;#if DB_VERSION_MAJOR == 2	    if (env->Env->tx_info == NULL)		softCrash("Transaction Manager not enabled") ;#endif	    if (!env->txn_enabled)		softCrash("Transaction Manager not enabled") ;	    if (pid)		p_id = pid->txn ;	    env->TxnMgrStatus =#if DB_VERSION_MAJOR == 2	    	txn_begin(env->Env->tx_info, p_id, &txn) ;#else#  ifdef AT_LEAST_DB_4	    	env->Env->txn_begin(env->Env, p_id, &txn, flags) ;#  else	    	txn_begin(env->Env, p_id, &txn, flags) ;#  endif#endif	    if (env->TxnMgrStatus == 0) {	      ZMALLOC(RETVAL, BerkeleyDB_Txn_type) ;	      RETVAL->txn  = txn ;	      RETVAL->active = TRUE ;	      Trace(("_txn_begin created txn [%p] in [%p]\n", txn, RETVAL));	      hash_store_iv("BerkeleyDB::Term::Txn", (char *)RETVAL, 1) ;	    }	    else		RETVAL = NULL ;	}	OUTPUT:	    RETVAL#if DB_VERSION_MAJOR == 2#  define env_txn_checkpoint(e,k,m,f) txn_checkpoint(e->Env->tx_info, k, m)#else /* DB 3.0 or better */#  ifdef AT_LEAST_DB_4 #    define env_txn_checkpoint(e,k,m,f) e->Env->txn_checkpoint(e->Env, k, m, f)#  else#    ifdef AT_LEAST_DB_3_1#      define env_txn_checkpoint(e,k,m,f) txn_checkpoint(e->Env, k, m, 0)#    else#      define env_txn_checkpoint(e,k,m,f) txn_checkpoint(e->Env, k, m)#    endif#  endif#endifDualTypeenv_txn_checkpoint(env, kbyte, min, flags=0)	BerkeleyDB::Env		env	long			kbyte	long			min	u_int32_t		flags	PREINIT:	  dMY_CXT;HV *txn_stat(env)	BerkeleyDB::Env		env	HV *			RETVAL = NULL ;	PREINIT:	  dMY_CXT;	CODE:	{	    DB_TXN_STAT *	stat ;#ifdef AT_LEAST_DB_4	    if(env->Env->txn_stat(env->Env, &stat, 0) == 0) {#else#  ifdef AT_LEAST_DB_3_3	    if(txn_stat(env->Env, &stat) == 0) {#  else#    if DB_VERSION_MAJOR == 2	    if(txn_stat(env->Env->tx_info, &stat, safemalloc) == 0) {#    else	    if(txn_stat(env->Env, &stat, safemalloc) == 0) {#    endif#  endif#endif	    	RETVAL = (HV*)sv_2mortal((SV*)newHV()) ;		hv_store_iv(RETVAL, "st_time_ckp", stat->st_time_ckp) ;		hv_store_iv(RETVAL, "st_last_txnid", stat->st_last_txnid) ;		hv_store_iv(RETVAL, "st_maxtxns", stat->st_maxtxns) ;		hv_store_iv(RETVAL, "st_naborts", stat->st_naborts) ;		hv_store_iv(RETVAL, "st_nbegins", stat->st_nbegins) ;		hv_store_iv(RETVAL, "st_ncommits", stat->st_ncommits) ;		hv_store_iv(RETVAL, "st_nactive", stat->st_nactive) ;#if DB_VERSION_MAJOR > 2		hv_store_iv(RETVAL, "st_maxnactive", stat->st_maxnactive) ;		hv_store_iv(RETVAL, "st_regsize", stat->st_regsize) ;		hv_store_iv(RETVAL, "st_region_wait", stat->st_region_wait) ;		hv_store_iv(RETVAL, "st_region_nowait", stat->st_region_nowait) ;#endif		safefree(stat) ;	    }	}	OUTPUT:	    RETVAL#define EnDis(x)	((x) ? "Enabled" : "Disabled")voidprintEnv(env)        BerkeleyDB::Env  env	PREINIT:	  dMY_CXT;	INIT:	    ckActive_Environment(env->active) ;	CODE:#if 0	  printf("env             [0x%X]\n", env) ;	  printf("  ErrPrefix     [%s]\n", env->ErrPrefix				           ? SvPVX(env->ErrPrefix) : 0) ;	  printf("  DB_ENV\n") ;	  printf("    db_lorder   [%d]\n", env->Env.db_lorder) ;	  printf("    db_home     [%s]\n", env->Env.db_home) ;	  printf("    db_data_dir [%s]\n", env->Env.db_data_dir) ;	  printf("    db_log_dir  [%s]\n", env->Env.db_log_dir) ;	  printf("    db_tmp_dir  [%s]\n", env->Env.db_tmp_dir) ;	  printf("    lk_info     [%s]\n", EnDis(env->Env.lk_info)) ;	  printf("    lk_max      [%d]\n", env->Env.lk_max) ;	  printf("    lg_info     [%s]\n", EnDis(env->Env.lg_info)) ;	  printf("    lg_max      [%d]\n", env->Env.lg_max) ;	  printf("    mp_info     [%s]\n", EnDis(env->Env.mp_info)) ;	  printf("    mp_size     [%d]\n", env->Env.mp_size) ;	  printf("    tx_info     [%s]\n", EnDis(env->Env.tx_info)) ;	  printf("    tx_max      [%d]\n", env->Env.tx_max) ;	  printf("    flags       [%d]\n", env->Env.flags) ;	  printf("\n") ;#endifSV *errPrefix(env, prefix)        BerkeleyDB::Env  env	SV * 		 prefix	PREINIT:	  dMY_CXT;	INIT:	    ckActive_Environment(env->active) ;	CODE:	  if (env->ErrPrefix) {	      RETVAL = newSVsv(env->ErrPrefix) ;              SvPOK_only(RETVAL) ;	      sv_setsv(env->ErrPrefix, prefix) ;	  }	  else {	      RETVAL = NULL ;	      env->ErrPrefix = newSVsv(prefix) ;	  }	  SvPOK_only(env->ErrPrefix) ;#if DB_VERSION_MAJOR == 2	  env->Env->db_errpfx = SvPVX(env->ErrPrefix) ;#else	  env->Env->set_errpfx(env->Env, SvPVX(env->ErrPrefix)) ;#endif	OUTPUT:	  RETVALDualTypestatus(env)        BerkeleyDB::Env 	env	PREINIT:	  dMY_CXT;	CODE:	    RETVAL =  env->Status ;	OUTPUT:	    RETVALDualTypedb_appexit(env)        BerkeleyDB::Env 	env	PREINIT:	  dMY_CXT;	ALIAS:	close =1	INIT:	    ckActive_Environment(env->active) ;	CODE:#ifdef STRICT_CLOSE	    if (env->open_dbs)		softCrash("attempted to close an environment with %d open database(s)",			env->open_dbs) ;#endif /* STRICT_CLOSE */#if DB_VERSION_MAJOR == 2	    RETVAL = db_appexit(env->Env) ;#else	    RETVAL = (env->Env->close)(env->Env, 0) ;#endif	    env->active = FALSE ;	    hash_delete("BerkeleyDB::Term::Env", (char *)env) ;	OUTPUT:	    RETVALvoid_DESTROY(env)        BerkeleyDB::Env  env	int RETVAL = 0 ;	PREINIT:	  dMY_CXT;	CODE:	  Trace(("In BerkeleyDB::Env::DESTROY\n"));	  Trace(("    env %ld Env %ld dirty %d\n", env, &env->Env, PL_dirty)) ;	  if (env->active)#if DB_VERSION_MAJOR == 2              db_appexit(env->Env) ;#else	      (env->Env->close)(env->Env, 0) ;#endif          if (env->ErrHandle)              SvREFCNT_dec(env->ErrHandle) ;          if (env->ErrPrefix)              SvREFCNT_dec(env->ErrPrefix) ;#if DB_VERSION_MAJOR == 2          Safefree(env->Env) ;#endif          Safefree(env) ;	  hash_delete("BerkeleyDB::Term::Env", (char *)env) ;	  Trace(("End of BerkeleyDB::Env::DESTROY %d\n", RETVAL)) ;BerkeleyDB::TxnMgr::Raw_TxnMgr(env)        BerkeleyDB::Env  env	PREINIT:	  dMY_CXT;	INIT:	    ckActive_Environment(env->active) ;	    if (!env->txn_enabled)		softCrash("Transaction Manager not enabled") ;	CODE:	    ZMALLOC(RETVAL, BerkeleyDB_TxnMgr_type) ;	    RETVAL->env  = env ;	    /* hash_store_iv("BerkeleyDB::Term::TxnMgr", (char *)txn, 1) ; */	OUTPUT:	    RETVALintget_shm_key(env, id)        BerkeleyDB::Env  env	long  		 id = NO_INIT	PREINIT:	  dMY_CXT;	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_4_2	    softCrash("$env->get_shm_key needs Berkeley DB 4.2 or better") ;#else	    RETVAL = env->Env->get_shm_key(env->Env, &id);#endif	    	OUTPUT:	    RETVAL	    idintset_lg_dir(env, dir)        BerkeleyDB::Env  env	char *		 dir	PREINIT:	  dMY_CXT;	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3_1	    softCrash("$env->set_lg_dir needs Berkeley DB 3.1 or better") ;#else	    RETVAL = env->Status = env->Env->set_lg_dir(env->Env, dir);#endif	OUTPUT:	    RETVALintset_lg_bsize(env, bsize)        BerkeleyDB::Env  env	u_int32_t	 bsize	PREINIT:	  dMY_CXT;	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3	    softCrash("$env->set_lg_bsize needs Berkeley DB 3.0.55 or better") ;#else	    RETVAL = env->Status = env->Env->set_lg_bsize(env->Env, bsize);#endif	OUTPUT:	    RETVALintset_lg_max(env, lg_max)        BerkeleyDB::Env  env	u_int32_t	 lg_max	PREINIT:	  dMY_CXT;	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3	    softCrash("$env->set_lg_max needs Berkeley DB 3.0.55 or better") ;#else	    RETVAL = env->Status = env->Env->set_lg_max(env->Env, lg_max);#endif	OUTPUT:	    RETVALintset_data_dir(env, dir)        BerkeleyDB::Env  env	char *		 dir	PREINIT:	  dMY_CXT;	INIT:	  ckActive_Database(env->active) ;	CODE:#ifndef AT_LEAST_DB_3_1	    softCrash("$env->set_data_dir needs Berkeley DB 3.1 or better") ;#else            dieIfEnvOpened(env, "set_data_dir");	    RETVAL = env->Status = env->Env->set_data_dir(env->Env, dir);#endif	OUTPUT:	    RETVALintset_tmp_dir(env, d

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -