├── .gitignore ├── .gitmodules ├── 1.txt ├── Cargo.toml ├── LICENSE ├── README.md ├── build.rs ├── build.sh ├── collect.py ├── collect_rust_only.py ├── config └── schema_file │ ├── TPCC_full_schema.txt │ ├── TPCC_short_schema.txt │ └── YCSB_schema.txt ├── configure.py ├── dash_pmdk ├── bin │ ├── daxio │ ├── pmempool │ └── pmreorder ├── etc │ └── bash_completion.d │ │ └── pmempool ├── include │ ├── libpmem.h │ ├── libpmemblk.h │ ├── libpmemlog.h │ ├── libpmemobj.h │ ├── libpmemobj │ │ ├── action.h │ │ ├── action_base.h │ │ ├── atomic.h │ │ ├── atomic_base.h │ │ ├── base.h │ │ ├── ctl.h │ │ ├── iterator.h │ │ ├── iterator_base.h │ │ ├── lists_atomic.h │ │ ├── lists_atomic_base.h │ │ ├── pool.h │ │ ├── pool_base.h │ │ ├── thread.h │ │ ├── tx.h │ │ ├── tx_base.h │ │ └── types.h │ ├── libpmempool.h │ ├── libvmem.h │ └── libvmmalloc.h ├── lib │ ├── libpmem.a │ ├── libpmem.so │ ├── libpmem.so.1 │ ├── libpmem.so.1.0.0 │ ├── libpmemblk.a │ ├── libpmemblk.so │ ├── libpmemblk.so.1 │ ├── libpmemblk.so.1.0.0 │ ├── libpmemlog.a │ ├── libpmemlog.so │ ├── libpmemlog.so.1 │ ├── libpmemlog.so.1.0.0 │ ├── libpmemobj.a │ ├── libpmemobj.so │ ├── libpmemobj.so.1 │ ├── libpmemobj.so.1.0.0 │ ├── libpmempool.a │ ├── libpmempool.so │ ├── libpmempool.so.1 │ ├── libpmempool.so.1.0.0 │ ├── libvmem.a │ ├── libvmem.so │ ├── libvmem.so.1 │ ├── libvmem.so.1.0.0 │ ├── libvmmalloc.a │ ├── libvmmalloc.so │ ├── libvmmalloc.so.1 │ ├── libvmmalloc.so.1.0.0 │ ├── pkgconfig │ │ ├── libpmem.pc │ │ ├── libpmemblk.pc │ │ ├── libpmemlog.pc │ │ ├── libpmemobj.pc │ │ ├── libpmempool.pc │ │ ├── libvmem.pc │ │ └── libvmmalloc.pc │ └── pmdk_debug │ │ ├── libpmem.a │ │ ├── libpmem.so │ │ ├── libpmem.so.1 │ │ ├── libpmem.so.1.0.0 │ │ ├── libpmemblk.a │ │ ├── libpmemblk.so │ │ ├── libpmemblk.so.1 │ │ ├── libpmemblk.so.1.0.0 │ │ ├── libpmemlog.a │ │ ├── libpmemlog.so │ │ ├── libpmemlog.so.1 │ │ ├── libpmemlog.so.1.0.0 │ │ ├── libpmemobj.a │ │ ├── libpmemobj.so │ │ ├── libpmemobj.so.1 │ │ ├── libpmemobj.so.1.0.0 │ │ ├── libpmempool.a │ │ ├── libpmempool.so │ │ ├── libpmempool.so.1 │ │ ├── libpmempool.so.1.0.0 │ │ ├── libvmem.a │ │ ├── libvmem.so │ │ ├── libvmem.so.1 │ │ ├── libvmem.so.1.0.0 │ │ ├── libvmmalloc.a │ │ ├── libvmmalloc.so │ │ ├── libvmmalloc.so.1 │ │ └── libvmmalloc.so.1.0.0 └── share │ ├── man │ ├── man1 │ │ ├── daxio.1.gz │ │ ├── pmempool-check.1.gz │ │ ├── pmempool-convert.1.gz │ │ ├── pmempool-create.1.gz │ │ ├── pmempool-dump.1.gz │ │ ├── pmempool-feature.1.gz │ │ ├── pmempool-info.1.gz │ │ ├── pmempool-rm.1.gz │ │ ├── pmempool-sync.1.gz │ │ ├── pmempool-transform.1.gz │ │ ├── pmempool.1.gz │ │ └── pmreorder.1.gz │ ├── man3 │ │ ├── d_ro.3.gz │ │ ├── d_rw.3.gz │ │ ├── direct_ro.3.gz │ │ ├── direct_rw.3.gz │ │ ├── oid_equals.3.gz │ │ ├── oid_instanceof.3.gz │ │ ├── oid_is_null.3.gz │ │ ├── pmem_check_version.3.gz │ │ ├── pmem_deep_drain.3.gz │ │ ├── pmem_deep_flush.3.gz │ │ ├── pmem_deep_persist.3.gz │ │ ├── pmem_drain.3.gz │ │ ├── pmem_errormsg.3.gz │ │ ├── pmem_flush.3.gz │ │ ├── pmem_has_auto_flush.3.gz │ │ ├── pmem_has_hw_drain.3.gz │ │ ├── pmem_is_pmem.3.gz │ │ ├── pmem_map_file.3.gz │ │ ├── pmem_memcpy.3.gz │ │ ├── pmem_memcpy_nodrain.3.gz │ │ ├── pmem_memcpy_persist.3.gz │ │ ├── pmem_memmove.3.gz │ │ ├── pmem_memmove_nodrain.3.gz │ │ ├── pmem_memmove_persist.3.gz │ │ ├── pmem_memset.3.gz │ │ ├── pmem_memset_nodrain.3.gz │ │ ├── pmem_memset_persist.3.gz │ │ ├── pmem_msync.3.gz │ │ ├── pmem_persist.3.gz │ │ ├── pmem_unmap.3.gz │ │ ├── pmemblk_bsize.3.gz │ │ ├── pmemblk_check.3.gz │ │ ├── pmemblk_check_version.3.gz │ │ ├── pmemblk_close.3.gz │ │ ├── pmemblk_create.3.gz │ │ ├── pmemblk_ctl_exec.3.gz │ │ ├── pmemblk_ctl_get.3.gz │ │ ├── pmemblk_ctl_set.3.gz │ │ ├── pmemblk_errormsg.3.gz │ │ ├── pmemblk_nblock.3.gz │ │ ├── pmemblk_open.3.gz │ │ ├── pmemblk_read.3.gz │ │ ├── pmemblk_set_error.3.gz │ │ ├── pmemblk_set_funcs.3.gz │ │ ├── pmemblk_set_zero.3.gz │ │ ├── pmemblk_write.3.gz │ │ ├── pmemlog_append.3.gz │ │ ├── pmemlog_appendv.3.gz │ │ ├── pmemlog_check.3.gz │ │ ├── pmemlog_check_version.3.gz │ │ ├── pmemlog_close.3.gz │ │ ├── pmemlog_create.3.gz │ │ ├── pmemlog_ctl_exec.3.gz │ │ ├── pmemlog_ctl_get.3.gz │ │ ├── pmemlog_ctl_set.3.gz │ │ ├── pmemlog_errormsg.3.gz │ │ ├── pmemlog_nbyte.3.gz │ │ ├── pmemlog_open.3.gz │ │ ├── pmemlog_rewind.3.gz │ │ ├── pmemlog_set_funcs.3.gz │ │ ├── pmemlog_tell.3.gz │ │ ├── pmemlog_walk.3.gz │ │ ├── pmemobj_action.3.gz │ │ ├── pmemobj_alloc.3.gz │ │ ├── pmemobj_alloc_usable_size.3.gz │ │ ├── pmemobj_cancel.3.gz │ │ ├── pmemobj_check.3.gz │ │ ├── pmemobj_check_version.3.gz │ │ ├── pmemobj_close.3.gz │ │ ├── pmemobj_cond_broadcast.3.gz │ │ ├── pmemobj_cond_signal.3.gz │ │ ├── pmemobj_cond_timedwait.3.gz │ │ ├── pmemobj_cond_wait.3.gz │ │ ├── pmemobj_cond_zero.3.gz │ │ ├── pmemobj_create.3.gz │ │ ├── pmemobj_ctl_exec.3.gz │ │ ├── pmemobj_ctl_get.3.gz │ │ ├── pmemobj_ctl_set.3.gz │ │ ├── pmemobj_defer_free.3.gz │ │ ├── pmemobj_direct.3.gz │ │ ├── pmemobj_drain.3.gz │ │ ├── pmemobj_errormsg.3.gz │ │ ├── pmemobj_f_mem_nodrain.3.gz │ │ ├── pmemobj_f_mem_noflush.3.gz │ │ ├── pmemobj_f_mem_nontemporal.3.gz │ │ ├── pmemobj_f_mem_temporal.3.gz │ │ ├── pmemobj_f_mem_wb.3.gz │ │ ├── pmemobj_f_mem_wc.3.gz │ │ ├── pmemobj_f_relaxed.3.gz │ │ ├── pmemobj_first.3.gz │ │ ├── pmemobj_flush.3.gz │ │ ├── pmemobj_free.3.gz │ │ ├── pmemobj_list_insert.3.gz │ │ ├── pmemobj_list_insert_new.3.gz │ │ ├── pmemobj_list_move.3.gz │ │ ├── pmemobj_list_remove.3.gz │ │ ├── pmemobj_memcpy.3.gz │ │ ├── pmemobj_memcpy_persist.3.gz │ │ ├── pmemobj_memmove.3.gz │ │ ├── pmemobj_memset.3.gz │ │ ├── pmemobj_memset_persist.3.gz │ │ ├── pmemobj_mutex_lock.3.gz │ │ ├── pmemobj_mutex_timedlock.3.gz │ │ ├── pmemobj_mutex_trylock.3.gz │ │ ├── pmemobj_mutex_unlock.3.gz │ │ ├── pmemobj_mutex_zero.3.gz │ │ ├── pmemobj_next.3.gz │ │ ├── pmemobj_oid.3.gz │ │ ├── pmemobj_open.3.gz │ │ ├── pmemobj_persist.3.gz │ │ ├── pmemobj_pool_by_oid.3.gz │ │ ├── pmemobj_pool_by_ptr.3.gz │ │ ├── pmemobj_publish.3.gz │ │ ├── pmemobj_realloc.3.gz │ │ ├── pmemobj_reserve.3.gz │ │ ├── pmemobj_root.3.gz │ │ ├── pmemobj_root_construct.3.gz │ │ ├── pmemobj_root_size.3.gz │ │ ├── pmemobj_rwlock_rdlock.3.gz │ │ ├── pmemobj_rwlock_timedrdlock.3.gz │ │ ├── pmemobj_rwlock_timedwrlock.3.gz │ │ ├── pmemobj_rwlock_tryrdlock.3.gz │ │ ├── pmemobj_rwlock_trywrlock.3.gz │ │ ├── pmemobj_rwlock_unlock.3.gz │ │ ├── pmemobj_rwlock_wrlock.3.gz │ │ ├── pmemobj_rwlock_zero.3.gz │ │ ├── pmemobj_set_funcs.3.gz │ │ ├── pmemobj_set_value.3.gz │ │ ├── pmemobj_strdup.3.gz │ │ ├── pmemobj_tx_abort.3.gz │ │ ├── pmemobj_tx_add_range.3.gz │ │ ├── pmemobj_tx_add_range_direct.3.gz │ │ ├── pmemobj_tx_alloc.3.gz │ │ ├── pmemobj_tx_begin.3.gz │ │ ├── pmemobj_tx_commit.3.gz │ │ ├── pmemobj_tx_end.3.gz │ │ ├── pmemobj_tx_errno.3.gz │ │ ├── pmemobj_tx_free.3.gz │ │ ├── pmemobj_tx_lock.3.gz │ │ ├── pmemobj_tx_log_append_buffer.3.gz │ │ ├── pmemobj_tx_log_auto_alloc.3.gz │ │ ├── pmemobj_tx_log_intents_max_size.3.gz │ │ ├── pmemobj_tx_log_snapshots_max_size.3.gz │ │ ├── pmemobj_tx_process.3.gz │ │ ├── pmemobj_tx_publish.3.gz │ │ ├── pmemobj_tx_realloc.3.gz │ │ ├── pmemobj_tx_stage.3.gz │ │ ├── pmemobj_tx_strdup.3.gz │ │ ├── pmemobj_tx_wcsdup.3.gz │ │ ├── pmemobj_tx_xadd_range.3.gz │ │ ├── pmemobj_tx_xadd_range_direct.3.gz │ │ ├── pmemobj_tx_xalloc.3.gz │ │ ├── pmemobj_tx_zalloc.3.gz │ │ ├── pmemobj_tx_zrealloc.3.gz │ │ ├── pmemobj_type_num.3.gz │ │ ├── pmemobj_volatile.3.gz │ │ ├── pmemobj_wcsdup.3.gz │ │ ├── pmemobj_xalloc.3.gz │ │ ├── pmemobj_xflush.3.gz │ │ ├── pmemobj_xpersist.3.gz │ │ ├── pmemobj_xreserve.3.gz │ │ ├── pmemobj_zalloc.3.gz │ │ ├── pmemobj_zrealloc.3.gz │ │ ├── pmempool_check.3.gz │ │ ├── pmempool_check_end.3.gz │ │ ├── pmempool_check_init.3.gz │ │ ├── pmempool_check_version.3.gz │ │ ├── pmempool_errormsg.3.gz │ │ ├── pmempool_feature_disable.3.gz │ │ ├── pmempool_feature_enable.3.gz │ │ ├── pmempool_feature_query.3.gz │ │ ├── pmempool_rm.3.gz │ │ ├── pmempool_sync.3.gz │ │ ├── pmempool_transform.3.gz │ │ ├── pobj_alloc.3.gz │ │ ├── pobj_first.3.gz │ │ ├── pobj_first_type_num.3.gz │ │ ├── pobj_foreach.3.gz │ │ ├── pobj_foreach_safe.3.gz │ │ ├── pobj_foreach_safe_type.3.gz │ │ ├── pobj_foreach_type.3.gz │ │ ├── pobj_free.3.gz │ │ ├── pobj_layout_begin.3.gz │ │ ├── pobj_layout_end.3.gz │ │ ├── pobj_layout_name.3.gz │ │ ├── pobj_layout_root.3.gz │ │ ├── pobj_layout_toid.3.gz │ │ ├── pobj_layout_types_num.3.gz │ │ ├── pobj_list_empty.3.gz │ │ ├── pobj_list_entry.3.gz │ │ ├── pobj_list_first.3.gz │ │ ├── pobj_list_foreach.3.gz │ │ ├── pobj_list_foreach_reverse.3.gz │ │ ├── pobj_list_head.3.gz │ │ ├── pobj_list_insert_after.3.gz │ │ ├── pobj_list_insert_before.3.gz │ │ ├── pobj_list_insert_head.3.gz │ │ ├── pobj_list_insert_new_after.3.gz │ │ ├── pobj_list_insert_new_before.3.gz │ │ ├── pobj_list_insert_new_head.3.gz │ │ ├── pobj_list_insert_new_tail.3.gz │ │ ├── pobj_list_insert_tail.3.gz │ │ ├── pobj_list_last.3.gz │ │ ├── pobj_list_move_element_after.3.gz │ │ ├── pobj_list_move_element_before.3.gz │ │ ├── pobj_list_move_element_head.3.gz │ │ ├── pobj_list_move_element_tail.3.gz │ │ ├── pobj_list_next.3.gz │ │ ├── pobj_list_prev.3.gz │ │ ├── pobj_list_remove.3.gz │ │ ├── pobj_list_remove_free.3.gz │ │ ├── pobj_new.3.gz │ │ ├── pobj_next.3.gz │ │ ├── pobj_next_type_num.3.gz │ │ ├── pobj_realloc.3.gz │ │ ├── pobj_reserve_alloc.3.gz │ │ ├── pobj_reserve_new.3.gz │ │ ├── pobj_root.3.gz │ │ ├── pobj_xreserve_alloc.3.gz │ │ ├── pobj_xreserve_new.3.gz │ │ ├── pobj_zalloc.3.gz │ │ ├── pobj_znew.3.gz │ │ ├── pobj_zrealloc.3.gz │ │ ├── toid.3.gz │ │ ├── toid_assign.3.gz │ │ ├── toid_declare.3.gz │ │ ├── toid_declare_root.3.gz │ │ ├── toid_equals.3.gz │ │ ├── toid_is_null.3.gz │ │ ├── toid_offsetof.3.gz │ │ ├── toid_type_num.3.gz │ │ ├── toid_type_num_of.3.gz │ │ ├── toid_typeof.3.gz │ │ ├── toid_valid.3.gz │ │ ├── tx_add.3.gz │ │ ├── tx_add_direct.3.gz │ │ ├── tx_add_field.3.gz │ │ ├── tx_add_field_direct.3.gz │ │ ├── tx_alloc.3.gz │ │ ├── tx_begin.3.gz │ │ ├── tx_begin_cb.3.gz │ │ ├── tx_begin_param.3.gz │ │ ├── tx_end.3.gz │ │ ├── tx_finally.3.gz │ │ ├── tx_free.3.gz │ │ ├── tx_memcpy.3.gz │ │ ├── tx_memset.3.gz │ │ ├── tx_new.3.gz │ │ ├── tx_onabort.3.gz │ │ ├── tx_oncommit.3.gz │ │ ├── tx_realloc.3.gz │ │ ├── tx_set.3.gz │ │ ├── tx_set_direct.3.gz │ │ ├── tx_strdup.3.gz │ │ ├── tx_wcsdup.3.gz │ │ ├── tx_xadd.3.gz │ │ ├── tx_xadd_direct.3.gz │ │ ├── tx_xadd_field.3.gz │ │ ├── tx_xadd_field_direct.3.gz │ │ ├── tx_xalloc.3.gz │ │ ├── tx_zalloc.3.gz │ │ ├── tx_znew.3.gz │ │ ├── tx_zrealloc.3.gz │ │ ├── vmem_aligned_alloc.3.gz │ │ ├── vmem_calloc.3.gz │ │ ├── vmem_check.3.gz │ │ ├── vmem_check_version.3.gz │ │ ├── vmem_create.3.gz │ │ ├── vmem_create_in_region.3.gz │ │ ├── vmem_delete.3.gz │ │ ├── vmem_errormsg.3.gz │ │ ├── vmem_free.3.gz │ │ ├── vmem_malloc.3.gz │ │ ├── vmem_malloc_usable_size.3.gz │ │ ├── vmem_realloc.3.gz │ │ ├── vmem_set_funcs.3.gz │ │ ├── vmem_stats_print.3.gz │ │ ├── vmem_strdup.3.gz │ │ └── vmem_wcsdup.3.gz │ ├── man5 │ │ ├── pmem_ctl.5.gz │ │ └── poolset.5.gz │ └── man7 │ │ ├── libpmem.7.gz │ │ ├── libpmemblk.7.gz │ │ ├── libpmemlog.7.gz │ │ ├── libpmemobj.7.gz │ │ ├── libpmempool.7.gz │ │ ├── libvmem.7.gz │ │ └── libvmmalloc.7.gz │ └── pmreorder │ ├── binaryoutputhandler.py │ ├── consistencycheckwrap.py │ ├── loggingfacility.py │ ├── markerparser.py │ ├── memoryoperations.py │ ├── operationfactory.py │ ├── opscontext.py │ ├── pmreorder.py │ ├── reorderengines.py │ ├── reorderexceptions.py │ ├── statemachine.py │ └── utils.py ├── restore.sh ├── result.csv ├── result.xlsx ├── result_rust_only.xlsx ├── run_rust_only_test.py ├── run_test.py ├── rust-toolchain ├── src ├── c │ ├── ffi.rs │ └── mod.rs ├── config.rs ├── customer_config.rs ├── lib.rs ├── main.rs ├── mvcc_config │ ├── delta.rs │ └── mod.rs ├── storage │ ├── allocator.rs │ ├── catalog.rs │ ├── delta.rs │ ├── global.rs │ ├── index │ │ ├── dash.rs │ │ ├── dashstring.rs │ │ ├── mod.rs │ │ └── nbtree.rs │ ├── mod.rs │ ├── nvm_file.rs │ ├── row.rs │ ├── schema.rs │ ├── table.rs │ ├── table │ │ ├── buffer.rs │ │ ├── crud.rs │ │ └── index.rs │ ├── timestamp.rs │ └── variable_table.rs ├── tpcc │ ├── mod.rs │ ├── tpcc.rs │ ├── tpcc_index.rs │ ├── tpcc_init.rs │ ├── tpcc_isolation.rs │ ├── tpcc_query.rs │ ├── tpcc_test.rs │ ├── tpcc_txn_asycn.rs │ └── tpcc_txn_sycn.rs ├── transaction │ ├── access.rs │ ├── clog.rs │ ├── mod.rs │ ├── snapshot │ │ ├── clog_snapshot.rs │ │ ├── mod.rs │ │ └── to_snapshot.rs │ ├── transaction.rs │ └── transaction_buffer.rs ├── utils │ ├── executor │ │ ├── executor.rs │ │ ├── mem.rs │ │ └── mod.rs │ ├── file.rs │ ├── io.rs │ ├── macros.rs │ ├── mod.rs │ └── persist │ │ ├── mod.rs │ │ ├── persist_array.rs │ │ ├── persist_bitmap.rs │ │ └── persist_struct.rs └── ycsb │ ├── mod.rs │ ├── ycsb_query.rs │ ├── ycsb_test.rs │ └── ycsb_txn.rs ├── tpcc.sh └── ycsb.sh /.gitignore: -------------------------------------------------------------------------------- 1 | result/* 2 | .vscode/ 3 | build/ 4 | target/ 5 | nohup.out 6 | error.txt 7 | latency.txt 8 | Cargo.lock 9 | data.csv 10 | *.pyc 11 | perf.data 12 | perf.data.old 13 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "dash"] 2 | path = dash 3 | url = https://github.com/madsys-dev/dash.git 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 MadSys Research Group 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /build.rs: -------------------------------------------------------------------------------- 1 | // extern crate cmake; 2 | extern crate cmake; 3 | use cmake::Config; 4 | 5 | fn main() { 6 | // Builds the project in the directory located in `libdouble`, installing it 7 | // into $OUT_DIR 8 | // let dst = Config::new("NBTree") 9 | // .cflag("-std=c++11 ${CMAKE_CXX_FLAGS} -DUSE_NVM_MALLOC -DCLEAR_NVM_POOL -g -O2 -mrtm -ldl -lpthread -lm") 10 | // .build(); 11 | #[cfg(feature = "dash")] 12 | { 13 | let dst = cmake::build("dash"); 14 | println!("cargo:rustc-link-search=native={}", dst.display()); 15 | 16 | println!("cargo:rustc-link-search=./dash_pmdk/lib"); 17 | 18 | println!("cargo:rustc-link-search=/usr/lib/x86_64-linux-gnu/"); 19 | println!("cargo:rustc-link-search=/usr/lib64"); 20 | 21 | // println!("cargo:rustc-link-search=./NBTree/third-party-lib/"); 22 | // println!("cargo:rustc-link-search=./NBTree/include/"); 23 | 24 | // println!("cargo:rustc-link-search=./NBTree/build"); 25 | // println!("cargo:rustc-link-search=./dash"); 26 | println!("cargo:rustc-link-search=./dash/build"); 27 | 28 | // println!("cargo:rustc-link-lib=dylib=boost_system"); 29 | // println!("cargo:rustc-link-lib=dylib=boost_thread"); 30 | // println!("cargo:rustc-link-lib=dylib=pthread"); 31 | println!("cargo:rustc-link-lib=dylib=pmemobj"); 32 | println!("cargo:rustc-link-lib=dylib=pmem"); 33 | println!("cargo:rustc-link-lib=dylib=stdc++"); 34 | 35 | // println!("cargo:rustc-link-lib=dylib=jemalloc"); 36 | // println!("cargo:rustc-link-lib=dylib=gcc"); 37 | // println!("cargo:rustc-link-lib=dylib=tbb"); 38 | // println!("cargo:rustc-link-lib=dylib=tbbmalloc_proxy"); 39 | // println!("cargo:rustc-link-lib=dylib=tbbmalloc"); 40 | } 41 | #[cfg(feature = "nbtree")] 42 | { 43 | let dst = cmake::build("NBTree"); 44 | println!("cargo:rustc-link-search=native={}", dst.display()); 45 | 46 | println!("cargo:rustc-link-search=./NBTree/third-party-lib/"); 47 | println!("cargo:rustc-link-search=./NBTree/include/"); 48 | 49 | println!("cargo:rustc-link-search=./NBTree/build"); 50 | 51 | println!("cargo:rustc-link-lib=dylib=boost_system"); 52 | println!("cargo:rustc-link-lib=dylib=boost_thread"); 53 | println!("cargo:rustc-link-lib=dylib=pthread"); 54 | println!("cargo:rustc-link-lib=dylib=pmemobj"); 55 | println!("cargo:rustc-link-lib=dylib=pmem"); 56 | println!("cargo:rustc-link-lib=dylib=stdc++"); 57 | 58 | println!("cargo:rustc-link-lib=dylib=jemalloc"); 59 | println!("cargo:rustc-link-lib=dylib=gcc"); 60 | println!("cargo:rustc-link-lib=dylib=tbb"); 61 | println!("cargo:rustc-link-lib=dylib=tbbmalloc_proxy"); 62 | println!("cargo:rustc-link-lib=dylib=tbbmalloc"); 63 | } 64 | // println!("cargo:rustc-link-lib=dylib=dash"); 65 | 66 | // println!("cargo:rustc-link-lib=static=btree"); 67 | } 68 | // fn main() { 69 | // println!("cargo:rustc-link-search=./src/c"); 70 | // } 71 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | current_path=$(pwd) 2 | export LD_LIBRARY_PATH="$current_path/dash_pmdk/lib:$LD_LIBRARY_PATH" 3 | -------------------------------------------------------------------------------- /config/schema_file/TPCC_full_schema.txt: -------------------------------------------------------------------------------- 1 | //size,type,name 2 | TABLE=WAREHOUSE 3 | 8,int64_t,W_ID 4 | 10,string,W_NAME 5 | 20,string,W_STREET_1 6 | 20,string,W_STREET_2 7 | 20,string,W_CITY 8 | 2,string,W_STATE 9 | 9,string,W_ZIP 10 | 8,double,W_TAX 11 | 8,double,W_YTD 12 | 13 | TABLE=DISTRICT 14 | 8,int64_t,D_ID 15 | 8,int64_t,D_W_ID 16 | 10,string,D_NAME 17 | 20,string,D_STREET_1 18 | 20,string,D_STREET_2 19 | 20,string,D_CITY 20 | 2,string,D_STATE 21 | 9,string,D_ZIP 22 | 8,double,D_TAX 23 | 8,double,D_YTD 24 | 8,int64_t,D_NEXT_O_ID 25 | 26 | TABLE=CUSTOMER 27 | 8,int64_t,C_ID 28 | 8,int64_t,C_D_ID 29 | 8,int64_t,C_W_ID 30 | 16,string,C_FIRST 31 | 2,string,C_MIDDLE 32 | 32,string,C_LAST 33 | 20,string,C_STREET_1 34 | 20,string,C_STREET_2 35 | 20,string,C_CITY 36 | 2,string,C_STATE 37 | 9,string,C_ZIP 38 | 16,string,C_PHONE 39 | 8,int64_t,C_SINCE 40 | 2,string,C_CREDIT 41 | 8,int64_t,C_CREDIT_LIM 42 | 8,int64_t,C_DISCOUNT 43 | 8,double,C_BALANCE 44 | 8,double,C_YTD_PAYMENT 45 | 8,int64_t,C_PAYMENT_CNT 46 | 8,int64_t,C_DELIVERY_CNT 47 | 500,string,C_DATA 48 | 49 | TABLE=HISTORY 50 | 8,int64_t,H_C_ID 51 | 8,int64_t,H_C_D_ID 52 | 8,int64_t,H_C_W_ID 53 | 8,int64_t,H_D_ID 54 | 8,int64_t,H_W_ID 55 | 8,int64_t,H_DATE 56 | 8,double,H_AMOUNT 57 | 24,string,H_DATA 58 | 59 | TABLE=NEW-ORDER 60 | 8,int64_t,NO_O_ID 61 | 8,int64_t,NO_D_ID 62 | 8,int64_t,NO_W_ID 63 | 64 | TABLE=ORDER 65 | 8,int64_t,O_ID 66 | 8,int64_t,O_C_ID 67 | 8,int64_t,O_D_ID 68 | 8,int64_t,O_W_ID 69 | 8,int64_t,O_ENTRY_D 70 | 8,int64_t,O_CARRIER_ID 71 | 8,int64_t,O_OL_CNT 72 | 8,int64_t,O_ALL_LOCAL 73 | 74 | TABLE=ORDER-LINE 75 | 8,int64_t,OL_O_ID 76 | 8,int64_t,OL_D_ID 77 | 8,int64_t,OL_W_ID 78 | 8,int64_t,OL_NUMBER 79 | 8,int64_t,OL_I_ID 80 | 8,int64_t,OL_SUPPLY_W_ID 81 | 8,int64_t,OL_DELIVERY_D 82 | 8,int64_t,OL_QUANTITY 83 | 8,double,OL_AMOUNT 84 | 24,string,OL_DIST_INFO 85 | 86 | TABLE=ITEM 87 | 8,int64_t,I_ID 88 | 8,int64_t,I_IM_ID 89 | 24,string,I_NAME 90 | 8,double,I_PRICE 91 | 50,string,I_DATA 92 | 93 | TABLE=STOCK 94 | 8,int64_t,S_I_ID 95 | 8,int64_t,S_W_ID 96 | 8,int64_t,S_QUANTITY 97 | 24,string,S_DIST_01 98 | 24,string,S_DIST_02 99 | 24,string,S_DIST_03 100 | 24,string,S_DIST_04 101 | 24,string,S_DIST_05 102 | 24,string,S_DIST_06 103 | 24,string,S_DIST_07 104 | 24,string,S_DIST_08 105 | 24,string,S_DIST_09 106 | 24,string,S_DIST_10 107 | 8,int64_t,S_YTD 108 | 8,int64_t,S_ORDER_CNT 109 | 8,int64_t,S_REMOTE_CNT 110 | 50,string,S_DATA 111 | 112 | INDEX=ITEM_IDX 113 | ITEM,400000 114 | 115 | INDEX=WAREHOUSE_IDX 116 | WAREHOUSE,100 117 | 118 | INDEX=DISTRICT_IDX 119 | DISTRICT,1000 120 | 121 | INDEX=CUSTOMER_ID_IDX 122 | CUSTOMER,120000 123 | 124 | INDEX=CUSTOMER_LAST_IDX 125 | CUSTOMER,120000 126 | 127 | INDEX=STOCK_IDX 128 | STOCK,400000 129 | 130 | RINDEX=ORDER-LINE_IDX 131 | ORDER-LINE, 20000 -------------------------------------------------------------------------------- /config/schema_file/TPCC_short_schema.txt: -------------------------------------------------------------------------------- 1 | //size,type,name 2 | TABLE=WAREHOUSE 3 | 8,int64_t,W_ID 4 | 10,string,W_NAME 5 | 20,string,W_STREET_1 6 | 20,string,W_STREET_2 7 | 20,string,W_CITY 8 | 2,string,W_STATE 9 | 9,string,W_ZIP 10 | 8,double,W_TAX 11 | 8,double,W_YTD 12 | 13 | TABLE=DISTRICT 14 | 8,int64_t,D_ID 15 | 8,int64_t,D_W_ID 16 | 10,string,D_NAME 17 | 20,string,D_STREET_1 18 | 20,string,D_STREET_2 19 | 20,string,D_CITY 20 | 2,string,D_STATE 21 | 9,string,D_ZIP 22 | 8,double,D_TAX 23 | 8,double,D_YTD 24 | 8,int64_t,D_NEXT_O_ID 25 | 26 | TABLE=CUSTOMER 27 | 8,int64_t,C_ID 28 | 8,int64_t,C_D_ID 29 | 8,int64_t,C_W_ID 30 | 2,string,C_MIDDLE 31 | 32,string,C_LAST 32 | 2,string,C_STATE 33 | 2,string,C_CREDIT 34 | 8,double,C_DISCOUNT 35 | 8,double,C_BALANCE 36 | 8,double,C_YTD_PAYMENT 37 | 8,int64_t,C_PAYMENT_CNT 38 | 39 | TABLE=HISTORY 40 | 8,int64_t,H_C_ID 41 | 8,int64_t,H_C_D_ID 42 | 8,int64_t,H_C_W_ID 43 | 8,int64_t,H_DATE 44 | 8,double,H_AMOUNT 45 | 46 | TABLE=NEW-ORDER 47 | 8,int64_t,NO_O_ID 48 | 8,int64_t,NO_D_ID 49 | 8,int64_t,NO_W_ID 50 | 51 | TABLE=ORDER 52 | 8,int64_t,O_ID 53 | 8,int64_t,O_C_ID 54 | 8,int64_t,O_D_ID 55 | 8,int64_t,O_W_ID 56 | 8,int64_t,O_ENTRY_D 57 | 8,int64_t,O_CARRIER_ID 58 | 8,int64_t,O_OL_CNT 59 | 8,int64_t,O_ALL_LOCAL 60 | 61 | TABLE=ORDER-LINE 62 | 8,int64_t,OL_O_ID 63 | 8,int64_t,OL_D_ID 64 | 8,int64_t,OL_W_ID 65 | 8,int64_t,OL_NUMBER 66 | 8,int64_t,OL_I_ID 67 | 68 | TABLE=ITEM 69 | 8,int64_t,I_ID 70 | 8,int64_t,I_IM_ID 71 | 24,string,I_NAME 72 | 8,double,I_PRICE 73 | 50,string,I_DATA 74 | 75 | TABLE=STOCK 76 | 8,int64_t,S_I_ID 77 | 8,int64_t,S_W_ID 78 | 8,int64_t,S_QUANTITY 79 | 8,int64_t,S_REMOTE_CNT 80 | 81 | INDEX=ITEM_IDX 82 | ITEM,10000 83 | 84 | INDEX=WAREHOUSE_IDX 85 | WAREHOUSE,1 86 | 87 | INDEX=DISTRICT_IDX 88 | DISTRICT,10 89 | 90 | INDEX=CUSTOMER_ID_IDX 91 | CUSTOMER,40000 92 | 93 | INDEX=CUSTOMER_LAST_IDX 94 | CUSTOMER,40000 95 | 96 | INDEX=STOCK_IDX 97 | STOCK,10000 98 | -------------------------------------------------------------------------------- /config/schema_file/YCSB_schema.txt: -------------------------------------------------------------------------------- 1 | //size, type, name 2 | TABLE=MAIN_TABLE 3 | 10,string,F0 4 | 10,string,F1 5 | 10,string,F2 6 | 10,string,F3 7 | 10,string,F4 8 | 10,string,F5 9 | 10,string,F6 10 | 10,string,F7 11 | 10,string,F8 12 | 10,string,F9 13 | 14 | INDEX=MAIN_INDEX 15 | MAIN_TABLE,100000 16 | -------------------------------------------------------------------------------- /configure.py: -------------------------------------------------------------------------------- 1 | numa_set = "taskset -c 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96" 2 | db_file_path = "/mnt/pmem0/_test_persist" 3 | pm_index = "/mnt/pmem0/pmem_hash.data" 4 | pm_btree_index = "/mnt/pmem0/pmem_btree.data" 5 | TPCC_WAREHOUSE = 2048 6 | YCSB_TOTAL = "256 * 1024 * 1024" 7 | 8 | if __name__ == "__main__": 9 | with open('tpcc.sh', "w") as script: 10 | script.write("rm %s\n"%pm_index) 11 | script.write("cd dash\n") 12 | script.write("git checkout tpcc\n") 13 | script.write("cd ..\n") 14 | script.write(numa_set + " cargo test tpcc_test_sync --release -- --nocapture\n") 15 | 16 | with open('ycsb.sh', "w") as script: 17 | script.write("rm %s\n"%pm_index) 18 | script.write("cd dash\n") 19 | script.write("git checkout ycsb\n") 20 | script.write("cd ..\n") 21 | script.write(numa_set + " cargo test ycsb_test_sync --release -- --nocapture\n") 22 | 23 | with open('restore.sh', "w") as script: 24 | script.write(numa_set + " cargo test ycsb_test_reload --release -- --nocapture\n") 25 | 26 | with open('src/customer_config.rs', "w") as rust_code: 27 | rust_code.write('pub const TPCC_WAREHOUSE: u64 = %d;\n'%TPCC_WAREHOUSE) 28 | rust_code.write('pub const YCSB_TOTAL: u64 = %s;\n'%YCSB_TOTAL) 29 | rust_code.write('pub const NVM_FILE_PATH: &str = "%s";\n'%db_file_path) 30 | rust_code.write('pub const INDEX_FILE_PATH: &str = "%s";\n'%pm_index) 31 | rust_code.write('pub const BTREE_FILE_PATH: &str = "%s";\n'%pm_btree_index) 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /dash_pmdk/bin/daxio: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/bin/daxio -------------------------------------------------------------------------------- /dash_pmdk/bin/pmempool: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/bin/pmempool -------------------------------------------------------------------------------- /dash_pmdk/bin/pmreorder: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | exec python3 /usr/local/share/pmreorder/pmreorder.py 1.6+git703.g8cb972fe3 $* 3 | -------------------------------------------------------------------------------- /dash_pmdk/include/libpmemobj.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2019, Intel Corporation 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * * Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * * Neither the name of the copyright holder nor the names of its 17 | * contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | /* 34 | * libpmemobj.h -- definitions of libpmemobj entry points 35 | * 36 | * This library provides support for programming with persistent memory (pmem). 37 | * 38 | * libpmemobj provides a pmem-resident transactional object store. 39 | * 40 | * See libpmemobj(7) for details. 41 | */ 42 | 43 | #ifndef LIBPMEMOBJ_H 44 | #define LIBPMEMOBJ_H 1 45 | 46 | #include 47 | #include 48 | #include 49 | #include 50 | #include 51 | #include 52 | #include 53 | #include 54 | 55 | #endif /* libpmemobj.h */ 56 | -------------------------------------------------------------------------------- /dash_pmdk/include/libpmemobj/action.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017-2018, Intel Corporation 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * * Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * * Neither the name of the copyright holder nor the names of its 17 | * contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | /* 34 | * libpmemobj/action.h -- definitions of libpmemobj action interface 35 | */ 36 | 37 | #ifndef LIBPMEMOBJ_ACTION_H 38 | #define LIBPMEMOBJ_ACTION_H 1 39 | 40 | #include 41 | 42 | #ifdef __cplusplus 43 | extern "C" { 44 | #endif 45 | 46 | #define POBJ_RESERVE_NEW(pop, t, act)\ 47 | ((TOID(t))pmemobj_reserve(pop, act, sizeof(t), TOID_TYPE_NUM(t))) 48 | 49 | #define POBJ_RESERVE_ALLOC(pop, t, size, act)\ 50 | ((TOID(t))pmemobj_reserve(pop, act, size, TOID_TYPE_NUM(t))) 51 | 52 | #define POBJ_XRESERVE_NEW(pop, t, act, flags)\ 53 | ((TOID(t))pmemobj_xreserve(pop, act, sizeof(t), TOID_TYPE_NUM(t), flags)) 54 | 55 | #define POBJ_XRESERVE_ALLOC(pop, t, size, act, flags)\ 56 | ((TOID(t))pmemobj_xreserve(pop, act, size, TOID_TYPE_NUM(t), flags)) 57 | 58 | #ifdef __cplusplus 59 | } 60 | #endif 61 | 62 | #endif /* libpmemobj/action_base.h */ 63 | -------------------------------------------------------------------------------- /dash_pmdk/include/libpmemobj/action_base.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017-2019, Intel Corporation 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * * Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * * Neither the name of the copyright holder nor the names of its 17 | * contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | /* 34 | * libpmemobj/action_base.h -- definitions of libpmemobj action interface 35 | */ 36 | 37 | #ifndef LIBPMEMOBJ_ACTION_BASE_H 38 | #define LIBPMEMOBJ_ACTION_BASE_H 1 39 | 40 | #include 41 | 42 | #ifdef __cplusplus 43 | extern "C" { 44 | #endif 45 | 46 | enum pobj_action_type { 47 | /* a heap action (e.g., alloc) */ 48 | POBJ_ACTION_TYPE_HEAP, 49 | /* a single memory operation (e.g., value set) */ 50 | POBJ_ACTION_TYPE_MEM, 51 | 52 | POBJ_MAX_ACTION_TYPE 53 | }; 54 | 55 | struct pobj_action_heap { 56 | /* offset to the element being freed/allocated */ 57 | uint64_t offset; 58 | }; 59 | 60 | struct pobj_action { 61 | /* 62 | * These fields are internal for the implementation and are not 63 | * guaranteed to be stable across different versions of the API. 64 | * Use with caution. 65 | * 66 | * This structure should NEVER be stored on persistent memory! 67 | */ 68 | enum pobj_action_type type; 69 | uint32_t data[3]; 70 | union { 71 | struct pobj_action_heap heap; 72 | uint64_t data2[14]; 73 | }; 74 | }; 75 | 76 | #define POBJ_ACTION_XRESERVE_VALID_FLAGS\ 77 | (POBJ_XALLOC_CLASS_MASK |\ 78 | POBJ_XALLOC_ARENA_MASK |\ 79 | POBJ_XALLOC_ZERO) 80 | 81 | PMEMoid pmemobj_reserve(PMEMobjpool *pop, struct pobj_action *act, 82 | size_t size, uint64_t type_num); 83 | PMEMoid pmemobj_xreserve(PMEMobjpool *pop, struct pobj_action *act, 84 | size_t size, uint64_t type_num, uint64_t flags); 85 | void pmemobj_set_value(PMEMobjpool *pop, struct pobj_action *act, 86 | uint64_t *ptr, uint64_t value); 87 | void pmemobj_defer_free(PMEMobjpool *pop, PMEMoid oid, struct pobj_action *act); 88 | 89 | int pmemobj_publish(PMEMobjpool *pop, struct pobj_action *actv, 90 | size_t actvcnt); 91 | int pmemobj_tx_publish(struct pobj_action *actv, size_t actvcnt); 92 | 93 | void pmemobj_cancel(PMEMobjpool *pop, struct pobj_action *actv, size_t actvcnt); 94 | 95 | #ifdef __cplusplus 96 | } 97 | #endif 98 | 99 | #endif /* libpmemobj/action_base.h */ 100 | -------------------------------------------------------------------------------- /dash_pmdk/include/libpmemobj/atomic.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2017, Intel Corporation 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * * Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * * Neither the name of the copyright holder nor the names of its 17 | * contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | /* 34 | * libpmemobj/atomic.h -- definitions of libpmemobj atomic macros 35 | */ 36 | 37 | #ifndef LIBPMEMOBJ_ATOMIC_H 38 | #define LIBPMEMOBJ_ATOMIC_H 1 39 | 40 | #include 41 | #include 42 | 43 | #ifdef __cplusplus 44 | extern "C" { 45 | #endif 46 | 47 | #define POBJ_NEW(pop, o, t, constr, arg)\ 48 | pmemobj_alloc((pop), (PMEMoid *)(o), sizeof(t), TOID_TYPE_NUM(t),\ 49 | (constr), (arg)) 50 | 51 | #define POBJ_ALLOC(pop, o, t, size, constr, arg)\ 52 | pmemobj_alloc((pop), (PMEMoid *)(o), (size), TOID_TYPE_NUM(t),\ 53 | (constr), (arg)) 54 | 55 | #define POBJ_ZNEW(pop, o, t)\ 56 | pmemobj_zalloc((pop), (PMEMoid *)(o), sizeof(t), TOID_TYPE_NUM(t)) 57 | 58 | #define POBJ_ZALLOC(pop, o, t, size)\ 59 | pmemobj_zalloc((pop), (PMEMoid *)(o), (size), TOID_TYPE_NUM(t)) 60 | 61 | #define POBJ_REALLOC(pop, o, t, size)\ 62 | pmemobj_realloc((pop), (PMEMoid *)(o), (size), TOID_TYPE_NUM(t)) 63 | 64 | #define POBJ_ZREALLOC(pop, o, t, size)\ 65 | pmemobj_zrealloc((pop), (PMEMoid *)(o), (size), TOID_TYPE_NUM(t)) 66 | 67 | #define POBJ_FREE(o)\ 68 | pmemobj_free((PMEMoid *)(o)) 69 | 70 | #ifdef __cplusplus 71 | } 72 | #endif 73 | 74 | #endif /* libpmemobj/atomic.h */ 75 | -------------------------------------------------------------------------------- /dash_pmdk/include/libpmemobj/atomic_base.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2017, Intel Corporation 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * * Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * * Neither the name of the copyright holder nor the names of its 17 | * contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | /* 34 | * libpmemobj/atomic_base.h -- definitions of libpmemobj atomic entry points 35 | */ 36 | 37 | #ifndef LIBPMEMOBJ_ATOMIC_BASE_H 38 | #define LIBPMEMOBJ_ATOMIC_BASE_H 1 39 | 40 | #include 41 | 42 | #ifdef __cplusplus 43 | extern "C" { 44 | #endif 45 | 46 | /* 47 | * Non-transactional atomic allocations 48 | * 49 | * Those functions can be used outside transactions. The allocations are always 50 | * aligned to the cache-line boundary. 51 | */ 52 | 53 | #define POBJ_XALLOC_VALID_FLAGS (POBJ_XALLOC_ZERO |\ 54 | POBJ_XALLOC_CLASS_MASK) 55 | 56 | /* 57 | * Allocates a new object from the pool and calls a constructor function before 58 | * returning. It is guaranteed that allocated object is either properly 59 | * initialized, or if it's interrupted before the constructor completes, the 60 | * memory reserved for the object is automatically reclaimed. 61 | */ 62 | int pmemobj_alloc(PMEMobjpool *pop, PMEMoid *oidp, size_t size, 63 | uint64_t type_num, pmemobj_constr constructor, void *arg); 64 | 65 | /* 66 | * Allocates with flags a new object from the pool. 67 | */ 68 | int pmemobj_xalloc(PMEMobjpool *pop, PMEMoid *oidp, size_t size, 69 | uint64_t type_num, uint64_t flags, 70 | pmemobj_constr constructor, void *arg); 71 | 72 | /* 73 | * Allocates a new zeroed object from the pool. 74 | */ 75 | int pmemobj_zalloc(PMEMobjpool *pop, PMEMoid *oidp, size_t size, 76 | uint64_t type_num); 77 | 78 | /* 79 | * Resizes an existing object. 80 | */ 81 | int pmemobj_realloc(PMEMobjpool *pop, PMEMoid *oidp, size_t size, 82 | uint64_t type_num); 83 | 84 | /* 85 | * Resizes an existing object, if extended new space is zeroed. 86 | */ 87 | int pmemobj_zrealloc(PMEMobjpool *pop, PMEMoid *oidp, size_t size, 88 | uint64_t type_num); 89 | 90 | /* 91 | * Allocates a new object with duplicate of the string s. 92 | */ 93 | int pmemobj_strdup(PMEMobjpool *pop, PMEMoid *oidp, const char *s, 94 | uint64_t type_num); 95 | 96 | /* 97 | * Allocates a new object with duplicate of the wide character string s. 98 | */ 99 | int pmemobj_wcsdup(PMEMobjpool *pop, PMEMoid *oidp, const wchar_t *s, 100 | uint64_t type_num); 101 | 102 | /* 103 | * Frees an existing object. 104 | */ 105 | void pmemobj_free(PMEMoid *oidp); 106 | 107 | #ifdef __cplusplus 108 | } 109 | #endif 110 | 111 | #endif /* libpmemobj/atomic_base.h */ 112 | -------------------------------------------------------------------------------- /dash_pmdk/include/libpmemobj/iterator.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2017, Intel Corporation 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * * Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * * Neither the name of the copyright holder nor the names of its 17 | * contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | /* 34 | * libpmemobj/iterator.h -- definitions of libpmemobj iterator macros 35 | */ 36 | 37 | #ifndef LIBPMEMOBJ_ITERATOR_H 38 | #define LIBPMEMOBJ_ITERATOR_H 1 39 | 40 | #include 41 | #include 42 | 43 | #ifdef __cplusplus 44 | extern "C" { 45 | #endif 46 | 47 | static inline PMEMoid 48 | POBJ_FIRST_TYPE_NUM(PMEMobjpool *pop, uint64_t type_num) 49 | { 50 | PMEMoid _pobj_ret = pmemobj_first(pop); 51 | 52 | while (!OID_IS_NULL(_pobj_ret) && 53 | pmemobj_type_num(_pobj_ret) != type_num) { 54 | _pobj_ret = pmemobj_next(_pobj_ret); 55 | } 56 | return _pobj_ret; 57 | } 58 | 59 | static inline PMEMoid 60 | POBJ_NEXT_TYPE_NUM(PMEMoid o) 61 | { 62 | PMEMoid _pobj_ret = o; 63 | 64 | do { 65 | _pobj_ret = pmemobj_next(_pobj_ret);\ 66 | } while (!OID_IS_NULL(_pobj_ret) && 67 | pmemobj_type_num(_pobj_ret) != pmemobj_type_num(o)); 68 | return _pobj_ret; 69 | } 70 | 71 | 72 | #define POBJ_FIRST(pop, t) ((TOID(t))POBJ_FIRST_TYPE_NUM(pop, TOID_TYPE_NUM(t))) 73 | 74 | #define POBJ_NEXT(o) ((__typeof__(o))POBJ_NEXT_TYPE_NUM((o).oid)) 75 | 76 | /* 77 | * Iterates through every existing allocated object. 78 | */ 79 | #define POBJ_FOREACH(pop, varoid)\ 80 | for (_pobj_debug_notice("POBJ_FOREACH", __FILE__, __LINE__),\ 81 | varoid = pmemobj_first(pop);\ 82 | (varoid).off != 0; varoid = pmemobj_next(varoid)) 83 | 84 | /* 85 | * Safe variant of POBJ_FOREACH in which pmemobj_free on varoid is allowed 86 | */ 87 | #define POBJ_FOREACH_SAFE(pop, varoid, nvaroid)\ 88 | for (_pobj_debug_notice("POBJ_FOREACH_SAFE", __FILE__, __LINE__),\ 89 | varoid = pmemobj_first(pop);\ 90 | (varoid).off != 0 && (nvaroid = pmemobj_next(varoid), 1);\ 91 | varoid = nvaroid) 92 | 93 | /* 94 | * Iterates through every object of the specified type. 95 | */ 96 | #define POBJ_FOREACH_TYPE(pop, var)\ 97 | POBJ_FOREACH(pop, (var).oid)\ 98 | if (pmemobj_type_num((var).oid) == TOID_TYPE_NUM_OF(var)) 99 | 100 | /* 101 | * Safe variant of POBJ_FOREACH_TYPE in which pmemobj_free on var 102 | * is allowed. 103 | */ 104 | #define POBJ_FOREACH_SAFE_TYPE(pop, var, nvar)\ 105 | POBJ_FOREACH_SAFE(pop, (var).oid, (nvar).oid)\ 106 | if (pmemobj_type_num((var).oid) == TOID_TYPE_NUM_OF(var)) 107 | 108 | #ifdef __cplusplus 109 | } 110 | #endif 111 | 112 | #endif /* libpmemobj/iterator.h */ 113 | -------------------------------------------------------------------------------- /dash_pmdk/include/libpmemobj/iterator_base.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2017, Intel Corporation 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * * Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * * Neither the name of the copyright holder nor the names of its 17 | * contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | /* 34 | * libpmemobj/iterator_base.h -- definitions of libpmemobj iterator entry points 35 | */ 36 | 37 | #ifndef LIBPMEMOBJ_ITERATOR_BASE_H 38 | #define LIBPMEMOBJ_ITERATOR_BASE_H 1 39 | 40 | #include 41 | 42 | #ifdef __cplusplus 43 | extern "C" { 44 | #endif 45 | 46 | /* 47 | * The following functions allow access to the entire collection of objects. 48 | * 49 | * Use with conjunction with non-transactional allocations. Pmemobj pool acts 50 | * as a generic container (list) of objects that are not assigned to any 51 | * user-defined data structures. 52 | */ 53 | 54 | /* 55 | * Returns the first object of the specified type number. 56 | */ 57 | PMEMoid pmemobj_first(PMEMobjpool *pop); 58 | 59 | /* 60 | * Returns the next object of the same type. 61 | */ 62 | PMEMoid pmemobj_next(PMEMoid oid); 63 | 64 | 65 | #ifdef __cplusplus 66 | } 67 | #endif 68 | 69 | #endif /* libpmemobj/iterator_base.h */ 70 | -------------------------------------------------------------------------------- /dash_pmdk/include/libpmemobj/lists_atomic_base.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2017, Intel Corporation 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * * Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * * Neither the name of the copyright holder nor the names of its 17 | * contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | /* 34 | * libpmemobj/lists_atomic_base.h -- definitions of libpmemobj atomic lists 35 | */ 36 | 37 | #ifndef LIBPMEMOBJ_LISTS_ATOMIC_BASE_H 38 | #define LIBPMEMOBJ_LISTS_ATOMIC_BASE_H 1 39 | 40 | #include 41 | 42 | #ifdef __cplusplus 43 | extern "C" { 44 | #endif 45 | 46 | /* 47 | * Non-transactional persistent atomic circular doubly-linked list 48 | */ 49 | 50 | int pmemobj_list_insert(PMEMobjpool *pop, size_t pe_offset, void *head, 51 | PMEMoid dest, int before, PMEMoid oid); 52 | 53 | PMEMoid pmemobj_list_insert_new(PMEMobjpool *pop, size_t pe_offset, void *head, 54 | PMEMoid dest, int before, size_t size, uint64_t type_num, 55 | pmemobj_constr constructor, void *arg); 56 | 57 | int pmemobj_list_remove(PMEMobjpool *pop, size_t pe_offset, void *head, 58 | PMEMoid oid, int free); 59 | 60 | int pmemobj_list_move(PMEMobjpool *pop, size_t pe_old_offset, 61 | void *head_old, size_t pe_new_offset, void *head_new, 62 | PMEMoid dest, int before, PMEMoid oid); 63 | 64 | #ifdef __cplusplus 65 | } 66 | #endif 67 | 68 | #endif /* libpmemobj/lists_atomic_base.h */ 69 | -------------------------------------------------------------------------------- /dash_pmdk/include/libpmemobj/pool.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2017, Intel Corporation 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * * Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * * Neither the name of the copyright holder nor the names of its 17 | * contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | /* 34 | * libpmemobj/pool.h -- definitions of libpmemobj pool macros 35 | */ 36 | 37 | #ifndef LIBPMEMOBJ_POOL_H 38 | #define LIBPMEMOBJ_POOL_H 1 39 | 40 | #include 41 | #include 42 | 43 | #define POBJ_ROOT(pop, t) (\ 44 | (TOID(t))pmemobj_root((pop), sizeof(t))) 45 | 46 | #endif /* libpmemobj/pool.h */ 47 | -------------------------------------------------------------------------------- /dash_pmdk/include/libpmemobj/thread.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014-2017, Intel Corporation 3 | * 4 | * Redistribution and use in source and binary forms, with or without 5 | * modification, are permitted provided that the following conditions 6 | * are met: 7 | * 8 | * * Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 11 | * * Redistributions in binary form must reproduce the above copyright 12 | * notice, this list of conditions and the following disclaimer in 13 | * the documentation and/or other materials provided with the 14 | * distribution. 15 | * 16 | * * Neither the name of the copyright holder nor the names of its 17 | * contributors may be used to endorse or promote products derived 18 | * from this software without specific prior written permission. 19 | * 20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | */ 32 | 33 | /* 34 | * libpmemobj/thread.h -- definitions of libpmemobj thread/locking entry points 35 | */ 36 | 37 | #ifndef LIBPMEMOBJ_THREAD_H 38 | #define LIBPMEMOBJ_THREAD_H 1 39 | 40 | #include 41 | #include 42 | 43 | #ifdef __cplusplus 44 | extern "C" { 45 | #endif 46 | 47 | /* 48 | * Locking. 49 | */ 50 | #define _POBJ_CL_SIZE 64 /* cache line size */ 51 | 52 | typedef union { 53 | long long align; 54 | char padding[_POBJ_CL_SIZE]; 55 | } PMEMmutex; 56 | 57 | typedef union { 58 | long long align; 59 | char padding[_POBJ_CL_SIZE]; 60 | } PMEMrwlock; 61 | 62 | typedef union { 63 | long long align; 64 | char padding[_POBJ_CL_SIZE]; 65 | } PMEMcond; 66 | 67 | void pmemobj_mutex_zero(PMEMobjpool *pop, PMEMmutex *mutexp); 68 | int pmemobj_mutex_lock(PMEMobjpool *pop, PMEMmutex *mutexp); 69 | int pmemobj_mutex_timedlock(PMEMobjpool *pop, PMEMmutex *__restrict mutexp, 70 | const struct timespec *__restrict abs_timeout); 71 | int pmemobj_mutex_trylock(PMEMobjpool *pop, PMEMmutex *mutexp); 72 | int pmemobj_mutex_unlock(PMEMobjpool *pop, PMEMmutex *mutexp); 73 | 74 | void pmemobj_rwlock_zero(PMEMobjpool *pop, PMEMrwlock *rwlockp); 75 | int pmemobj_rwlock_rdlock(PMEMobjpool *pop, PMEMrwlock *rwlockp); 76 | int pmemobj_rwlock_wrlock(PMEMobjpool *pop, PMEMrwlock *rwlockp); 77 | int pmemobj_rwlock_timedrdlock(PMEMobjpool *pop, 78 | PMEMrwlock *__restrict rwlockp, 79 | const struct timespec *__restrict abs_timeout); 80 | int pmemobj_rwlock_timedwrlock(PMEMobjpool *pop, 81 | PMEMrwlock *__restrict rwlockp, 82 | const struct timespec *__restrict abs_timeout); 83 | int pmemobj_rwlock_tryrdlock(PMEMobjpool *pop, PMEMrwlock *rwlockp); 84 | int pmemobj_rwlock_trywrlock(PMEMobjpool *pop, PMEMrwlock *rwlockp); 85 | int pmemobj_rwlock_unlock(PMEMobjpool *pop, PMEMrwlock *rwlockp); 86 | 87 | void pmemobj_cond_zero(PMEMobjpool *pop, PMEMcond *condp); 88 | int pmemobj_cond_broadcast(PMEMobjpool *pop, PMEMcond *condp); 89 | int pmemobj_cond_signal(PMEMobjpool *pop, PMEMcond *condp); 90 | int pmemobj_cond_timedwait(PMEMobjpool *pop, PMEMcond *__restrict condp, 91 | PMEMmutex *__restrict mutexp, 92 | const struct timespec *__restrict abs_timeout); 93 | int pmemobj_cond_wait(PMEMobjpool *pop, PMEMcond *condp, 94 | PMEMmutex *__restrict mutexp); 95 | 96 | #ifdef __cplusplus 97 | } 98 | #endif 99 | 100 | #endif /* libpmemobj/thread.h */ 101 | -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmem.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmem.a -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmem.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmem.so -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmem.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmem.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmem.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmem.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemblk.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemblk.a -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemblk.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemblk.so -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemblk.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemblk.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemblk.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemblk.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemlog.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemlog.a -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemlog.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemlog.so -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemlog.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemlog.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemlog.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemlog.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemobj.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemobj.a -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemobj.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemobj.so -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemobj.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemobj.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmemobj.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmemobj.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmempool.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmempool.a -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmempool.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmempool.so -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmempool.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmempool.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/libpmempool.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libpmempool.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/libvmem.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libvmem.a -------------------------------------------------------------------------------- /dash_pmdk/lib/libvmem.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libvmem.so -------------------------------------------------------------------------------- /dash_pmdk/lib/libvmem.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libvmem.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/libvmem.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libvmem.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/libvmmalloc.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libvmmalloc.a -------------------------------------------------------------------------------- /dash_pmdk/lib/libvmmalloc.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libvmmalloc.so -------------------------------------------------------------------------------- /dash_pmdk/lib/libvmmalloc.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libvmmalloc.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/libvmmalloc.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/libvmmalloc.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/pkgconfig/libpmem.pc: -------------------------------------------------------------------------------- 1 | version=1.6+git703.g8cb972fe3 2 | libdir=/usr/local/lib 3 | prefix=/usr/local 4 | rasdeps=,libndctl,libdaxctl 5 | includedir=${prefix}/include 6 | 7 | Name: libpmem 8 | Description: libpmem library from PMDK project 9 | Version: ${version} 10 | URL: http://pmem.io/pmdk 11 | Requires: 12 | Libs: -L${libdir} -lpmem 13 | Cflags: -I${includedir} 14 | -------------------------------------------------------------------------------- /dash_pmdk/lib/pkgconfig/libpmemblk.pc: -------------------------------------------------------------------------------- 1 | version=1.6+git703.g8cb972fe3 2 | libdir=/usr/local/lib 3 | prefix=/usr/local 4 | rasdeps=,libndctl,libdaxctl 5 | includedir=${prefix}/include 6 | 7 | Name: libpmemblk 8 | Description: libpmemblk library from PMDK project 9 | Version: ${version} 10 | URL: http://pmem.io/pmdk 11 | Requires.private: libpmem${rasdeps} 12 | Libs: -L${libdir} -lpmemblk 13 | Cflags: -I${includedir} 14 | -------------------------------------------------------------------------------- /dash_pmdk/lib/pkgconfig/libpmemlog.pc: -------------------------------------------------------------------------------- 1 | version=1.6+git703.g8cb972fe3 2 | libdir=/usr/local/lib 3 | prefix=/usr/local 4 | rasdeps=,libndctl,libdaxctl 5 | includedir=${prefix}/include 6 | 7 | Name: libpmemlog 8 | Description: libpmemlog library from PMDK project 9 | Version: ${version} 10 | URL: http://pmem.io/pmdk 11 | Requires.private: libpmem${rasdeps} 12 | Libs: -L${libdir} -lpmemlog 13 | Cflags: -I${includedir} 14 | -------------------------------------------------------------------------------- /dash_pmdk/lib/pkgconfig/libpmemobj.pc: -------------------------------------------------------------------------------- 1 | version=1.6+git703.g8cb972fe3 2 | libdir=/usr/local/lib 3 | prefix=/usr/local 4 | rasdeps=,libndctl,libdaxctl 5 | includedir=${prefix}/include 6 | 7 | Name: libpmemobj 8 | Description: libpmemobj library from PMDK project 9 | Version: ${version} 10 | URL: http://pmem.io/pmdk 11 | Requires.private: libpmem${rasdeps} 12 | Libs: -L${libdir} -lpmemobj 13 | Libs.private: -ldl 14 | Cflags: -I${includedir} 15 | -------------------------------------------------------------------------------- /dash_pmdk/lib/pkgconfig/libpmempool.pc: -------------------------------------------------------------------------------- 1 | version=1.6+git703.g8cb972fe3 2 | libdir=/usr/local/lib 3 | prefix=/usr/local 4 | rasdeps=,libndctl,libdaxctl 5 | includedir=${prefix}/include 6 | 7 | Name: libpmempool 8 | Description: libpmempool library from PMDK project 9 | Version: ${version} 10 | URL: http://pmem.io/pmdk 11 | Requires.private: libpmem${rasdeps} 12 | Libs: -L${libdir} -lpmempool 13 | Libs.private: -ldl 14 | Cflags: -I${includedir} 15 | -------------------------------------------------------------------------------- /dash_pmdk/lib/pkgconfig/libvmem.pc: -------------------------------------------------------------------------------- 1 | version=1.6+git703.g8cb972fe3 2 | libdir=/usr/local/lib 3 | prefix=/usr/local 4 | rasdeps=,libndctl,libdaxctl 5 | includedir=${prefix}/include 6 | 7 | Name: libvmem 8 | Description: libvmem library from PMDK project 9 | Version: ${version} 10 | URL: http://pmem.io/pmdk 11 | Requires: 12 | Libs: -L${libdir} -lvmem 13 | Cflags: -I${includedir} 14 | -------------------------------------------------------------------------------- /dash_pmdk/lib/pkgconfig/libvmmalloc.pc: -------------------------------------------------------------------------------- 1 | version=1.6+git703.g8cb972fe3 2 | libdir=/usr/local/lib 3 | prefix=/usr/local 4 | rasdeps=,libndctl,libdaxctl 5 | includedir=${prefix}/include 6 | 7 | Name: libvmmalloc 8 | Description: libvmmalloc library from PMDK project 9 | Version: ${version} 10 | URL: http://pmem.io/pmdk 11 | Requires: 12 | Libs: -L${libdir} -lvmmalloc 13 | Cflags: -I${includedir} 14 | -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmem.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmem.a -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmem.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmem.so -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmem.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmem.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmem.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmem.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemblk.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemblk.a -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemblk.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemblk.so -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemblk.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemblk.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemblk.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemblk.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemlog.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemlog.a -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemlog.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemlog.so -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemlog.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemlog.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemlog.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemlog.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemobj.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemobj.a -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemobj.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemobj.so -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemobj.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemobj.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmemobj.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmemobj.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmempool.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmempool.a -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmempool.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmempool.so -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmempool.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmempool.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libpmempool.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libpmempool.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libvmem.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libvmem.a -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libvmem.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libvmem.so -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libvmem.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libvmem.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libvmem.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libvmem.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libvmmalloc.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libvmmalloc.a -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libvmmalloc.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libvmmalloc.so -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libvmmalloc.so.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libvmmalloc.so.1 -------------------------------------------------------------------------------- /dash_pmdk/lib/pmdk_debug/libvmmalloc.so.1.0.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/lib/pmdk_debug/libvmmalloc.so.1.0.0 -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/daxio.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/daxio.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/pmempool-check.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/pmempool-check.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/pmempool-convert.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/pmempool-convert.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/pmempool-create.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/pmempool-create.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/pmempool-dump.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/pmempool-dump.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/pmempool-feature.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/pmempool-feature.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/pmempool-info.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/pmempool-info.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/pmempool-rm.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/pmempool-rm.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/pmempool-sync.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/pmempool-sync.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/pmempool-transform.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/pmempool-transform.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/pmempool.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/pmempool.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man1/pmreorder.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man1/pmreorder.1.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/d_ro.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/d_ro.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/d_rw.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/d_rw.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/direct_ro.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/direct_ro.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/direct_rw.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/direct_rw.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/oid_equals.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/oid_equals.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/oid_instanceof.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/oid_instanceof.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/oid_is_null.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/oid_is_null.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_check_version.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_check_version.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_deep_drain.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_deep_drain.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_deep_flush.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_deep_flush.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_deep_persist.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_deep_persist.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_drain.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_drain.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_errormsg.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_errormsg.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_flush.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_flush.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_has_auto_flush.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_has_auto_flush.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_has_hw_drain.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_has_hw_drain.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_is_pmem.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_is_pmem.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_map_file.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_map_file.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_memcpy.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_memcpy.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_memcpy_nodrain.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_memcpy_nodrain.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_memcpy_persist.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_memcpy_persist.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_memmove.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_memmove.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_memmove_nodrain.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_memmove_nodrain.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_memmove_persist.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_memmove_persist.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_memset.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_memset.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_memset_nodrain.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_memset_nodrain.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_memset_persist.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_memset_persist.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_msync.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_msync.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_persist.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_persist.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmem_unmap.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmem_unmap.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_bsize.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_bsize.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_check.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_check.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_check_version.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_check_version.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_close.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_close.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_create.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_create.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_ctl_exec.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_ctl_exec.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_ctl_get.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_ctl_get.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_ctl_set.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_ctl_set.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_errormsg.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_errormsg.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_nblock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_nblock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_open.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_open.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_read.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_read.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_set_error.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_set_error.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_set_funcs.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_set_funcs.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_set_zero.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_set_zero.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemblk_write.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemblk_write.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_append.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_append.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_appendv.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_appendv.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_check.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_check.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_check_version.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_check_version.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_close.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_close.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_create.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_create.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_ctl_exec.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_ctl_exec.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_ctl_get.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_ctl_get.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_ctl_set.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_ctl_set.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_errormsg.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_errormsg.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_nbyte.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_nbyte.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_open.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_open.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_rewind.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_rewind.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_set_funcs.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_set_funcs.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_tell.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_tell.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemlog_walk.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemlog_walk.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_action.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_action.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_alloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_alloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_alloc_usable_size.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_alloc_usable_size.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_cancel.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_cancel.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_check.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_check.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_check_version.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_check_version.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_close.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_close.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_cond_broadcast.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_cond_broadcast.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_cond_signal.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_cond_signal.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_cond_timedwait.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_cond_timedwait.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_cond_wait.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_cond_wait.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_cond_zero.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_cond_zero.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_create.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_create.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_ctl_exec.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_ctl_exec.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_ctl_get.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_ctl_get.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_ctl_set.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_ctl_set.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_defer_free.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_defer_free.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_direct.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_direct.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_drain.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_drain.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_errormsg.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_errormsg.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_f_mem_nodrain.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_f_mem_nodrain.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_f_mem_noflush.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_f_mem_noflush.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_f_mem_nontemporal.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_f_mem_nontemporal.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_f_mem_temporal.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_f_mem_temporal.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_f_mem_wb.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_f_mem_wb.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_f_mem_wc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_f_mem_wc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_f_relaxed.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_f_relaxed.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_first.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_first.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_flush.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_flush.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_free.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_free.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_list_insert.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_list_insert.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_list_insert_new.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_list_insert_new.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_list_move.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_list_move.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_list_remove.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_list_remove.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_memcpy.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_memcpy.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_memcpy_persist.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_memcpy_persist.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_memmove.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_memmove.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_memset.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_memset.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_memset_persist.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_memset_persist.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_mutex_lock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_mutex_lock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_mutex_timedlock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_mutex_timedlock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_mutex_trylock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_mutex_trylock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_mutex_unlock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_mutex_unlock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_mutex_zero.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_mutex_zero.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_next.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_next.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_oid.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_oid.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_open.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_open.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_persist.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_persist.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_pool_by_oid.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_pool_by_oid.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_pool_by_ptr.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_pool_by_ptr.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_publish.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_publish.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_realloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_realloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_reserve.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_reserve.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_root.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_root.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_root_construct.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_root_construct.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_root_size.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_root_size.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_rwlock_rdlock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_rwlock_rdlock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_rwlock_timedrdlock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_rwlock_timedrdlock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_rwlock_timedwrlock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_rwlock_timedwrlock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_rwlock_tryrdlock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_rwlock_tryrdlock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_rwlock_trywrlock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_rwlock_trywrlock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_rwlock_unlock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_rwlock_unlock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_rwlock_wrlock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_rwlock_wrlock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_rwlock_zero.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_rwlock_zero.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_set_funcs.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_set_funcs.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_set_value.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_set_value.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_strdup.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_strdup.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_abort.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_abort.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_add_range.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_add_range.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_add_range_direct.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_add_range_direct.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_alloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_alloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_begin.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_begin.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_commit.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_commit.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_end.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_end.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_errno.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_errno.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_free.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_free.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_lock.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_lock.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_log_append_buffer.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_log_append_buffer.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_log_auto_alloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_log_auto_alloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_log_intents_max_size.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_log_intents_max_size.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_log_snapshots_max_size.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_log_snapshots_max_size.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_process.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_process.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_publish.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_publish.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_realloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_realloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_stage.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_stage.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_strdup.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_strdup.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_wcsdup.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_wcsdup.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_xadd_range.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_xadd_range.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_xadd_range_direct.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_xadd_range_direct.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_xalloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_xalloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_zalloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_zalloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_tx_zrealloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_tx_zrealloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_type_num.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_type_num.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_volatile.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_volatile.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_wcsdup.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_wcsdup.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_xalloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_xalloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_xflush.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_xflush.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_xpersist.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_xpersist.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_xreserve.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_xreserve.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_zalloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_zalloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmemobj_zrealloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmemobj_zrealloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmempool_check.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmempool_check.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmempool_check_end.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmempool_check_end.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmempool_check_init.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmempool_check_init.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmempool_check_version.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmempool_check_version.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmempool_errormsg.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmempool_errormsg.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmempool_feature_disable.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmempool_feature_disable.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmempool_feature_enable.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmempool_feature_enable.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmempool_feature_query.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmempool_feature_query.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmempool_rm.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmempool_rm.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmempool_sync.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmempool_sync.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pmempool_transform.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pmempool_transform.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_alloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_alloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_first.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_first.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_first_type_num.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_first_type_num.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_foreach.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_foreach.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_foreach_safe.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_foreach_safe.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_foreach_safe_type.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_foreach_safe_type.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_foreach_type.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_foreach_type.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_free.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_free.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_layout_begin.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_layout_begin.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_layout_end.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_layout_end.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_layout_name.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_layout_name.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_layout_root.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_layout_root.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_layout_toid.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_layout_toid.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_layout_types_num.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_layout_types_num.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_empty.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_empty.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_entry.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_entry.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_first.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_first.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_foreach.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_foreach.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_foreach_reverse.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_foreach_reverse.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_head.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_head.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_insert_after.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_insert_after.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_insert_before.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_insert_before.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_insert_head.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_insert_head.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_insert_new_after.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_insert_new_after.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_insert_new_before.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_insert_new_before.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_insert_new_head.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_insert_new_head.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_insert_new_tail.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_insert_new_tail.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_insert_tail.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_insert_tail.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_last.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_last.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_move_element_after.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_move_element_after.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_move_element_before.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_move_element_before.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_move_element_head.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_move_element_head.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_move_element_tail.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_move_element_tail.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_next.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_next.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_prev.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_prev.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_remove.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_remove.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_list_remove_free.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_list_remove_free.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_new.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_new.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_next.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_next.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_next_type_num.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_next_type_num.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_realloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_realloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_reserve_alloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_reserve_alloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_reserve_new.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_reserve_new.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_root.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_root.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_xreserve_alloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_xreserve_alloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_xreserve_new.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_xreserve_new.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_zalloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_zalloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_znew.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_znew.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/pobj_zrealloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/pobj_zrealloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/toid.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/toid.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/toid_assign.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/toid_assign.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/toid_declare.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/toid_declare.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/toid_declare_root.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/toid_declare_root.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/toid_equals.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/toid_equals.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/toid_is_null.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/toid_is_null.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/toid_offsetof.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/toid_offsetof.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/toid_type_num.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/toid_type_num.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/toid_type_num_of.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/toid_type_num_of.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/toid_typeof.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/toid_typeof.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/toid_valid.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/toid_valid.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_add.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_add.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_add_direct.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_add_direct.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_add_field.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_add_field.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_add_field_direct.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_add_field_direct.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_alloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_alloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_begin.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_begin.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_begin_cb.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_begin_cb.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_begin_param.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_begin_param.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_end.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_end.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_finally.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_finally.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_free.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_free.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_memcpy.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_memcpy.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_memset.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_memset.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_new.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_new.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_onabort.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_onabort.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_oncommit.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_oncommit.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_realloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_realloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_set.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_set.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_set_direct.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_set_direct.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_strdup.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_strdup.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_wcsdup.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_wcsdup.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_xadd.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_xadd.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_xadd_direct.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_xadd_direct.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_xadd_field.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_xadd_field.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_xadd_field_direct.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_xadd_field_direct.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_xalloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_xalloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_zalloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_zalloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_znew.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_znew.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/tx_zrealloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/tx_zrealloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_aligned_alloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_aligned_alloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_calloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_calloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_check.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_check.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_check_version.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_check_version.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_create.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_create.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_create_in_region.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_create_in_region.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_delete.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_delete.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_errormsg.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_errormsg.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_free.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_free.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_malloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_malloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_malloc_usable_size.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_malloc_usable_size.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_realloc.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_realloc.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_set_funcs.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_set_funcs.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_stats_print.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_stats_print.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_strdup.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_strdup.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man3/vmem_wcsdup.3.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man3/vmem_wcsdup.3.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man5/pmem_ctl.5.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man5/pmem_ctl.5.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man5/poolset.5.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man5/poolset.5.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man7/libpmem.7.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man7/libpmem.7.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man7/libpmemblk.7.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man7/libpmemblk.7.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man7/libpmemlog.7.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man7/libpmemlog.7.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man7/libpmemobj.7.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man7/libpmemobj.7.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man7/libpmempool.7.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man7/libpmempool.7.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man7/libvmem.7.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man7/libvmem.7.gz -------------------------------------------------------------------------------- /dash_pmdk/share/man/man7/libvmmalloc.7.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/dash_pmdk/share/man/man7/libvmmalloc.7.gz -------------------------------------------------------------------------------- /dash_pmdk/share/pmreorder/loggingfacility.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018, Intel Corporation 2 | # 3 | # Redistribution and use in source and binary forms, with or without 4 | # modification, are permitted provided that the following conditions 5 | # are met: 6 | # 7 | # * Redistributions of source code must retain the above copyright 8 | # notice, this list of conditions and the following disclaimer. 9 | # 10 | # * Redistributions in binary form must reproduce the above copyright 11 | # notice, this list of conditions and the following disclaimer in 12 | # the documentation and/or other materials provided with the 13 | # distribution. 14 | # 15 | # * Neither the name of the copyright holder nor the names of its 16 | # contributors may be used to endorse or promote products derived 17 | # from this software without specific prior written permission. 18 | # 19 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | import logging 32 | 33 | log_levels = ["debug", "info", "warning", "error", "critical"] 34 | 35 | 36 | class LoggingBase: 37 | def debug(self, text): 38 | pass 39 | 40 | def info(self, text): 41 | pass 42 | 43 | def warning(self, text): 44 | pass 45 | 46 | def error(self, text): 47 | pass 48 | 49 | def critical(self, text): 50 | pass 51 | 52 | 53 | class DefaultFileLogger(LoggingBase): 54 | def __init__(self, name="pmreorder", **kwargs): 55 | logging.basicConfig(**kwargs) 56 | self.__logger = logging.getLogger(name) 57 | 58 | def debug(self, text): 59 | self.__logger.debug(text) 60 | 61 | def info(self, text): 62 | self.__logger.info(text) 63 | 64 | def warning(self, text): 65 | self.__logger.warning(text) 66 | 67 | def error(self, text): 68 | self.__logger.error(text) 69 | 70 | def critical(self, text): 71 | self.__logger.critical(text) 72 | 73 | 74 | class DefaultPrintLogger(LoggingBase): 75 | 76 | def debug(self, text): 77 | print("DEBUG:", text) 78 | 79 | def info(self, text): 80 | print("INFO:", text) 81 | 82 | def warning(self, text): 83 | print("WARNING:", text) 84 | 85 | def error(self, text): 86 | print("ERROR:", text) 87 | 88 | def critical(self, text): 89 | print("CRITICAL:", text) 90 | 91 | 92 | def get_logger(log_output, log_level=None): 93 | logger = None 94 | # check if log_level is valid 95 | log_level = "warning" if log_level is None else log_level 96 | numeric_level = getattr(logging, log_level.upper()) 97 | if not isinstance(numeric_level, int): 98 | raise ValueError('Invalid log level: %s'.format(log_level.upper())) 99 | 100 | if log_output is None: 101 | logger = DefaultPrintLogger() 102 | else: 103 | logger = DefaultFileLogger(filename=log_output, level=numeric_level) 104 | return logger 105 | -------------------------------------------------------------------------------- /dash_pmdk/share/pmreorder/markerparser.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018, Intel Corporation 2 | # 3 | # Redistribution and use in source and binary forms, with or without 4 | # modification, are permitted provided that the following conditions 5 | # are met: 6 | # 7 | # * Redistributions of source code must retain the above copyright 8 | # notice, this list of conditions and the following disclaimer. 9 | # 10 | # * Redistributions in binary form must reproduce the above copyright 11 | # notice, this list of conditions and the following disclaimer in 12 | # the documentation and/or other materials provided with the 13 | # distribution. 14 | # 15 | # * Neither the name of the copyright holder nor the names of its 16 | # contributors may be used to endorse or promote products derived 17 | # from this software without specific prior written permission. 18 | # 19 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 32 | import os 33 | import json 34 | 35 | 36 | class MarkerParser: 37 | """ 38 | Parse marker config file and command line arg provided by user 39 | via -x parameter. 40 | """ 41 | def marker_file_parser(self, macros): 42 | """ 43 | Parse markers passed by file. 44 | They should be in json format: 45 | { "MARKER_NAME"="ENGINE_TYPE" } and separated by commas. 46 | """ 47 | markers = {} 48 | try: 49 | with open(macros) as config_file: 50 | markers = json.load(config_file) 51 | except json.decoder.JSONDecodeError: 52 | print("Invalid config macros file format: ", macros, 53 | "Use: {\"MARKER_NAME1\"=\"ENGINE_TYPE1\"," 54 | "\"MARKER_NAME2\"=\"ENGINE_TYPE2\"}") 55 | 56 | return markers 57 | 58 | def marker_cli_parser(self, macros): 59 | """ 60 | Parse markers passed by cli. 61 | They should be in specific format: 62 | MARKER_NAME=ENGINE_TYPE and separated by commas. 63 | """ 64 | try: 65 | markers_array = macros.split(",") 66 | return dict(pair.split('=') for pair in markers_array) 67 | except ValueError: 68 | print("Invalid extended macros format: ", macros, 69 | "Use: MARKER_NAME1=ENGINE_TYPE1,MARKER_NAME2=ENGINE_TYPE2") 70 | 71 | def get_markers(self, markerset): 72 | """ 73 | Parse markers based on their format. 74 | """ 75 | if markerset is not None: 76 | if os.path.exists(markerset): 77 | return self.marker_file_parser(markerset) 78 | else: 79 | return self.marker_cli_parser(markerset) 80 | -------------------------------------------------------------------------------- /dash_pmdk/share/pmreorder/reorderexceptions.py: -------------------------------------------------------------------------------- 1 | # Copyright 2018, Intel Corporation 2 | # 3 | # Redistribution and use in source and binary forms, with or without 4 | # modification, are permitted provided that the following conditions 5 | # are met: 6 | # 7 | # * Redistributions of source code must retain the above copyright 8 | # notice, this list of conditions and the following disclaimer. 9 | # 10 | # * Redistributions in binary form must reproduce the above copyright 11 | # notice, this list of conditions and the following disclaimer in 12 | # the documentation and/or other materials provided with the 13 | # distribution. 14 | # 15 | # * Neither the name of the copyright holder nor the names of its 16 | # contributors may be used to endorse or promote products derived 17 | # from this software without specific prior written permission. 18 | # 19 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 32 | class InconsistentFileException(Exception): 33 | pass 34 | 35 | 36 | class NotSupportedOperationException(Exception): 37 | pass 38 | -------------------------------------------------------------------------------- /restore.sh: -------------------------------------------------------------------------------- 1 | taskset -c 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96 cargo test ycsb_test_reload --release -- --nocapture 2 | -------------------------------------------------------------------------------- /result.csv: -------------------------------------------------------------------------------- 1 | TPCC-48 2 | sysname,2PL,TO,OCC,MV2PL,MVTO,MVOCC 3 | Falcon(DRAM Index),912773.0,913421.0,948361.0,904894.5,909032.0,947935.0 4 | Falcon,752616.5,762873.0,792650.5,746495.0,762692.5,787576.0 5 | Falcon(All Flush),726749.0,746270.5,763755.0,717558.0,745265.0,762570.0 6 | Falcon(No Flush),732716.5,743100.0,771496.5,712262.0,744372.0,769695.5 7 | Inp,652449.0,668844.0,688710.5,649190.0,667598.0,686726.5 8 | Outp,440793.0,451087.0,457093.0,437628.0,453835.0,451083.5 9 | ZenS(No Flush),569624.5,571765.0,594031.5,532626.0,534778.0,552467.5 10 | ZenS,621993.5,629734.5,647022.5,564534.5,571513.5,584796.5 11 | 12 | TPCC-48 Latency 13 | sysname,new_order-avg,new_order-95,payment-avg,payment-95 14 | Falcon(DRAM Index),62429.205,79550,5722.948,7949 15 | Falcon,68165.505,95032,9485.598,12418 16 | Falcon(All Flush),70742.247,101445,10328.804,14734 17 | Falcon(No Flush),69174.483,96358,9882.929,11964 18 | Inp,79166.910,129128,12176.834,19504 19 | Outp,122155.813,322736,25832.651,40876 20 | ZenS(No Flush),96892.622,175485,11472.902,20155 21 | ZenS,88331.588,163713,10383.198,20521 22 | 23 | YCSB-48 24 | sysname,au,az,bu,bz,cu,cz,du,dz,eu,ez,fu,fz 25 | Falcon(DRAM Index),10323712,14024756,14684435,18067180,15218042,18713388,14832039,18133897,8662200,11707167,9774723,12873883 26 | Falcon,8985114,13187303,13102716,18043576,13807442,18613602,13239175,17758799,6560072,10575200,8597534,12573252 27 | Falcon(All Flush),9042512,7265938,13091826,17761916,13562737,18232637,13270368,17826615,6662116,10776840,8567972,7255163 28 | Falcon(No Flush),6270740,11073828,12491505,17720492,13654271,18271041,13237006,17683371,6692311,10785485,6052016,11033863 29 | Inp,4439662,4011395,11957134,16252275,13750592,18652516,13062128,17484430,6704489,10765566,4386273,4139146 30 | Outp,5379865,6212693,12160048,16372535,13656736,18627328,13221255,17761727,6673622,10805090,5358600,6030885 31 | ZenS(No Flush),4796845,5039331,11324595,16739826,12343998,18607771,12298966,18131844,6928765,9320352,4777671,3815901 32 | ZenS,6691991,6317649,11516907,16847104,12262965,18418847,12353021,18306179,6846484,9199096,6250681,3720956 33 | 34 | TPCC-scal 35 | threads,Inp,Falcon(All Flush),Inp(No Flush),Inp(Hot Tuple Cache),Falcon 36 | 1,37624,38383,37653,37418,38339 37 | 2,67565,68241,68237,65669,69267 38 | 4,119649,122912,122606,120942,123308 39 | 8,215743,224022,221476,218471,224502 40 | 16,386993,409095,386872,392970,411776 41 | 32,557653,610246,540738,563177,614972 42 | 48,693562,762293,672384,717874,791208 43 | 44 | YCSB Zipf=0-scal 45 | threads,Inp,Falcon(All Flush),Inp(No Flush),Inp(Hot Tuple Cache),Falcon 46 | 1,503440,531472,510846,502149,296755 47 | 2,956594,993386,919995,936974, 48 | 4,1770053,1947806,1574868,1681305, 49 | 8,2924581,3626863,2409950,2788256, 50 | 16,4224846,6291195,2843479,4055433, 51 | 32,4587497,8940827,2799048,4335091,8318962 52 | 48,4620482,8987643,2778129,4338754,8787880 53 | 54 | YCSB Zipf=0.99-scal 55 | threads,Inp,Falcon(All Flush),Inp(No Flush),Inp(Hot Tuple Cache),Falcon 56 | 1,679678,800136,708855,735472,309643 57 | 2,1197049,1466290,1236163,1290802,1192457 58 | 4,2004261,2602691,1990730,2131611, 59 | 8,3131715,4485219,3045876,3349205, 60 | 16,3958096,6498675,3842425,4832564, 61 | 32,4106378,7038020,3944087,5772645,11378003 62 | 48,3997805,6749133,3867904,6014910,13073170 63 | 64 | -------------------------------------------------------------------------------- /result.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/result.xlsx -------------------------------------------------------------------------------- /result_rust_only.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/madsys-dev/Falcon/b5363f11c46c7bed7207e8e98375302542723497/result_rust_only.xlsx -------------------------------------------------------------------------------- /rust-toolchain: -------------------------------------------------------------------------------- 1 | nightly-2023-07-06 -------------------------------------------------------------------------------- /src/c/ffi.rs: -------------------------------------------------------------------------------- 1 | use libc::c_char; 2 | use libc::c_int; 3 | use libc::c_void; 4 | 5 | #[cfg(feature = "nbtree")] 6 | #[link(name = "btree")] 7 | extern "C" { 8 | pub fn init_btree_file(file: *const c_char); 9 | pub fn btree_create() -> *mut c_void; 10 | pub fn btree_insert(btree: *mut c_void, key: u64, value: u64) -> c_int; 11 | pub fn btree_find(btree: *mut c_void, key: u64) -> u64; 12 | pub fn btree_remove(btree: *mut c_void, key: u64) -> u64; 13 | pub fn btree_init_for_thread(thread_id: c_int); 14 | pub fn btree_scan(btree: *mut c_void, start: u64, end: u64) -> u64; 15 | pub fn btree_next(btree: *mut c_void, start: u64, end: u64) -> u64; 16 | pub fn btree_last(btree: *mut c_void, start: u64, end: u64) -> u64; 17 | 18 | } 19 | #[cfg(feature = "dash")] 20 | #[link(name = "dash")] 21 | extern "C" { 22 | pub fn plus(a: c_int, b: c_int) -> c_int; 23 | pub fn init(file: *const c_char); 24 | pub fn dash_create() -> *mut c_void; 25 | pub fn dash_insert(dash: *mut c_void, key: u64, value: u64) -> c_int; 26 | pub fn dash_update(dash: *mut c_void, key: u64, value: u64) -> c_int; 27 | 28 | pub fn dash_find(dash: *mut c_void, key: u64) -> u64; 29 | pub fn dash_remove(dash: *mut c_void, key: u64) -> u64; 30 | 31 | pub fn dashstring_create() -> *mut c_void; 32 | 33 | pub fn dashstring_insert( 34 | dash: *mut c_void, 35 | key: *const c_char, 36 | lenght: c_int, 37 | value: u64, 38 | ) -> u64; 39 | pub fn dashstring_find(dash: *mut c_void, key: *const c_char, lenght: c_int) -> u64; 40 | pub fn dashstring_update( 41 | dash: *mut c_void, 42 | key: *const c_char, 43 | lenght: c_int, 44 | value: u64, 45 | ) -> u64; 46 | pub fn dashstring_remove(dash: *mut c_void, key: *const c_char, lenght: c_int) -> u64; 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/c/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod ffi; 2 | -------------------------------------------------------------------------------- /src/config.rs: -------------------------------------------------------------------------------- 1 | use std::mem::size_of; 2 | 3 | use crate::storage::row::TUPLE_HEADER; 4 | 5 | pub const NVM_ADDR: u64 = 0x1_000_000_000; 6 | pub const CATALOG_ADDRESS: u64 = NVM_ADDR + PAGE_SIZE; 7 | // pub const CLWB_SIZE: u64 = 64; 8 | #[cfg(feature = "native")] 9 | pub const MAX_PAGE_COUNT: u64 = 16000; 10 | #[cfg(feature = "native")] 11 | pub const PAGE_SIZE: u64 = 0x20000; // 800000 12 | #[cfg(feature = "nvm_server")] 13 | pub const MAX_PAGE_COUNT: u64 = 400000; 14 | #[cfg(feature = "nvm_server")] 15 | pub const PAGE_SIZE: u64 = 0x200000; // 800000 16 | pub const U64_OFFSET: u64 = 8; 17 | pub const USIZE_OFFSET: u64 = size_of::() as u64; 18 | pub type Address = u64; 19 | 20 | #[cfg(not(feature = "tpcc"))] 21 | pub const TUPLE_SIZE: usize = 1056; 22 | #[cfg(feature = "tpcc")] 23 | pub const TUPLE_SIZE: usize = 512; 24 | 25 | pub const POOL_SIZE: usize = 1 * 1024 * 1024; 26 | pub const POOL_PERC: usize = 4; 27 | pub const ADDRESS_MASK: u64 = (1u64 << 48) - 1; 28 | pub const POW_2_63: u64 = 1u64 << 63; 29 | -------------------------------------------------------------------------------- /src/customer_config.rs: -------------------------------------------------------------------------------- 1 | pub const TPCC_WAREHOUSE: u64 = 2048; 2 | pub const YCSB_TOTAL: u64 = 128 * 1024 * 1024; 3 | pub const NVM_FILE_PATH: &str = "/mnt/pmem0/_test_persist"; 4 | pub const INDEX_FILE_PATH: &str = "/mnt/pmem0/pmem_hash.data"; 5 | pub const BTREE_FILE_PATH: &str = "/mnt/pmem0/btree"; 6 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | #![deny(unused_must_use)] 2 | #![feature(asm)] 3 | #![feature(core_intrinsics)] 4 | #![feature(stdsimd)] 5 | #![feature(stmt_expr_attributes)] 6 | #![feature(option_result_unwrap_unchecked)] 7 | 8 | #[macro_use] 9 | extern crate log; 10 | #[macro_use] 11 | extern crate serde; 12 | 13 | #[macro_use] 14 | extern crate lazy_static; 15 | 16 | #[macro_use] 17 | extern crate libc; 18 | 19 | use jemallocator::Jemalloc; 20 | #[global_allocator] 21 | static GLOBAL: Jemalloc = Jemalloc; 22 | 23 | #[cfg(any(feature = "dash", feature = "nbtree"))] 24 | pub mod c; 25 | pub mod config; 26 | pub mod customer_config; 27 | pub mod mvcc_config; 28 | pub mod storage; 29 | pub mod tpcc; 30 | pub mod transaction; 31 | pub mod utils; 32 | pub mod ycsb; 33 | 34 | use thiserror::Error; 35 | 36 | /// The error type which is returned from this crate. 37 | #[derive(Debug, Error)] 38 | pub enum Error { 39 | #[error("no space")] 40 | NoSpace, 41 | #[error("entry not found")] 42 | NotFound, 43 | #[error("already exist")] 44 | Exist, 45 | #[error("transaction needs abort")] 46 | TxNeedAbort, 47 | #[error("transaction conflict")] 48 | TxConflict, 49 | #[error("io error")] 50 | IO(#[from] std::io::Error), 51 | #[error("tuple error")] 52 | Tuple(#[from] crate::storage::row::TupleError), 53 | } 54 | 55 | /// A specialized `Result` type for this crate. 56 | pub type Result = std::result::Result; 57 | 58 | // #[macro_use] 59 | // extern crate lazy_static; 60 | // use std::collections::HashMap; 61 | // use std::sync::RwLock; 62 | 63 | // lazy_static! { 64 | // static ref TupleRwMutex: HashMap> = HashMap::new(); 65 | // } 66 | -------------------------------------------------------------------------------- /src/mvcc_config/delta.rs: -------------------------------------------------------------------------------- 1 | use crate::config::U64_OFFSET; 2 | use crate::range; 3 | use crate::storage::timestamp::TimeStamp; 4 | use std::mem::size_of; 5 | use std::ops::Range; 6 | 7 | pub const TID: Range = range!(0, size_of::() as u64); 8 | pub const NEXT_DELTA_ADDRESS: Range = range!(TID.end, U64_OFFSET); 9 | pub const TUPLE_ADDRESS: Range = range!(NEXT_DELTA_ADDRESS.end, U64_OFFSET); 10 | 11 | pub const DELTA_TABLE_ID: Range = range!(TUPLE_ADDRESS.end, size_of::() as u64); 12 | pub const DELTA_COLUMN_OFFSET: Range = range!(DELTA_TABLE_ID.end, size_of::() as u64); 13 | pub const DELTA_DATA_OFFSET: u64 = DELTA_COLUMN_OFFSET.end; 14 | 15 | // delta 16 | // |----------------------------------------------------| 17 | // | len(u64) | tid (u64) | 18 | // |----------------------------------------------------| 19 | // | next_delta_address(u64) | 20 | // |----------------------------------------------------| 21 | // | delta_column_offset (usize) | delta_data([u8]) | 22 | // |----------------------------------------------------| 23 | -------------------------------------------------------------------------------- /src/mvcc_config/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod delta; 2 | pub const THREAD_COUNT: usize = 48; 3 | pub const TEST_THREAD_COUNT: usize = 48; 4 | pub const TRANSACTION_COUNT: usize = THREAD_COUNT; 5 | pub const YCSB_SIZE:usize = 2048; -------------------------------------------------------------------------------- /src/storage/delta.rs: -------------------------------------------------------------------------------- 1 | use crate::config::Address; 2 | use crate::mvcc_config::delta::*; 3 | use crate::storage::row::TupleError; 4 | use crate::transaction::transaction::Transaction; 5 | use crate::utils::persist::persist_struct::PersistStruct; 6 | use std::fmt::Display; 7 | use std::ops::Range; 8 | use std::result::Result; 9 | 10 | use super::row::Tuple; 11 | 12 | /// ```ignore 13 | /// |----------------------------------------------------| 14 | /// | len(u64) | tid (u64) | 15 | /// |----------------------------------------------------| 16 | /// | next_delta_address(u64) | table_id(u32) | 17 | /// |----------------------------------------------------| 18 | /// | delta_column_offset (u32) | delta_data([u8]) | 19 | /// |----------------------------------------------------| 20 | /// ``` 21 | 22 | #[derive(Copy, Clone, Debug)] 23 | pub struct TupleDelta { 24 | pub delta_data: PersistStruct, 25 | } 26 | 27 | impl TupleDelta { 28 | pub fn new( 29 | address: Address, 30 | next_delta: u64, 31 | tuple_address: Address, 32 | ) -> Result { 33 | let mut delta = TupleDelta { 34 | delta_data: PersistStruct::new(address, DELTA_DATA_OFFSET), 35 | }; 36 | 37 | delta.set_meta_data(NEXT_DELTA_ADDRESS, next_delta); 38 | delta.set_meta_data(TUPLE_ADDRESS, tuple_address); 39 | 40 | Ok(delta) 41 | } 42 | pub fn reload(address: Address) -> Result { 43 | let delta = TupleDelta { 44 | delta_data: PersistStruct::reload(address, DELTA_DATA_OFFSET), 45 | }; 46 | Ok(delta) 47 | } 48 | pub fn clwb(&self) { 49 | #[cfg(feature = "clwb_delta")] 50 | self.delta_data.clwb(); 51 | } 52 | pub fn _address(&self) -> Address { 53 | self.delta_data._address() 54 | } 55 | pub fn _data_address(&self) -> Address { 56 | self.delta_data._data_address() 57 | } 58 | pub fn get_meta_data(&self, parameter: Range) -> T { 59 | self.delta_data.get_meta_data(parameter) 60 | } 61 | pub fn set_meta_data(&mut self, parameter: Range, value: T) { 62 | self.delta_data.set_meta_data(parameter, value) 63 | } 64 | pub fn len(&self) -> u64 { 65 | self.delta_data.len() 66 | } 67 | pub fn save(&mut self, bytes: &[u8]) { 68 | self.delta_data.save(bytes); 69 | } 70 | pub fn data_len(&self) -> u64 { 71 | self.delta_data.data_len() 72 | } 73 | pub fn data(&self) -> &[u8] { 74 | self.delta_data.data() 75 | } 76 | pub fn rollback(&self, committed: u64) { 77 | let tuple_address: u64 = self.get_meta_data(TUPLE_ADDRESS); 78 | 79 | let tuple = Tuple::reload(tuple_address); 80 | let next_address = tuple.next_address(); 81 | let ts = tuple.ts(); 82 | let index: u32 = self.get_meta_data(DELTA_COLUMN_OFFSET); 83 | if committed == 1 { 84 | tuple.update_data_by_column(index as u64, self.data()); 85 | } 86 | tuple.set_ts_and_next(ts, self.get_meta_data(TID), next_address, 0); 87 | tuple.set_lock_tid(0); 88 | } 89 | } 90 | 91 | pub struct TupleDeltaIterator { 92 | delta: TupleDelta, 93 | } 94 | 95 | impl Iterator for TupleDeltaIterator { 96 | type Item = TupleDelta; 97 | 98 | fn next(&mut self) -> Option { 99 | let next_delta_address = self.delta.get_meta_data(NEXT_DELTA_ADDRESS); 100 | if next_delta_address != 0 { 101 | let d = TupleDelta::reload(self.delta._address()).unwrap(); 102 | self.delta = TupleDelta::reload(next_delta_address).unwrap(); 103 | return Some(d); 104 | } 105 | None 106 | } 107 | } 108 | 109 | // #[test] 110 | // fn list_test() { 111 | // /*let mut a = ListNode::new(1, None); 112 | // a.add(3); 113 | // a.add(4); 114 | // a.add(5); 115 | // a.add(9); 116 | // println!("{}", a);*/ 117 | // } 118 | -------------------------------------------------------------------------------- /src/storage/global.rs: -------------------------------------------------------------------------------- 1 | use std::time::{Duration, Instant, SystemTime}; 2 | 3 | use once_cell::sync::OnceCell; 4 | 5 | use crate::{mvcc_config::THREAD_COUNT, tpcc::u64_rand}; 6 | 7 | pub const BUFFER_SWAP: usize = 0; 8 | pub const BUFFER: usize = 0; 9 | pub const BUFFER_HIT: usize = 1; 10 | pub const READING: usize = 2; 11 | pub const UPDATING: usize = 3; 12 | 13 | const SAMPLE_SIZE: usize = 10000; 14 | const CLOCK_COUNT: usize = 4; 15 | const COUNTER_COUNT: usize = 4; 16 | const TAMPLE: usize = 100; 17 | #[derive(Clone, Copy, Debug)] 18 | pub struct Timer { 19 | pub clock: [u128; CLOCK_COUNT], 20 | pub counter: [u64; COUNTER_COUNT], 21 | pub start: [Instant; CLOCK_COUNT], 22 | pub sample: [u128; SAMPLE_SIZE], 23 | pub tmp: [u128; TAMPLE], 24 | } 25 | 26 | impl Timer { 27 | pub fn new() -> Timer { 28 | Timer { 29 | clock: [0; CLOCK_COUNT], 30 | counter: [0; COUNTER_COUNT], 31 | start: [Instant::now(); CLOCK_COUNT], 32 | sample: [0; SAMPLE_SIZE], 33 | tmp: [0; TAMPLE], 34 | } 35 | } 36 | #[inline] 37 | pub fn clear(&mut self) { 38 | self.clock = [0; CLOCK_COUNT]; 39 | self.counter = [0; COUNTER_COUNT]; 40 | } 41 | #[inline] 42 | pub fn start(&mut self, count: usize) { 43 | self.start[count] = Instant::now(); 44 | } 45 | #[inline] 46 | pub fn end(&mut self, start_count: usize, count: usize) { 47 | let now = Instant::now(); 48 | let dur = now.duration_since(self.start[start_count]); 49 | self.clock[count] += dur.as_nanos(); 50 | self.counter[count] += 1; 51 | 52 | // println!("{}", dur.as_nanos()); 53 | #[cfg(any(feature = "latency_read", feature = "txn_clock"))] 54 | if count == READING { 55 | let mut r = self.counter[count] as usize; 56 | if r >= SAMPLE_SIZE { 57 | let mut rng = rand::thread_rng(); 58 | r = u64_rand(&mut rng, 0, self.counter[count] - 1) as usize; 59 | } 60 | if r < SAMPLE_SIZE { 61 | self.sample[r] = dur.as_nanos(); 62 | } 63 | } 64 | } 65 | #[inline] 66 | pub fn add_tmp(&mut self, start_count: usize, tmp_index: usize) { 67 | let now = Instant::now(); 68 | let dur = now.duration_since(self.start[start_count]); 69 | self.tmp[tmp_index] += dur.as_nanos(); 70 | } 71 | #[inline] 72 | pub fn total(&mut self, start_count: usize, tmp_index: usize, count: usize) { 73 | let now = Instant::now(); 74 | let dur = now.duration_since(self.start[start_count]); 75 | let total = dur.as_nanos() + self.tmp[tmp_index]; 76 | self.clock[count] += total; 77 | self.counter[count] += 1; 78 | 79 | #[cfg(feature = "latency_write")] 80 | if count == UPDATING { 81 | let mut r = self.counter[count] as usize; 82 | // println!("{}, {}", r, total); 83 | if r >= SAMPLE_SIZE { 84 | let mut rng = rand::thread_rng(); 85 | r = u64_rand(&mut rng, 0, self.counter[count] - 1) as usize; 86 | } 87 | if r < SAMPLE_SIZE { 88 | self.sample[r] = total; 89 | } 90 | } 91 | self.tmp[tmp_index] = 0; 92 | } 93 | 94 | #[inline] 95 | pub fn add_counter(&mut self, count: usize, num: u64) { 96 | self.counter[count] += num; 97 | } 98 | // #[inline] 99 | // pub fn get_as_ms(&mut self, count: usize) -> f64 { 100 | // (self.clock[count] / 1000_000) as f64 101 | // } 102 | 103 | #[inline] 104 | pub fn get_as_ms(&mut self, count: usize) -> f64 { 105 | self.clock[count] as f64 / self.counter[count] as f64 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /src/storage/index/dash.rs: -------------------------------------------------------------------------------- 1 | use std::marker::PhantomData; 2 | use std::sync::atomic::AtomicU64; 3 | use std::sync::{Arc, Mutex}; 4 | 5 | use crate::c::ffi::*; 6 | use crate::config::NVM_ADDR; 7 | use crate::storage::table::TupleId; 8 | use crate::Result; 9 | use libc::c_void; 10 | 11 | #[derive(Debug, Clone)] 12 | pub struct Dash { 13 | phantom: PhantomData, 14 | root: *mut c_void, 15 | } 16 | unsafe impl Send for Dash {} 17 | unsafe impl Sync for Dash {} 18 | 19 | const MASK: u64 = (1 << 62) - 1; 20 | impl Dash { 21 | pub fn new() -> Self { 22 | Dash { 23 | root: unsafe { dash_create() }, 24 | phantom: PhantomData, 25 | } 26 | } 27 | pub fn insert(&self, key: u64, value: TupleId) -> Option { 28 | assert!(value.get_address() > 1000); 29 | unsafe { dash_insert(self.root, key, value.get_address()) }; 30 | Some(0) 31 | } 32 | pub fn update(&self, key: u64, value: TupleId) -> Option { 33 | // println!("{:x}", value.get_address()); 34 | assert!(value.get_address() > 1000); 35 | 36 | unsafe { dash_update(self.root, key, value.get_address()) }; 37 | Some(0) 38 | } 39 | pub fn remove(&self, key: &u64) -> Option { 40 | unsafe { dash_remove(self.root, *key) }; 41 | Some(0) 42 | } 43 | pub fn get(&self, key: &u64) -> Option { 44 | let v = unsafe { dash_find(self.root, *key) }; 45 | if v < NVM_ADDR { 46 | return None; 47 | } 48 | Some(TupleId { 49 | page_start: AtomicU64::new(v), 50 | }) 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/storage/index/dashstring.rs: -------------------------------------------------------------------------------- 1 | use std::marker::PhantomData; 2 | use std::sync::atomic::AtomicU64; 3 | use std::sync::{Arc, Mutex}; 4 | 5 | use crate::c::ffi::*; 6 | use crate::storage::table::TupleId; 7 | use crate::Result; 8 | use libc::{c_int, c_void}; 9 | use std::ffi::{CString, NulError}; 10 | 11 | #[derive(Debug, Clone)] 12 | pub struct DashString { 13 | root: *mut c_void, 14 | } 15 | unsafe impl Send for DashString {} 16 | unsafe impl Sync for DashString {} 17 | 18 | const MASK: u64 = (1 << 62) - 1; 19 | impl DashString { 20 | pub fn new() -> Self { 21 | DashString { 22 | root: unsafe { dashstring_create() }, 23 | } 24 | } 25 | pub fn insert(&self, key: S, length: usize, value: TupleId) -> Option 26 | where 27 | S: Into, 28 | { 29 | let ckey = std::ffi::CString::new(key.into()).expect("CString::new failed"); 30 | unsafe { 31 | dashstring_insert( 32 | self.root, 33 | ckey.as_ptr(), 34 | length as c_int, 35 | value.get_address(), 36 | ) 37 | }; 38 | Some(0) 39 | } 40 | pub fn update(&self, key: S, length: usize, value: TupleId) -> Option 41 | where 42 | S: Into, 43 | { 44 | let ckey = std::ffi::CString::new(key.into()).expect("CString::new failed"); 45 | unsafe { 46 | dashstring_update( 47 | self.root, 48 | ckey.as_ptr(), 49 | length as c_int, 50 | value.get_address(), 51 | ) 52 | }; 53 | Some(0) 54 | } 55 | pub fn get(&self, key: S, length: usize) -> Option 56 | where 57 | S: Into, 58 | { 59 | let ckey = std::ffi::CString::new(key.into()).unwrap(); 60 | let v = unsafe { dashstring_find(self.root, ckey.as_ptr(), length as c_int) }; 61 | Some(TupleId { 62 | page_start: AtomicU64::new(v & MASK), 63 | }) 64 | } 65 | pub fn remove(&self, key: S, length: usize) -> Option 66 | where 67 | S: Into, 68 | { 69 | let ckey = std::ffi::CString::new(key.into()).unwrap(); 70 | let v = unsafe { dashstring_remove(self.root, ckey.as_ptr(), length as c_int) }; 71 | Some(TupleId { 72 | page_start: AtomicU64::new(v & MASK), 73 | }) 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /src/storage/index/mod.rs: -------------------------------------------------------------------------------- 1 | // pub mod nbtree; 2 | #[cfg(feature = "dash")] 3 | pub mod dash; 4 | #[cfg(feature = "dash")] 5 | pub mod dashstring; 6 | #[cfg(feature = "nbtree")] 7 | pub mod nbtree; -------------------------------------------------------------------------------- /src/storage/index/nbtree.rs: -------------------------------------------------------------------------------- 1 | 2 | use std::marker::PhantomData; 3 | use std::sync::atomic::AtomicU64; 4 | 5 | use libc::{c_void, c_int}; 6 | 7 | use crate::c::ffi::*; 8 | use crate::customer_config::BTREE_FILE_PATH; 9 | use crate::storage::table::TupleId; 10 | 11 | #[derive(Debug, Clone)] 12 | pub struct NBTree { 13 | phantom: PhantomData, 14 | root: *mut c_void, 15 | } 16 | unsafe impl Send for NBTree {} 17 | unsafe impl Sync for NBTree {} 18 | 19 | const MASK:u64 = (1 << 62)-1; 20 | impl NBTree { 21 | pub fn new() -> Self { 22 | NBTree { 23 | root: unsafe{btree_create()}, 24 | phantom: PhantomData, 25 | } 26 | } 27 | pub fn insert(&self, key: u64, value: TupleId) -> Option { 28 | unsafe{btree_insert(self.root, key, value.get_address())}; 29 | Some(0) 30 | } 31 | pub fn remove(&self, key: &u64) -> Option { 32 | unsafe{btree_remove(self.root, *key)}; 33 | Some(0) 34 | } 35 | pub fn get(&self, key: &u64) -> Option { 36 | let v = unsafe{btree_find(self.root, *key)}; 37 | Some(TupleId{page_start: AtomicU64::new(v & MASK)}) 38 | } 39 | 40 | pub fn range(&self, start: &u64, end: &u64) -> Vec { 41 | let mut result = Vec::new(); 42 | unsafe { 43 | let mut item = btree_scan(self.root, *start, *end); 44 | while item > 0 { 45 | // println!("receive {:x}", item); 46 | 47 | result.push(TupleId{page_start: AtomicU64::new(item & MASK)}); 48 | item = btree_next(self.root, *start, *end); 49 | } 50 | } 51 | 52 | return result; 53 | } 54 | pub fn last(&self, start: &u64, end: &u64) -> Option { 55 | unsafe { 56 | // println!("{}, {}", start, end); 57 | let item = btree_last(self.root, *start, *end); 58 | if item == 0 { 59 | return None; 60 | } 61 | // println!("last {}", item & MASK); 62 | 63 | return Some(TupleId{page_start: AtomicU64::new(item & MASK)}); 64 | } 65 | } 66 | } 67 | 68 | #[cfg(feature = "nbtree")] 69 | pub fn init_index(thread_id: i32) { 70 | println!("-----init index {}----", thread_id); 71 | unsafe{btree_init_for_thread(thread_id as c_int)}; 72 | } -------------------------------------------------------------------------------- /src/storage/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod allocator; 2 | pub mod catalog; 3 | pub mod delta; 4 | pub mod global; 5 | pub mod index; 6 | pub mod nvm_file; 7 | pub mod row; 8 | pub mod schema; 9 | pub mod table; 10 | pub mod timestamp; 11 | pub mod variable_table; 12 | -------------------------------------------------------------------------------- /src/storage/timestamp.rs: -------------------------------------------------------------------------------- 1 | use crate::{config::U64_OFFSET, range}; 2 | use std::{fmt, ops::Range}; 3 | 4 | pub const TS_TID: Range = range!(0, U64_OFFSET); 5 | #[cfg(feature = "read_ts")] 6 | pub const TS_READ_TS: Range = range!(TS_TID.end, U64_OFFSET); 7 | // #[cfg(any(feature = "read_ts"))] 8 | // pub const TS_BEGIN_TS: Range = range!(TS_READ_TS.end, U64_OFFSET); 9 | // #[cfg(any(feature = "read_ts"))] 10 | // pub const TS_END_TS: Range = range!(TS_BEGIN_TS.end, U64_OFFSET); 11 | 12 | #[derive(Debug, Copy, Clone, PartialEq)] 13 | pub struct TimeStamp { 14 | pub tid: u64, 15 | #[cfg(feature = "read_ts")] 16 | pub read_ts: u64, 17 | } 18 | 19 | impl fmt::Display for TimeStamp { 20 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 21 | write!(f, "{}", self.tid) 22 | } 23 | } 24 | 25 | impl Default for TimeStamp { 26 | fn default() -> Self { 27 | TimeStamp { 28 | tid: 0, 29 | #[cfg(feature = "read_ts")] 30 | read_ts: 0, 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/tpcc/tpcc_index.rs: -------------------------------------------------------------------------------- 1 | use crate::storage::table::TupleId; 2 | use once_cell::sync::OnceCell; 3 | use std::collections::HashMap; 4 | 5 | #[derive(Debug)] 6 | pub struct TpccIndex { 7 | tuple_index: HashMap, 8 | } 9 | 10 | static mut WAREHOUSES_INDEX: OnceCell = OnceCell::new(); 11 | static mut DISTRICTS_INDEX: OnceCell = OnceCell::new(); 12 | static mut CUSTOMERS_INDEX: OnceCell = OnceCell::new(); 13 | static mut ITEMS_INDEX: OnceCell = OnceCell::new(); 14 | static mut ORDERS_INDEX: OnceCell = OnceCell::new(); 15 | static mut ORDER_LINES_INDEX: OnceCell = OnceCell::new(); 16 | static mut NEW_ORDERS_INDEX: OnceCell = OnceCell::new(); 17 | static mut STOCKS_INDEX: OnceCell = OnceCell::new(); 18 | 19 | impl TpccIndex { 20 | pub fn new() -> Self { 21 | TpccIndex { 22 | tuple_index: HashMap::new(), 23 | } 24 | } 25 | 26 | pub fn add(&mut self, key: u64, tid: TupleId) { 27 | assert!(!self.tuple_index.contains_key(&key)); 28 | self.tuple_index.insert(key, tid); 29 | } 30 | pub fn get(&self, key: u64) -> TupleId { 31 | assert!(self.tuple_index.contains_key(&key)); 32 | self.tuple_index.get(&key).unwrap().clone() 33 | } 34 | pub fn init_tpcc() { 35 | unsafe { 36 | if WAREHOUSES_INDEX.get().is_none() { 37 | WAREHOUSES_INDEX.set(TpccIndex::new()).unwrap(); 38 | } 39 | if DISTRICTS_INDEX.get().is_none() { 40 | DISTRICTS_INDEX.set(TpccIndex::new()).unwrap(); 41 | } 42 | if CUSTOMERS_INDEX.get().is_none() { 43 | CUSTOMERS_INDEX.set(TpccIndex::new()).unwrap(); 44 | } 45 | if ITEMS_INDEX.get().is_none() { 46 | ITEMS_INDEX.set(TpccIndex::new()).unwrap(); 47 | } 48 | if ORDERS_INDEX.get().is_none() { 49 | ORDERS_INDEX.set(TpccIndex::new()).unwrap(); 50 | } 51 | if ORDER_LINES_INDEX.get().is_none() { 52 | ORDER_LINES_INDEX.set(TpccIndex::new()).unwrap(); 53 | } 54 | if NEW_ORDERS_INDEX.get().is_none() { 55 | NEW_ORDERS_INDEX.set(TpccIndex::new()).unwrap(); 56 | } 57 | if STOCKS_INDEX.get().is_none() { 58 | STOCKS_INDEX.set(TpccIndex::new()).unwrap(); 59 | } 60 | } 61 | } 62 | pub fn warehouses_index() -> &'static mut Self { 63 | unsafe { WAREHOUSES_INDEX.get_mut().expect("tpcc is not initialized") } 64 | } 65 | pub fn districts_index() -> &'static mut Self { 66 | unsafe { DISTRICTS_INDEX.get_mut().expect("tpcc is not initialized") } 67 | } 68 | pub fn customers_index() -> &'static mut Self { 69 | unsafe { CUSTOMERS_INDEX.get_mut().expect("tpcc is not initialized") } 70 | } 71 | pub fn items_index() -> &'static mut Self { 72 | unsafe { ITEMS_INDEX.get_mut().expect("tpcc is not initialized") } 73 | } 74 | pub fn orders_index() -> &'static mut Self { 75 | unsafe { ORDERS_INDEX.get_mut().expect("tpcc is not initialized") } 76 | } 77 | pub fn order_lines_index() -> &'static mut Self { 78 | unsafe { 79 | ORDER_LINES_INDEX 80 | .get_mut() 81 | .expect("tpcc is not initialized") 82 | } 83 | } 84 | pub fn new_orders_index() -> &'static mut Self { 85 | unsafe { NEW_ORDERS_INDEX.get_mut().expect("tpcc is not initialized") } 86 | } 87 | pub fn stocks_index() -> &'static mut Self { 88 | unsafe { STOCKS_INDEX.get_mut().expect("tpcc is not initialized") } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/transaction/clog.rs: -------------------------------------------------------------------------------- 1 | use crate::config::Address; 2 | use crate::config::PAGE_SIZE; 3 | use crate::config::U64_OFFSET; 4 | use crate::storage::timestamp::TimeStamp; 5 | use crossbeam::queue::SegQueue; 6 | use std::sync::atomic::AtomicU64; 7 | use std::sync::atomic::Ordering; 8 | 9 | const MAX_TXN_COUNT_PER_PAGE: u64 = PAGE_SIZE / U64_OFFSET; 10 | const MAX_CLOG_SIZE: u64 = 32; 11 | 12 | #[derive(Debug)] 13 | pub struct ClogPage { 14 | page: Vec, 15 | } 16 | impl ClogPage { 17 | pub fn new() -> Self { 18 | ClogPage { 19 | page: std::iter::from_fn(|| Some(AtomicU64::new(0))) 20 | .take(MAX_TXN_COUNT_PER_PAGE as usize) 21 | .collect(), 22 | } 23 | } 24 | fn set(&self, tid: u64, status: u64) { 25 | self.page 26 | .get(tid as usize) 27 | .unwrap() 28 | .store(status, Ordering::Relaxed); 29 | } 30 | fn get(&self, tid: u64) -> u64 { 31 | self.page.get(tid as usize).unwrap().load(Ordering::Relaxed) 32 | } 33 | } 34 | 35 | #[derive(Debug)] 36 | pub struct Clog { 37 | page: ClogPage, //Vec, 38 | } 39 | 40 | impl Clog { 41 | pub fn new() -> Clog { 42 | Clog { 43 | // pages: std::iter::from_fn(|| Some(ClogPage::new())) 44 | // .take(MAX_CLOG_SIZE as usize) 45 | // .collect(), 46 | page: ClogPage::new(), 47 | } 48 | } 49 | pub fn get(&self, ts: TimeStamp) -> u64 { 50 | // let page_id = 0;//(ts.tid / MAX_TXN_COUNT_PER_PAGE) % MAX_CLOG_SIZE; 51 | let page_offset = ts.tid % MAX_TXN_COUNT_PER_PAGE; 52 | // let page = self.pages.get(page_id as usize).unwrap(); 53 | self.page.get(page_offset) 54 | } 55 | pub fn save(&self, ts: TimeStamp, status: u64) { 56 | // let page_id = 0;//(ts.tid / MAX_TXN_COUNT_PER_PAGE) % MAX_CLOG_SIZE; 57 | let page_offset = ts.tid % MAX_TXN_COUNT_PER_PAGE; 58 | // println!("{}", page_id); 59 | // let page = self.pages.get(page_id as usize).unwrap(); 60 | self.page.set(page_offset, status); 61 | } 62 | } 63 | 64 | #[cfg(test)] 65 | mod tests { 66 | use super::*; 67 | use crate::config::NVM_ADDR; 68 | use crate::storage::catalog::Catalog; 69 | use crate::storage::nvm_file::NVMTableStorage; 70 | 71 | #[test] 72 | fn test_clog_rw() { 73 | let clog = Clog::new(); 74 | let mut ts0 = TimeStamp::default(); 75 | let mut ts1 = TimeStamp::default(); 76 | 77 | ts0.tid = 0; 78 | ts1.tid = 1; 79 | 80 | clog.save(ts0, 1); 81 | clog.save(ts1, 0); 82 | assert_eq!(clog.get(ts0), 1); 83 | assert_eq!(clog.get(ts1), 0); 84 | 85 | // let clog_reload = Clog::reload(page_id.page_start); 86 | // assert_eq!(clog_reload.get(ts0), 1); 87 | // assert_eq!(clog_reload.get(ts1), 0); 88 | } 89 | 90 | #[test] 91 | #[cfg(feature = "cc_cfg_occ")] 92 | fn test_clog_in_catalog() { 93 | NVMTableStorage::init_test_database(); 94 | let catalog = Catalog::new(NVM_ADDR); 95 | let clog = catalog.get_clog(); 96 | let mut ts0 = TimeStamp::default(); 97 | let mut ts1 = TimeStamp::default(); 98 | 99 | ts0.tid = 0; 100 | ts1.tid = 1; 101 | clog.save(ts0, 1); 102 | clog.save(ts1, 0); 103 | assert_eq!(clog.get(ts0), 1); 104 | assert_eq!(clog.get(ts1), 0); 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /src/transaction/mod.rs: -------------------------------------------------------------------------------- 1 | use numeric_enum_macro::numeric_enum; 2 | 3 | numeric_enum! { 4 | #[repr(u8)] 5 | #[derive(Debug, PartialEq, Eq, Clone, Copy)] 6 | pub enum TxStatus { 7 | Nop = 0, 8 | Initial = 1, 9 | InProgress = 2, 10 | Committing = 3, 11 | Committed = 4, 12 | Aborting = 5, 13 | Aborted = 6, 14 | } 15 | } 16 | 17 | pub mod access; 18 | pub mod clog; 19 | pub mod snapshot; 20 | pub mod transaction; 21 | pub mod transaction_buffer; 22 | 23 | pub const THREAD_ID_BITS: u64 = 8; 24 | pub const THREAD_ID_MASK: u64 = (1u64 << THREAD_ID_BITS) - 1; 25 | 26 | pub fn get_thread_id(tid: u64) -> u64 { 27 | return tid; 28 | } 29 | pub fn get_timestamp(tid: u64) -> u64 { 30 | return tid >> THREAD_ID_BITS; 31 | } 32 | pub fn get_tid(thread_id: u64, timestamp: u64) -> u64 { 33 | return timestamp << THREAD_ID_BITS | thread_id; 34 | } 35 | 36 | #[cfg(test)] 37 | mod tests { 38 | use super::*; 39 | use std::convert::TryInto; 40 | 41 | #[test] 42 | fn enum_cast_example() { 43 | let s = TxStatus::Initial; 44 | let n: u8 = s.into(); 45 | let s1: TxStatus = n.try_into().unwrap(); 46 | assert_eq!(s, s1); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/transaction/snapshot/clog_snapshot.rs: -------------------------------------------------------------------------------- 1 | use crate::storage::timestamp::TimeStamp; 2 | use crate::transaction::TxStatus; 3 | use crate::{storage::catalog::Catalog, transaction::clog::Clog}; 4 | use std::sync::atomic::{AtomicU64, Ordering}; 5 | const ABORT: u64 = 1; 6 | #[derive(Debug)] 7 | pub struct ClogMvccSnapShot { 8 | clock: AtomicU64, 9 | } 10 | impl ClogMvccSnapShot { 11 | pub fn new() -> Self { 12 | ClogMvccSnapShot { 13 | clock: AtomicU64::new(1), 14 | } 15 | } 16 | pub fn new_txn(&self, _: u64) -> u64 { 17 | self.clock.fetch_add(1, Ordering::Relaxed) 18 | // 10 19 | } 20 | pub fn reload_clock(&self, new_clock: u64) { 21 | self.clock.store(new_clock, Ordering::Relaxed) 22 | } 23 | pub fn finish_txn(&self, txn_id: TimeStamp, commited: bool) { 24 | let clog = Catalog::global().get_clog(); 25 | if commited { 26 | clog.save(txn_id, self.clock.fetch_add(1, Ordering::Relaxed)); 27 | } else { 28 | clog.save(txn_id, ABORT); 29 | } 30 | } 31 | pub fn is_finished(txn_id: TimeStamp, clog: &Clog) -> bool { 32 | let stat = clog.get(txn_id); 33 | if stat == ABORT || stat > txn_id.tid { 34 | return true; 35 | } 36 | false 37 | } 38 | pub fn get_snapshot(&self, snapshot: &mut ClogMvccSnapShotEntity) { 39 | snapshot.clock = self.clock.load(Ordering::SeqCst); 40 | } 41 | } 42 | 43 | #[derive(Debug)] 44 | pub struct ClogMvccSnapShotEntity { 45 | pub clock: u64, 46 | } 47 | impl ClogMvccSnapShotEntity { 48 | pub fn new() -> Self { 49 | ClogMvccSnapShotEntity { clock: 0 } 50 | } 51 | pub fn access(&self, tuple_ts: TimeStamp, txn_ts: u64, cur_min_txn: u64) -> bool { 52 | // println!("{}, {}", tuple_ts.tid, txn_ts); 53 | if tuple_ts.tid == txn_ts { 54 | return true; 55 | } 56 | if tuple_ts.tid < cur_min_txn { 57 | return true; 58 | } 59 | let clog = Catalog::global().get_clog(); 60 | let ts = clog.get(tuple_ts); 61 | if ts == 0 { 62 | return false; 63 | } 64 | if ts == ABORT { 65 | return true; 66 | } 67 | ts <= self.clock 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/transaction/snapshot/mod.rs: -------------------------------------------------------------------------------- 1 | // #[cfg(feature = "cc_cfg_occ")] 2 | // pub mod clog_snapshot; 3 | // #[cfg(feature = "cc_cfg_occ")] 4 | // pub type SnapShot = clog_snapshot::ClogMvccSnapShot; 5 | // #[cfg(feature = "cc_cfg_occ")] 6 | // pub type SnapShotEntity = clog_snapshot::ClogMvccSnapShotEntity; 7 | 8 | // #[cfg(feature = "cc_cfg_to")] 9 | pub mod to_snapshot; 10 | // #[cfg(feature = "cc_cfg_to")] 11 | pub type SnapShot = to_snapshot::ToSnapShot; 12 | // #[cfg(feature = "cc_cfg_to")] 13 | pub type SnapShotEntity = to_snapshot::ToSnapShotEntity; 14 | 15 | // #[cfg(feature = "cc_cfg_2pl")] 16 | // pub mod to_snapshot; 17 | // #[cfg(feature = "cc_cfg_2pl")] 18 | // pub type SnapShot = to_snapshot::ToSnapShot; 19 | // #[cfg(feature = "cc_cfg_2pl")] 20 | // pub type SnapShotEntity = to_snapshot::ToSnapShotEntity; 21 | -------------------------------------------------------------------------------- /src/transaction/snapshot/to_snapshot.rs: -------------------------------------------------------------------------------- 1 | use crate::config::POW_2_63; 2 | use crate::storage::row::TupleError; 3 | use crate::storage::timestamp::TimeStamp; 4 | use crate::transaction::TxStatus; 5 | use crate::{storage::catalog::Catalog, transaction::clog::Clog}; 6 | use chrono::prelude::*; 7 | use std::sync::atomic::{AtomicU64, Ordering}; 8 | 9 | const ABORT: u64 = 1; 10 | #[derive(Debug)] 11 | pub struct ToSnapShot { 12 | clock: AtomicU64, 13 | } 14 | // use real clock instead of share counter for better scalibility 15 | impl ToSnapShot { 16 | pub fn new() -> Self { 17 | ToSnapShot { 18 | clock: AtomicU64::new(2), 19 | } 20 | } 21 | pub fn new_txn(&self, thread_id: u64) -> u64 { 22 | // self.clock.fetch_add(1, Ordering::Relaxed) 23 | ((Local::now().timestamp_nanos() as u64) << 6) | thread_id 24 | } 25 | pub fn reload_clock(&self, new_clock: u64) { 26 | self.clock.store(new_clock, Ordering::Relaxed) 27 | } 28 | 29 | pub fn finish_txn(&self, _: TimeStamp, _: bool) { 30 | // self.clock.fetch_add(1, Ordering::Relaxed); 31 | } 32 | pub fn is_finished(txn_id: TimeStamp, clog: &Clog) -> bool { 33 | let stat = clog.get(txn_id); 34 | if stat == ABORT || stat > txn_id.tid { 35 | return true; 36 | } 37 | false 38 | } 39 | pub fn get_snapshot(&self, snapshot: &mut ToSnapShotEntity) { 40 | snapshot.clock = (Local::now().timestamp_nanos() as u64) << 6; 41 | // snapshot.clock =self.clock.load(Ordering::Relaxed); 42 | } 43 | } 44 | 45 | #[derive(Debug)] 46 | pub struct ToSnapShotEntity { 47 | pub clock: u64, 48 | } 49 | impl ToSnapShotEntity { 50 | pub fn new() -> Self { 51 | ToSnapShotEntity { clock: 0 } 52 | } 53 | pub fn access(&self, tuple_ts: TimeStamp, txn_id: u64, _: u64) -> bool { 54 | if tuple_ts.tid == txn_id || tuple_ts.tid == txn_id | POW_2_63 { 55 | return true; 56 | } 57 | tuple_ts.tid <= self.clock 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/utils/executor/mem.rs: -------------------------------------------------------------------------------- 1 | //! Basic functions for asynchronous memory access. 2 | use super::executor::yield_now; 3 | 4 | /// Asynchronously prefetch the memory, for read. 5 | pub async fn prefetch_read(x: u64) { 6 | use std::arch::x86_64::{_mm_prefetch, _MM_HINT_T0}; 7 | unsafe { 8 | let ptr = x as *const i8; 9 | _mm_prefetch::<_MM_HINT_T0>(ptr); 10 | } 11 | yield_now().await 12 | } 13 | -------------------------------------------------------------------------------- /src/utils/executor/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod executor; 2 | pub mod mem; 3 | 4 | pub use executor::yield_now; 5 | 6 | #[cfg(test)] 7 | mod tests { 8 | use super::*; 9 | 10 | #[test] 11 | fn smoke_test() { 12 | use std::sync::atomic::{AtomicUsize, Ordering}; 13 | 14 | let (executor, spanwer) = executor::Executor::new(); 15 | let handle = std::thread::spawn(move || executor.run()); 16 | 17 | static COUNTER: AtomicUsize = AtomicUsize::new(0); 18 | const NUM_TASKS: usize = 32; 19 | for id in 0..NUM_TASKS { 20 | spanwer.spawn(async move { 21 | COUNTER.fetch_add(1, Ordering::Relaxed); 22 | executor::yield_now().await; 23 | COUNTER.fetch_add(1, Ordering::Relaxed); 24 | }); 25 | if id * 5 % 8 < 3 { 26 | std::thread::sleep(std::time::Duration::from_micros(5)); 27 | } 28 | } 29 | drop(spanwer); 30 | handle.join().unwrap(); 31 | assert_eq!(COUNTER.load(Ordering::Relaxed), NUM_TASKS * 2); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/utils/file.rs: -------------------------------------------------------------------------------- 1 | use crate::config::NVM_ADDR; 2 | use libc; 3 | use memmap::MmapMut; 4 | use std::arch::asm; 5 | use std::os::unix::prelude::AsRawFd; 6 | use std::{fs::OpenOptions, io, path::Path}; 7 | 8 | /// Open or create a file, then mmap it to the address space. 9 | pub fn mmap_lib(file_path: impl AsRef, file_size: u64) -> io::Result { 10 | let f = OpenOptions::new() 11 | .read(true) 12 | .write(true) 13 | .create(true) 14 | .open(file_path)?; 15 | 16 | debug!("create or open file"); 17 | 18 | f.set_len(file_size)?; 19 | let map = unsafe { MmapMut::map_mut(&f) }?; 20 | // let map = unsafe { MmapOptions::new().map_mut(&f)?}; 21 | Ok(map) 22 | } 23 | 24 | pub fn mmap(file_path: impl AsRef, file_size: u64) -> io::Result<*mut u8> { 25 | let f = OpenOptions::new() 26 | .read(true) 27 | .write(true) 28 | .create(true) 29 | .open(file_path)?; 30 | 31 | debug!("create or open file"); 32 | 33 | f.set_len(file_size)?; 34 | unsafe { 35 | let data = libc::mmap( 36 | /* addr: */ NVM_ADDR as *mut libc::c_void, 37 | /* len: */ file_size as usize, 38 | /* prot: */ libc::PROT_READ | libc::PROT_WRITE, 39 | // Then make the mapping *public* so it is written back to the file 40 | /* flags: */ 41 | libc::MAP_SHARED, 42 | /* fd: */ f.as_raw_fd(), 43 | /* offset: */ 0, 44 | ) as *mut u8; 45 | Ok(data) 46 | } 47 | } 48 | 49 | #[inline] 50 | pub fn sfence() { 51 | use std::sync::atomic::{fence, Ordering}; 52 | // fence(Ordering::Release); 53 | 54 | // fence(Ordering::SeqCst); 55 | unsafe { 56 | asm!("sfence"); 57 | } 58 | } 59 | 60 | #[cfg(test)] 61 | mod tests { 62 | use super::*; 63 | 64 | #[test] 65 | fn test_mmap_lib() { 66 | let mut mmap = mmap_lib("/tmp/test.txt", 16).unwrap(); 67 | let src = "hello"; 68 | mmap[..src.len()].copy_from_slice(src.as_bytes()); 69 | assert_eq!(&mmap[..src.len()], src.as_bytes()); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/utils/macros.rs: -------------------------------------------------------------------------------- 1 | #[macro_export] 2 | macro_rules! range { 3 | ($start:expr, $len:expr) => { 4 | $start..($start + $len) 5 | }; 6 | } 7 | -------------------------------------------------------------------------------- /src/utils/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod executor; 2 | pub mod file; 3 | pub mod io; 4 | pub mod macros; 5 | pub mod persist; 6 | -------------------------------------------------------------------------------- /src/utils/persist/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod persist_array; 2 | pub mod persist_bitmap; 3 | pub mod persist_struct; 4 | -------------------------------------------------------------------------------- /src/utils/persist/persist_bitmap.rs: -------------------------------------------------------------------------------- 1 | use bitvec::prelude::*; 2 | 3 | #[derive(Default, Debug)] 4 | pub struct PersistBitmap<'a> { 5 | // 0: free, 1: allocated 6 | bitmap: &'a mut BitSlice, 7 | /// The minimum `i` where `bitmap[i] == false`. 8 | min_free_bit: usize, 9 | } 10 | 11 | impl<'a> PersistBitmap<'a> { 12 | /// Create an empty bitmap over a slice. 13 | pub fn new_from_slice(slice: &'a mut [u8]) -> Self { 14 | slice.fill(0); 15 | PersistBitmap { 16 | bitmap: BitSlice::::from_slice_mut(slice).unwrap(), 17 | min_free_bit: 0, 18 | } 19 | } 20 | 21 | /// Construct a bitmap over a slice. 22 | pub fn from_slice(slice: &'a mut [u8]) -> Self { 23 | let bitmap = BitSlice::::from_slice_mut(slice).unwrap(); 24 | PersistBitmap { 25 | min_free_bit: bitmap.leading_ones(), 26 | bitmap, 27 | } 28 | } 29 | 30 | /// Whether `id` is allocated. 31 | pub fn exists(&self, id: u64) -> bool { 32 | self.bitmap[id as usize] 33 | } 34 | 35 | /// Allocate a number. 36 | pub fn alloc(&mut self) -> Option { 37 | if self.min_free_bit == self.bitmap.len() { 38 | return None; 39 | } 40 | let allocated = self.min_free_bit; 41 | self.bitmap.set(allocated, true); 42 | self.update_min_from(allocated + 1); 43 | // self.min_free_bit += 1; 44 | Some(allocated as u64) 45 | } 46 | 47 | /// Free a number. 48 | pub fn free(&mut self, idx: u64) { 49 | assert!( 50 | self.bitmap[idx as usize], 51 | "the number you want to free is not allocated" 52 | ); 53 | self.bitmap.set(idx as usize, false); 54 | self.min_free_bit = self.min_free_bit.min(idx as usize); 55 | } 56 | 57 | /// Allocate consequent multiple numbers. 58 | pub fn alloc_multi(&mut self, len: usize) -> Option { 59 | let mut start = self.min_free_bit; 60 | while start + len <= self.bitmap.len() { 61 | if self.bitmap[start..start + len].not_any() { 62 | self.bitmap[start..start + len].set_all(true); 63 | if start == self.min_free_bit { 64 | self.update_min_from(self.min_free_bit); 65 | } 66 | return Some(start as u64); 67 | } 68 | start += self.bitmap[start..].leading_zeros(); 69 | start += self.bitmap[start..].leading_ones(); 70 | } 71 | None 72 | } 73 | 74 | fn update_min_from(&mut self, start: usize) { 75 | self.min_free_bit = start + self.bitmap[start..].leading_ones(); 76 | } 77 | } 78 | 79 | #[cfg(test)] 80 | mod tests { 81 | use super::*; 82 | 83 | #[test] 84 | fn test_bitmap() { 85 | let mut buf = [0xffu8; 2]; 86 | let mut p = PersistBitmap::new_from_slice(&mut buf); 87 | 88 | for i in 0..16 { 89 | assert_eq!(p.alloc(), Some(i)); 90 | } 91 | assert_eq!(p.alloc(), None); 92 | p.free(7); 93 | assert_eq!(p.alloc(), Some(7)); 94 | p.free(11); 95 | 96 | // drop and reload 97 | let mut q = PersistBitmap::from_slice(&mut buf); 98 | assert_eq!(q.alloc(), Some(11)); 99 | } 100 | 101 | #[test] 102 | fn test_alloc_multi() { 103 | let mut buf = [0xffu8; 2]; 104 | let mut p = PersistBitmap::new_from_slice(&mut buf); 105 | 106 | assert_eq!(p.alloc_multi(3), Some(0)); 107 | assert_eq!(p.alloc_multi(9), Some(3)); 108 | assert_eq!(p.alloc_multi(8), None); 109 | for i in 2..10 { 110 | p.free(i); 111 | } 112 | assert_eq!(p.alloc_multi(8), Some(2)); 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /src/utils/persist/persist_struct.rs: -------------------------------------------------------------------------------- 1 | use crate::config::Address; 2 | use crate::utils::io; 3 | use crate::utils::persist::persist_array::PersistArray; 4 | use std::fmt::Display; 5 | use std::ops::Range; 6 | #[derive(Copy, Clone, Debug, Default)] 7 | /// | len (u64) | metadata (data_offset) | 8 | pub struct PersistStruct { 9 | data: PersistArray, 10 | data_offset: u64, 11 | new: bool, 12 | } 13 | 14 | impl PersistStruct { 15 | pub fn new(address: Address, data_offset: u64) -> Self { 16 | let mut s = PersistStruct { 17 | data: PersistArray::new(address), 18 | data_offset, 19 | new: true, 20 | }; 21 | s.set_len(data_offset); 22 | s 23 | } 24 | pub fn new_without_length(address: Address, data_offset: u64) -> Self { 25 | PersistStruct { 26 | data: PersistArray::new_without_length(address), 27 | data_offset, 28 | new: true, 29 | } 30 | } 31 | pub fn reload(address: Address, data_offset: u64) -> Self { 32 | PersistStruct { 33 | data: PersistArray::reload(address), 34 | data_offset, 35 | new: false, 36 | } 37 | } 38 | pub fn reload_without_length(address: Address, data_offset: u64) -> Self { 39 | PersistStruct { 40 | data: PersistArray::reload_without_length(address), 41 | data_offset, 42 | new: false, 43 | } 44 | } 45 | pub fn clwb(&self) { 46 | self.data.clwb(); 47 | } 48 | pub fn clwb_len(&self, len: u64) { 49 | self.data.clwb_len(len); 50 | } 51 | pub fn _address(&self) -> Address { 52 | self.data._address() 53 | } 54 | pub fn _new(&self) -> bool { 55 | self.new 56 | } 57 | pub fn _data_address(&self) -> Address { 58 | self.data._address() + self.data_offset + self.data.length_offset 59 | } 60 | 61 | pub fn get_meta_data(&self, parameter: Range) -> T { 62 | unsafe { 63 | let value = io::read(self._address() + parameter.start + self.data.length_offset); 64 | value 65 | } 66 | } 67 | pub fn set_meta_data(&self, parameter: Range, value: T) { 68 | unsafe { 69 | io::write( 70 | self._address() + parameter.start + self.data.length_offset, 71 | value, 72 | ); 73 | }; 74 | } 75 | 76 | pub fn len(&self) -> u64 { 77 | self.data.len() 78 | } 79 | 80 | pub fn data_len(&self) -> u64 { 81 | self.data.len() - self.data_offset 82 | } 83 | 84 | pub fn set_len(&mut self, len: u64) { 85 | self.data.set_len(len); 86 | } 87 | pub fn save(&mut self, bytes: &[u8]) { 88 | assert_eq!(self.new, true); 89 | self.data.put_slice(bytes); 90 | self.new = false; 91 | } 92 | pub fn data(&self) -> &[u8] { 93 | self.data.range(self.data_offset, self.len()).unwrap() 94 | } 95 | pub fn range(&self, start: u64, end: u64) -> &[u8] { 96 | self.data.range(start, end).unwrap() 97 | } 98 | pub fn put_slice(&self, bytes: &[u8]) { 99 | self.data.put_slice(bytes); 100 | } 101 | pub fn to_vec(&self) -> Vec { 102 | self.data.to_vec() 103 | } 104 | pub fn to_vec_len(&self, len: usize) -> Vec { 105 | self.data.to_vec_len(len) 106 | } 107 | pub fn copy_from_slice(&self, start: u64, data: &[u8]) { 108 | self.data.copy_from_slice(start, data); 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /tpcc.sh: -------------------------------------------------------------------------------- 1 | rm /mnt/pmem0/pmem_hash.data 2 | cd dash 3 | git checkout tpcc 4 | cd .. 5 | RUST_BACKTRACE=1 taskset -c 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96 cargo test tpcc_test_sync --release -- --nocapture 6 | -------------------------------------------------------------------------------- /ycsb.sh: -------------------------------------------------------------------------------- 1 | rm /mnt/pmem0/pmem_hash.data 2 | cd dash 3 | git checkout ycsb 4 | cd .. 5 | taskset -c 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96 cargo test ycsb_test_sync --release -- --nocapture 6 | --------------------------------------------------------------------------------