Showing preview only (3,487K chars total). Download the full file or copy to clipboard to get everything.
Repository: akopytov/sysbench
Branch: master
Commit: 3ceba0b1e115
Files: 685
Total size: 3.2 MB
Directory structure:
gitextract_6o7n74ws/
├── .github/
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── .travis.yml
├── COPYING
├── ChangeLog
├── Dockerfile
├── Makefile.am
├── README.md
├── autogen.sh
├── config/
│ └── config.rpath
├── configure.ac
├── debian/
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── dirs
│ ├── docs
│ ├── install
│ ├── rules
│ └── source/
│ └── format
├── install-sh
├── m4/
│ ├── ac_check_aio.m4
│ ├── ac_check_pgsql.m4
│ ├── acx_pthread.m4
│ ├── ax_check_compile_flag.m4
│ ├── ax_compiler_vendor.m4
│ ├── ax_gcc_archflag.m4
│ ├── ax_gcc_func_attribute.m4
│ ├── ax_gcc_x86_cpuid.m4
│ ├── ax_tls.m4
│ ├── extensions.m4
│ ├── host-cpu-c-abi.m4
│ ├── lib-ld.m4
│ ├── lib-link.m4
│ ├── lib-prefix.m4
│ ├── pkg.m4
│ ├── sb_autoconf_compat.m4
│ ├── sb_check_mysql.m4
│ ├── sb_concurrency_kit.m4
│ └── sb_luajit.m4
├── missing
├── mkinstalldirs
├── rpm/
│ └── sysbench.spec
├── scripts/
│ └── buildpack.sh
├── snap/
│ └── snapcraft.yaml.in
├── src/
│ ├── Makefile.am
│ ├── db_driver.c
│ ├── db_driver.h
│ ├── drivers/
│ │ ├── Makefile.am
│ │ ├── mysql/
│ │ │ ├── Makefile.am
│ │ │ └── drv_mysql.c
│ │ └── pgsql/
│ │ ├── Makefile.am
│ │ └── drv_pgsql.c
│ ├── lua/
│ │ ├── Makefile.am
│ │ ├── bulk_insert.lua
│ │ ├── empty-test.lua
│ │ ├── internal/
│ │ │ ├── Makefile.am
│ │ │ ├── sysbench.cmdline.lua
│ │ │ ├── sysbench.histogram.lua
│ │ │ ├── sysbench.lua
│ │ │ ├── sysbench.rand.lua
│ │ │ └── sysbench.sql.lua
│ │ ├── oltp_common.lua
│ │ ├── oltp_delete.lua
│ │ ├── oltp_insert.lua
│ │ ├── oltp_point_select.lua
│ │ ├── oltp_read_only.lua
│ │ ├── oltp_read_write.lua
│ │ ├── oltp_update_index.lua
│ │ ├── oltp_update_non_index.lua
│ │ ├── oltp_write_only.lua
│ │ ├── prime-test.lua
│ │ ├── select_random_points.lua
│ │ └── select_random_ranges.lua
│ ├── sb_barrier.c
│ ├── sb_barrier.h
│ ├── sb_ck_pr.h
│ ├── sb_counter.c
│ ├── sb_counter.h
│ ├── sb_global.h
│ ├── sb_histogram.c
│ ├── sb_histogram.h
│ ├── sb_list.h
│ ├── sb_logger.c
│ ├── sb_logger.h
│ ├── sb_lua.c
│ ├── sb_lua.h
│ ├── sb_options.c
│ ├── sb_options.h
│ ├── sb_rand.c
│ ├── sb_rand.h
│ ├── sb_thread.c
│ ├── sb_thread.h
│ ├── sb_timer.c
│ ├── sb_timer.h
│ ├── sb_util.c
│ ├── sb_util.h
│ ├── sysbench.c
│ ├── sysbench.h
│ ├── tests/
│ │ ├── Makefile.am
│ │ ├── cpu/
│ │ │ ├── Makefile.am
│ │ │ └── sb_cpu.c
│ │ ├── fileio/
│ │ │ ├── Makefile.am
│ │ │ ├── crc32.c
│ │ │ ├── crc32.h
│ │ │ ├── crc32tbl.h
│ │ │ └── sb_fileio.c
│ │ ├── memory/
│ │ │ ├── Makefile.am
│ │ │ └── sb_memory.c
│ │ ├── mutex/
│ │ │ ├── Makefile.am
│ │ │ └── sb_mutex.c
│ │ ├── sb_cpu.h
│ │ ├── sb_fileio.h
│ │ ├── sb_memory.h
│ │ ├── sb_mutex.h
│ │ ├── sb_threads.h
│ │ └── threads/
│ │ ├── Makefile.am
│ │ └── sb_threads.c
│ └── xoroshiro128plus.h
├── tests/
│ ├── Makefile.am
│ ├── README.md
│ ├── include/
│ │ ├── api_sql_common.sh
│ │ ├── config.sh.in
│ │ ├── drv_common.sh
│ │ ├── inspect.lua
│ │ ├── mysql_common.sh
│ │ ├── pgsql_common.sh
│ │ ├── script_bulk_insert_common.sh
│ │ ├── script_oltp_common.sh
│ │ └── script_select_random_common.sh
│ ├── t/
│ │ ├── 1st.t
│ │ ├── api_basic.t
│ │ ├── api_histogram.t
│ │ ├── api_rand.t
│ │ ├── api_reports.t
│ │ ├── api_sql_mysql.t
│ │ ├── api_sql_pgsql.t
│ │ ├── cmd_cleanup.t
│ │ ├── cmd_help.t
│ │ ├── cmd_prepare.t
│ │ ├── cmd_run.t
│ │ ├── cmdline.t
│ │ ├── commands.t
│ │ ├── drivers.t
│ │ ├── drv_mysql.t
│ │ ├── drv_pgsql.t
│ │ ├── help_drv_mysql.t
│ │ ├── help_drv_pgsql.t
│ │ ├── opt_help.t
│ │ ├── opt_histogram.t
│ │ ├── opt_luajit_cmd.t
│ │ ├── opt_rate.t
│ │ ├── opt_report_checkpoints.t
│ │ ├── opt_report_interval.t
│ │ ├── opt_version.t
│ │ ├── opt_warmup_time.t
│ │ ├── script_bulk_insert_mysql.t
│ │ ├── script_bulk_insert_pgsql.t
│ │ ├── script_oltp_delete_mysql.t
│ │ ├── script_oltp_delete_pgsql.t
│ │ ├── script_oltp_general_mysql.t
│ │ ├── script_oltp_help.t
│ │ ├── script_oltp_insert_mysql.t
│ │ ├── script_oltp_insert_pgsql.t
│ │ ├── script_oltp_point_select_mysql.t
│ │ ├── script_oltp_point_select_pgsql.t
│ │ ├── script_oltp_read_write_mysql.t
│ │ ├── script_oltp_read_write_pgsql.t
│ │ ├── script_select_random_mysql.t
│ │ ├── script_select_random_pgsql.t
│ │ ├── test_cpu.t
│ │ ├── test_fileio.t
│ │ ├── test_memory.t
│ │ ├── test_mutex.t
│ │ ├── test_threads.t
│ │ └── tests.t
│ └── test_run.sh
└── third_party/
├── concurrency_kit/
│ ├── Makefile.am
│ └── ck/
│ ├── .gitignore
│ ├── LICENSE
│ ├── README
│ ├── build/
│ │ ├── ck.build.aarch64
│ │ ├── ck.build.arm
│ │ ├── ck.build.in
│ │ ├── ck.build.ppc
│ │ ├── ck.build.ppc64
│ │ ├── ck.build.s390x
│ │ ├── ck.build.sparcv9
│ │ ├── ck.build.x86
│ │ ├── ck.build.x86_64
│ │ ├── ck.pc.in
│ │ ├── ck.spec.in
│ │ └── regressions.build.in
│ ├── configure
│ ├── doc/
│ │ ├── CK_ARRAY_FOREACH
│ │ ├── CK_COHORT_INIT
│ │ ├── CK_COHORT_INSTANCE
│ │ ├── CK_COHORT_LOCK
│ │ ├── CK_COHORT_PROTOTYPE
│ │ ├── CK_COHORT_TRYLOCK
│ │ ├── CK_COHORT_TRYLOCK_PROTOTYPE
│ │ ├── CK_COHORT_UNLOCK
│ │ ├── CK_HS_HASH
│ │ ├── CK_RHS_HASH
│ │ ├── CK_RWCOHORT_INIT
│ │ ├── CK_RWCOHORT_INSTANCE
│ │ ├── CK_RWCOHORT_PROTOTYPE
│ │ ├── CK_RWCOHORT_READ_LOCK
│ │ ├── CK_RWCOHORT_READ_UNLOCK
│ │ ├── CK_RWCOHORT_WRITE_LOCK
│ │ ├── CK_RWCOHORT_WRITE_UNLOCK
│ │ ├── ck_array_buffer
│ │ ├── ck_array_commit
│ │ ├── ck_array_deinit
│ │ ├── ck_array_init
│ │ ├── ck_array_initialized
│ │ ├── ck_array_length
│ │ ├── ck_array_put
│ │ ├── ck_array_put_unique
│ │ ├── ck_array_remove
│ │ ├── ck_bitmap_base
│ │ ├── ck_bitmap_bits
│ │ ├── ck_bitmap_bts
│ │ ├── ck_bitmap_buffer
│ │ ├── ck_bitmap_clear
│ │ ├── ck_bitmap_init
│ │ ├── ck_bitmap_iterator_init
│ │ ├── ck_bitmap_next
│ │ ├── ck_bitmap_reset
│ │ ├── ck_bitmap_set
│ │ ├── ck_bitmap_size
│ │ ├── ck_bitmap_test
│ │ ├── ck_bitmap_union
│ │ ├── ck_brlock
│ │ ├── ck_cohort
│ │ ├── ck_elide
│ │ ├── ck_epoch_barrier
│ │ ├── ck_epoch_begin
│ │ ├── ck_epoch_call
│ │ ├── ck_epoch_end
│ │ ├── ck_epoch_init
│ │ ├── ck_epoch_poll
│ │ ├── ck_epoch_reclaim
│ │ ├── ck_epoch_recycle
│ │ ├── ck_epoch_register
│ │ ├── ck_epoch_synchronize
│ │ ├── ck_epoch_unregister
│ │ ├── ck_hs_apply
│ │ ├── ck_hs_count
│ │ ├── ck_hs_destroy
│ │ ├── ck_hs_fas
│ │ ├── ck_hs_gc
│ │ ├── ck_hs_get
│ │ ├── ck_hs_grow
│ │ ├── ck_hs_init
│ │ ├── ck_hs_iterator_init
│ │ ├── ck_hs_move
│ │ ├── ck_hs_next
│ │ ├── ck_hs_put
│ │ ├── ck_hs_put_unique
│ │ ├── ck_hs_rebuild
│ │ ├── ck_hs_remove
│ │ ├── ck_hs_reset
│ │ ├── ck_hs_reset_size
│ │ ├── ck_hs_set
│ │ ├── ck_hs_stat
│ │ ├── ck_ht_count
│ │ ├── ck_ht_destroy
│ │ ├── ck_ht_entry_empty
│ │ ├── ck_ht_entry_key
│ │ ├── ck_ht_entry_key_direct
│ │ ├── ck_ht_entry_key_length
│ │ ├── ck_ht_entry_key_set
│ │ ├── ck_ht_entry_key_set_direct
│ │ ├── ck_ht_entry_set
│ │ ├── ck_ht_entry_set_direct
│ │ ├── ck_ht_entry_value
│ │ ├── ck_ht_entry_value_direct
│ │ ├── ck_ht_gc
│ │ ├── ck_ht_get_spmc
│ │ ├── ck_ht_grow_spmc
│ │ ├── ck_ht_hash
│ │ ├── ck_ht_hash_direct
│ │ ├── ck_ht_init
│ │ ├── ck_ht_iterator_init
│ │ ├── ck_ht_next
│ │ ├── ck_ht_put_spmc
│ │ ├── ck_ht_remove_spmc
│ │ ├── ck_ht_reset_size_spmc
│ │ ├── ck_ht_reset_spmc
│ │ ├── ck_ht_set_spmc
│ │ ├── ck_ht_stat
│ │ ├── ck_pflock
│ │ ├── ck_pr
│ │ ├── ck_pr_add
│ │ ├── ck_pr_and
│ │ ├── ck_pr_barrier
│ │ ├── ck_pr_btc
│ │ ├── ck_pr_btr
│ │ ├── ck_pr_bts
│ │ ├── ck_pr_cas
│ │ ├── ck_pr_dec
│ │ ├── ck_pr_faa
│ │ ├── ck_pr_fas
│ │ ├── ck_pr_fence_acquire
│ │ ├── ck_pr_fence_atomic
│ │ ├── ck_pr_fence_atomic_load
│ │ ├── ck_pr_fence_atomic_store
│ │ ├── ck_pr_fence_load
│ │ ├── ck_pr_fence_load_atomic
│ │ ├── ck_pr_fence_load_depends
│ │ ├── ck_pr_fence_load_store
│ │ ├── ck_pr_fence_memory
│ │ ├── ck_pr_fence_release
│ │ ├── ck_pr_fence_store
│ │ ├── ck_pr_fence_store_atomic
│ │ ├── ck_pr_fence_store_load
│ │ ├── ck_pr_inc
│ │ ├── ck_pr_load
│ │ ├── ck_pr_neg
│ │ ├── ck_pr_not
│ │ ├── ck_pr_or
│ │ ├── ck_pr_rtm
│ │ ├── ck_pr_stall
│ │ ├── ck_pr_store
│ │ ├── ck_pr_sub
│ │ ├── ck_pr_xor
│ │ ├── ck_queue
│ │ ├── ck_rhs_apply
│ │ ├── ck_rhs_count
│ │ ├── ck_rhs_destroy
│ │ ├── ck_rhs_fas
│ │ ├── ck_rhs_gc
│ │ ├── ck_rhs_get
│ │ ├── ck_rhs_grow
│ │ ├── ck_rhs_init
│ │ ├── ck_rhs_iterator_init
│ │ ├── ck_rhs_move
│ │ ├── ck_rhs_next
│ │ ├── ck_rhs_put
│ │ ├── ck_rhs_put_unique
│ │ ├── ck_rhs_rebuild
│ │ ├── ck_rhs_remove
│ │ ├── ck_rhs_reset
│ │ ├── ck_rhs_reset_size
│ │ ├── ck_rhs_set
│ │ ├── ck_rhs_set_load_factor
│ │ ├── ck_rhs_stat
│ │ ├── ck_ring_capacity
│ │ ├── ck_ring_dequeue_spmc
│ │ ├── ck_ring_dequeue_spsc
│ │ ├── ck_ring_enqueue_spmc
│ │ ├── ck_ring_enqueue_spmc_size
│ │ ├── ck_ring_enqueue_spsc
│ │ ├── ck_ring_enqueue_spsc_size
│ │ ├── ck_ring_init
│ │ ├── ck_ring_size
│ │ ├── ck_ring_trydequeue_spmc
│ │ ├── ck_rwcohort
│ │ ├── ck_rwlock
│ │ ├── ck_sequence
│ │ ├── ck_spinlock
│ │ ├── ck_swlock
│ │ ├── ck_tflock
│ │ └── refcheck.pl
│ ├── include/
│ │ ├── ck_array.h
│ │ ├── ck_backoff.h
│ │ ├── ck_barrier.h
│ │ ├── ck_bitmap.h
│ │ ├── ck_brlock.h
│ │ ├── ck_bytelock.h
│ │ ├── ck_cc.h
│ │ ├── ck_cohort.h
│ │ ├── ck_elide.h
│ │ ├── ck_epoch.h
│ │ ├── ck_fifo.h
│ │ ├── ck_hp.h
│ │ ├── ck_hp_fifo.h
│ │ ├── ck_hp_stack.h
│ │ ├── ck_hs.h
│ │ ├── ck_ht.h
│ │ ├── ck_limits.h
│ │ ├── ck_malloc.h
│ │ ├── ck_md.h.in
│ │ ├── ck_pflock.h
│ │ ├── ck_pr.h
│ │ ├── ck_queue.h
│ │ ├── ck_rhs.h
│ │ ├── ck_ring.h
│ │ ├── ck_rwcohort.h
│ │ ├── ck_rwlock.h
│ │ ├── ck_sequence.h
│ │ ├── ck_spinlock.h
│ │ ├── ck_stack.h
│ │ ├── ck_stdbool.h
│ │ ├── ck_stddef.h
│ │ ├── ck_stdint.h
│ │ ├── ck_stdlib.h
│ │ ├── ck_string.h
│ │ ├── ck_swlock.h
│ │ ├── ck_tflock.h
│ │ ├── gcc/
│ │ │ ├── aarch64/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ ├── ck_pr.h
│ │ │ │ ├── ck_pr_llsc.h
│ │ │ │ └── ck_pr_lse.h
│ │ │ ├── arm/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ ├── ck_cc.h
│ │ │ ├── ck_f_pr.h
│ │ │ ├── ck_pr.h
│ │ │ ├── ppc/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ ├── ppc64/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ ├── s390x/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ ├── sparcv9/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ ├── x86/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ └── x86_64/
│ │ │ ├── ck_f_pr.h
│ │ │ ├── ck_pr.h
│ │ │ └── ck_pr_rtm.h
│ │ └── spinlock/
│ │ ├── anderson.h
│ │ ├── cas.h
│ │ ├── clh.h
│ │ ├── dec.h
│ │ ├── fas.h
│ │ ├── hclh.h
│ │ ├── mcs.h
│ │ └── ticket.h
│ ├── regressions/
│ │ ├── Makefile.unsupported
│ │ ├── ck_array/
│ │ │ └── validate/
│ │ │ └── serial.c
│ │ ├── ck_backoff/
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_barrier/
│ │ │ ├── benchmark/
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ ├── barrier_centralized.c
│ │ │ ├── barrier_combining.c
│ │ │ ├── barrier_dissemination.c
│ │ │ ├── barrier_mcs.c
│ │ │ └── barrier_tournament.c
│ │ ├── ck_bitmap/
│ │ │ └── validate/
│ │ │ └── serial.c
│ │ ├── ck_brlock/
│ │ │ ├── benchmark/
│ │ │ │ ├── latency.c
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_bytelock/
│ │ │ ├── benchmark/
│ │ │ │ └── latency.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_cohort/
│ │ │ ├── benchmark/
│ │ │ │ ├── ck_cohort.c
│ │ │ │ └── throughput.c
│ │ │ ├── ck_cohort.h
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_epoch/
│ │ │ └── validate/
│ │ │ ├── ck_epoch_call.c
│ │ │ ├── ck_epoch_poll.c
│ │ │ ├── ck_epoch_section.c
│ │ │ ├── ck_epoch_section_2.c
│ │ │ ├── ck_epoch_synchronize.c
│ │ │ ├── ck_stack.c
│ │ │ └── torture.c
│ │ ├── ck_fifo/
│ │ │ ├── benchmark/
│ │ │ │ └── latency.c
│ │ │ └── validate/
│ │ │ ├── ck_fifo_mpmc.c
│ │ │ ├── ck_fifo_mpmc_iterator.c
│ │ │ ├── ck_fifo_spsc.c
│ │ │ └── ck_fifo_spsc_iterator.c
│ │ ├── ck_hp/
│ │ │ ├── benchmark/
│ │ │ │ ├── fifo_latency.c
│ │ │ │ └── stack_latency.c
│ │ │ └── validate/
│ │ │ ├── ck_hp_fifo.c
│ │ │ ├── ck_hp_fifo_donner.c
│ │ │ ├── ck_hp_stack.c
│ │ │ ├── nbds_haz_test.c
│ │ │ └── serial.c
│ │ ├── ck_hs/
│ │ │ ├── benchmark/
│ │ │ │ ├── apply.c
│ │ │ │ ├── parallel_bytestring.c
│ │ │ │ └── serial.c
│ │ │ └── validate/
│ │ │ └── serial.c
│ │ ├── ck_ht/
│ │ │ ├── benchmark/
│ │ │ │ ├── parallel_bytestring.c
│ │ │ │ ├── parallel_direct.c
│ │ │ │ └── serial.c
│ │ │ └── validate/
│ │ │ └── serial.c
│ │ ├── ck_pflock/
│ │ │ ├── benchmark/
│ │ │ │ ├── latency.c
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_pr/
│ │ │ ├── benchmark/
│ │ │ │ ├── benchmark.h
│ │ │ │ ├── ck_pr_add_64.c
│ │ │ │ ├── ck_pr_cas_64.c
│ │ │ │ ├── ck_pr_cas_64_2.c
│ │ │ │ ├── ck_pr_faa_64.c
│ │ │ │ ├── ck_pr_fas_64.c
│ │ │ │ ├── ck_pr_neg_64.c
│ │ │ │ └── fp.c
│ │ │ └── validate/
│ │ │ ├── ck_pr_add.c
│ │ │ ├── ck_pr_and.c
│ │ │ ├── ck_pr_bin.c
│ │ │ ├── ck_pr_btc.c
│ │ │ ├── ck_pr_btr.c
│ │ │ ├── ck_pr_bts.c
│ │ │ ├── ck_pr_btx.c
│ │ │ ├── ck_pr_cas.c
│ │ │ ├── ck_pr_dec.c
│ │ │ ├── ck_pr_faa.c
│ │ │ ├── ck_pr_fas.c
│ │ │ ├── ck_pr_fax.c
│ │ │ ├── ck_pr_inc.c
│ │ │ ├── ck_pr_load.c
│ │ │ ├── ck_pr_n.c
│ │ │ ├── ck_pr_or.c
│ │ │ ├── ck_pr_store.c
│ │ │ ├── ck_pr_sub.c
│ │ │ ├── ck_pr_unary.c
│ │ │ └── ck_pr_xor.c
│ │ ├── ck_queue/
│ │ │ └── validate/
│ │ │ ├── ck_list.c
│ │ │ ├── ck_slist.c
│ │ │ └── ck_stailq.c
│ │ ├── ck_rhs/
│ │ │ ├── benchmark/
│ │ │ │ ├── parallel_bytestring.c
│ │ │ │ └── serial.c
│ │ │ └── validate/
│ │ │ └── serial.c
│ │ ├── ck_ring/
│ │ │ ├── benchmark/
│ │ │ │ └── latency.c
│ │ │ └── validate/
│ │ │ ├── ck_ring_mpmc.c
│ │ │ ├── ck_ring_mpmc_template.c
│ │ │ ├── ck_ring_spmc.c
│ │ │ ├── ck_ring_spmc_template.c
│ │ │ └── ck_ring_spsc.c
│ │ ├── ck_rwcohort/
│ │ │ ├── benchmark/
│ │ │ │ ├── ck_neutral.c
│ │ │ │ ├── ck_rp.c
│ │ │ │ ├── ck_wp.c
│ │ │ │ ├── latency.h
│ │ │ │ └── throughput.h
│ │ │ ├── ck_neutral.h
│ │ │ ├── ck_rp.h
│ │ │ ├── ck_wp.h
│ │ │ └── validate/
│ │ │ ├── ck_neutral.c
│ │ │ ├── ck_rp.c
│ │ │ ├── ck_wp.c
│ │ │ └── validate.h
│ │ ├── ck_rwlock/
│ │ │ ├── benchmark/
│ │ │ │ ├── latency.c
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_sequence/
│ │ │ ├── benchmark/
│ │ │ │ └── ck_sequence.c
│ │ │ └── validate/
│ │ │ └── ck_sequence.c
│ │ ├── ck_spinlock/
│ │ │ ├── benchmark/
│ │ │ │ ├── ck_anderson.c
│ │ │ │ ├── ck_cas.c
│ │ │ │ ├── ck_clh.c
│ │ │ │ ├── ck_dec.c
│ │ │ │ ├── ck_fas.c
│ │ │ │ ├── ck_hclh.c
│ │ │ │ ├── ck_mcs.c
│ │ │ │ ├── ck_spinlock.c
│ │ │ │ ├── ck_ticket.c
│ │ │ │ ├── ck_ticket_pb.c
│ │ │ │ ├── latency.h
│ │ │ │ ├── linux_spinlock.c
│ │ │ │ └── throughput.h
│ │ │ ├── ck_anderson.h
│ │ │ ├── ck_cas.h
│ │ │ ├── ck_clh.h
│ │ │ ├── ck_dec.h
│ │ │ ├── ck_fas.h
│ │ │ ├── ck_hclh.h
│ │ │ ├── ck_mcs.h
│ │ │ ├── ck_spinlock.h
│ │ │ ├── ck_ticket.h
│ │ │ ├── ck_ticket_pb.h
│ │ │ ├── linux_spinlock.h
│ │ │ └── validate/
│ │ │ ├── ck_anderson.c
│ │ │ ├── ck_cas.c
│ │ │ ├── ck_clh.c
│ │ │ ├── ck_dec.c
│ │ │ ├── ck_fas.c
│ │ │ ├── ck_hclh.c
│ │ │ ├── ck_mcs.c
│ │ │ ├── ck_spinlock.c
│ │ │ ├── ck_ticket.c
│ │ │ ├── ck_ticket_pb.c
│ │ │ ├── linux_spinlock.c
│ │ │ └── validate.h
│ │ ├── ck_stack/
│ │ │ ├── benchmark/
│ │ │ │ └── latency.c
│ │ │ └── validate/
│ │ │ ├── pair.c
│ │ │ ├── pop.c
│ │ │ ├── push.c
│ │ │ └── serial.c
│ │ ├── ck_swlock/
│ │ │ ├── benchmark/
│ │ │ │ ├── latency.c
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_tflock/
│ │ │ ├── benchmark/
│ │ │ │ ├── latency.c
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ └── common.h
│ ├── src/
│ │ ├── ck_array.c
│ │ ├── ck_barrier_centralized.c
│ │ ├── ck_barrier_combining.c
│ │ ├── ck_barrier_dissemination.c
│ │ ├── ck_barrier_mcs.c
│ │ ├── ck_barrier_tournament.c
│ │ ├── ck_epoch.c
│ │ ├── ck_hp.c
│ │ ├── ck_hs.c
│ │ ├── ck_ht.c
│ │ ├── ck_ht_hash.h
│ │ ├── ck_internal.h
│ │ └── ck_rhs.c
│ └── tools/
│ └── feature.sh
├── cram/
│ ├── .coveragerc
│ ├── .gitignore
│ ├── .hgignore
│ ├── .hgtags
│ ├── .pylintrc
│ ├── .travis.yml
│ ├── COPYING.txt
│ ├── MANIFEST.in
│ ├── NEWS.rst
│ ├── README.rst
│ ├── TODO.md
│ ├── contrib/
│ │ ├── PKGBUILD
│ │ └── cram.vim
│ ├── cram/
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ ├── _cli.py
│ │ ├── _diff.py
│ │ ├── _encoding.py
│ │ ├── _main.py
│ │ ├── _process.py
│ │ ├── _run.py
│ │ ├── _test.py
│ │ └── _xunit.py
│ ├── examples/
│ │ ├── .hidden/
│ │ │ └── hidden.t
│ │ ├── .hidden.t
│ │ ├── bare.t
│ │ ├── empty.t
│ │ ├── env.t
│ │ ├── fail.t
│ │ ├── missingeol.t
│ │ ├── skip.t
│ │ └── test.t
│ ├── requirements.txt
│ ├── scripts/
│ │ └── cram
│ ├── setup.cfg
│ ├── setup.py
│ └── tests/
│ ├── config.t
│ ├── debug.t
│ ├── dist.t
│ ├── doctest.t
│ ├── encoding.t
│ ├── interactive.t
│ ├── pep8.t
│ ├── pyflakes.t
│ ├── run-doctests.py
│ ├── setup.sh
│ ├── test.t
│ ├── usage.t
│ └── xunit.t
└── luajit/
├── Makefile.am
└── luajit/
├── .gitignore
├── COPYRIGHT
├── README
├── doc/
│ ├── bluequad-print.css
│ ├── bluequad.css
│ ├── contact.html
│ ├── ext_buffer.html
│ ├── ext_c_api.html
│ ├── ext_ffi.html
│ ├── ext_ffi_api.html
│ ├── ext_ffi_semantics.html
│ ├── ext_ffi_tutorial.html
│ ├── ext_jit.html
│ ├── ext_profiler.html
│ ├── extensions.html
│ ├── faq.html
│ ├── install.html
│ ├── luajit.html
│ ├── running.html
│ └── status.html
├── dynasm/
│ ├── dasm_arm.h
│ ├── dasm_arm.lua
│ ├── dasm_arm64.h
│ ├── dasm_arm64.lua
│ ├── dasm_mips.h
│ ├── dasm_mips.lua
│ ├── dasm_mips64.lua
│ ├── dasm_ppc.h
│ ├── dasm_ppc.lua
│ ├── dasm_proto.h
│ ├── dasm_x64.lua
│ ├── dasm_x86.h
│ ├── dasm_x86.lua
│ └── dynasm.lua
└── etc/
├── luajit.1
└── luajit.pc
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on: [push, pull_request]
jobs:
build:
strategy:
matrix:
os: [ ubuntu-22.04, ubuntu-20.04 ]
runs-on: ${{ matrix.os }}
name: Build on ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Autogen
run: ./autogen.sh
- name: Configure
run: ./configure --with-mysql --with-pgsql
- name: Build
run: make
- name: MySQL version
run: mysql_config --version
- name: Sysbench version
run: ./src/sysbench --version
- name: Test
run: make test
build_mariadb:
runs-on: ubuntu-22.04
name: Build with MariaDB
steps:
- name: Setup MariaDB Repo
run: |
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64] https://ftp.nluug.nl/db/mariadb/repo/11.0/ubuntu jammy main'
- name: Setup MariaDB Libs
run: sudo apt install libmariadb-dev libmariadb-dev-compat
- name: Checkout
uses: actions/checkout@v3
- name: Autogen
run: ./autogen.sh
- name: Configure
run: ./configure --with-mysql --with-pgsql
- name: Build
run: make
- name: MariaDB version
run: mariadb_config --version
- name: Sysbench version
run: ./src/sysbench --version
- name: Test
run: make test
================================================
FILE: .gitignore
================================================
*.o
*.a
Makefile
Makefile.in
aclocal.m4
autom4te.cache
/config/config.h
/config/ltmain.sh
/config/stamp-h1
/doc/manual.html
/config.log
/config.status
/configure
/libtool
/doc/xsl/catalog.xml
/src/.deps
/src/.libs
/src/sysbench
/src/drivers/mysql/.deps
/src/drivers/oracle/.deps
/src/drivers/pgsql/.deps
/src/tests/cpu/.deps
/src/tests/fileio/.deps
/src/tests/memory/.deps
/src/tests/mutex/.deps
/src/tests/oltp/.deps
/src/tests/threads/.deps
/TAGS
/backup.bzr
/config/config.guess
/config/config.h.in
/config/config.sub
/src/TAGS
/src/drivers/TAGS
/src/drivers/mysql/TAGS
/src/tests/TAGS
/src/tests/cpu/TAGS
/src/tests/fileio/TAGS
/src/tests/memory/TAGS
/src/tests/mutex/TAGS
/src/tests/oltp/TAGS
/src/tests/threads/TAGS
/config/compile
/config/depcomp
/config/install-sh
/config/missing
/m4/libtool.m4
/m4/ltoptions.m4
/m4/ltsugar.m4
/m4/ltversion.m4
/m4/lt~obsolete.m4
/src/drivers/drizzle/.deps
/src/scripting/.deps
/src/scripting/lua/src/.deps
GPATH
GRTAGS
GTAGS
/config/ar-lib
/src/drivers/attachsql/.deps/
/config/test-driver
*.DS_Store
/tests/*.log
/tests/*.trs
*.gcda
*.gcno
/tests/include/config.sh
/third_party/concurrency_kit/include/
/third_party/concurrency_kit/lib/
/third_party/concurrency_kit/share/
/third_party/concurrency_kit/tmp/
third_party/luajit/bin/
third_party/luajit/inc/
third_party/luajit/lib/
third_party/luajit/share/
third_party/luajit/tmp/
src/lua/internal/sysbench.lua.h
src/lua/internal/sysbench.sql.lua.h
/src/lua/internal/sysbench.rand.lua.h
/src/lua/internal/sysbench.opt.lua.h
tests/t/*.err
/src/lua/internal/sysbench.cmdline.lua.h
/src/lua/internal/sysbench.compat.lua.h
/src/lua/internal/sysbench.histogram.lua.h
parts
prime
stage
*.snap
/snap/snapcraft.yaml
================================================
FILE: .travis.yml
================================================
# vim ft=yaml
#
# Travis CI configuration
arch:
- amd64
- arm64
dist: trusty
sudo: required
services:
- docker
- mysql
- postgresql
git:
depth: 100500
language: c
os:
- linux
- osx
osx_image: xcode12.2
compiler:
- gcc
- clang
env:
matrix:
- TARGET=distcheck
- TARGET=test
- TARGET=coverage
- OS=el DIST=7
- OS=el DIST=8
- OS=fedora DIST=32
# Currently unsupported by packagecloud
# - OS=fedora DIST=33
- OS=ubuntu DIST=xenial
- OS=ubuntu DIST=bionic
- OS=ubuntu DIST=focal
- OS=ubuntu DIST=groovy
- OS=debian DIST=stretch
- OS=debian DIST=buster
- OS=debian DIST=sid
- OS=ubuntu DIST=xenial ARCH=i386
- OS=ubuntu DIST=bionic ARCH=i386
- OS=debian DIST=stretch ARCH=i386
- OS=debian DIST=buster ARCH=i386
- OS=debian DIST=sid ARCH=i386
matrix:
exclude:
- env: OS=el DIST=7
compiler: clang
- env: OS=el DIST=8
compiler: clang
- env: OS=fedora DIST=32
compiler: clang
- env: OS=fedora DIST=33
compiler: clang
- env: OS=ubuntu DIST=xenial
compiler: clang
- env: OS=ubuntu DIST=bionic
compiler: clang
- env: OS=ubuntu DIST=disco
compiler: clang
- env: OS=ubuntu DIST=focal
compiler: clang
- env: OS=ubuntu DIST=groovy
compiler: clang
- env: OS=debian DIST=stretch
compiler: clang
- env: OS=debian DIST=buster
compiler: clang
- env: OS=debian DIST=sid
compiler: clang
- env: OS=ubuntu DIST=xenial ARCH=i386
compiler: clang
- env: OS=ubuntu DIST=bionic ARCH=i386
compiler: clang
- env: OS=ubuntu DIST=disco ARCH=i386
compiler: clang
- env: OS=debian DIST=stretch ARCH=i386
compiler: clang
- env: OS=debian DIST=buster ARCH=i386
compiler: clang
- env: OS=debian DIST=sid ARCH=i386
compiler: clang
- env: OS=ubuntu DIST=xenial ARCH=i386
arch: arm64
- env: OS=ubuntu DIST=bionic ARCH=i386
arch: arm64
- env: OS=ubuntu DIST=disco ARCH=i386
arch: arm64
- env: OS=debian DIST=stretch ARCH=i386
arch: arm64
- env: OS=debian DIST=buster ARCH=i386
arch: arm64
- env: OS=debian DIST=sid ARCH=i386
arch: arm64
- env: OS=el DIST=7
os: osx
- env: OS=el DIST=8
os: osx
- env: OS=fedora DIST=32
os: osx
- env: OS=fedora DIST=33
os: osx
- env: OS=ubuntu DIST=xenial
os: osx
- env: OS=ubuntu DIST=bionic
os: osx
- env: OS=ubuntu DIST=disco
os: osx
- env: OS=ubuntu DIST=focal
os: osx
- env: OS=ubuntu DIST=groovy
os: osx
- env: OS=debian DIST=stretch
os: osx
- env: OS=debian DIST=buster
os: osx
- env: OS=debian DIST=sid
os: osx
- env: TARGET=distcheck
compiler: clang
- env: TARGET=distcheck
os: osx
- env: TARGET=distcheck
arch: arm64
- env: TARGET=coverage
os: osx
- env: TARGET=coverage
compiler: clang
- env: TARGET=coverage
arch: arm64
- os: osx
compiler: gcc
- os: osx
arch: arm64
- arch: arm64
compiler: clang
addons:
apt:
packages:
- libmysqlclient-dev
- libpq-dev
- libaio-dev
- clang-3.6
before_install:
# Upload builds corresponding to release tags to the 'sysbench'
# repository, push other ones to 'sysbench-prereleases'
- git describe --long --always
- commits=$(git describe --long --always | sed -n 's/^\([0-9\.]*\)-\([0-9]*\)-\([a-z0-9]*\)/\2/p')
- >
if [ ${commits:-0} = 0 ]; then
export VERSION=$(git describe)
PACKAGECLOUD_REPO=sysbench
else
PACKAGECLOUD_REPO=sysbench-prereleases
fi
- >
if [ "x$TARGET" = "xtest" ]; then
case "${TRAVIS_OS_NAME:-linux}" in
osx)
brew update
brew install mysql postgresql
# OS X requires servers to be started explicitly
brew services start mysql
cat /usr/local/var/mysql/*.err
lsof -c mysql
brew postgresql-upgrade-database
brew services start postgresql
echo "Starting PostgreSQL"
pg_ctl -wD /usr/local/var/postgres start
echo "Creating user postgres"
createuser -s postgres
;;
linux)
export ASAN_OPTIONS="detect_leaks=0"
if [ "${CC}" = "clang" ]; then
CC=clang-3.6
fi
;;
esac
fi
install:
- >
case "${TRAVIS_OS_NAME:-linux}" in
osx)
# OS X requires this for user-local pip packages
export PATH=~/Library/Python/2.7/bin:$PATH
;;
linux)
pip install --user cpp-coveralls
;;
esac
before_script:
- mysql -u root -e 'CREATE DATABASE sbtest'
- psql -U postgres -c 'CREATE DATABASE sbtest'
script:
- >
if [ -n "$TARGET" ]; then
case "$TARGET" in
test)
./autogen.sh && ./configure --with-mysql --with-pgsql
make
SBTEST_MYSQL_ARGS="--mysql-user=root" SBTEST_PGSQL_ARGS="--pgsql-user=postgres" make test
;;
distcheck)
./autogen.sh && ./configure --without-mysql
make
make distcheck
;;
coverage)
./autogen.sh && ./configure --enable-coverage --enable-asan --enable-msan --with-mysql --with-pgsql
make -j2
SBTEST_MYSQL_ARGS="--mysql-user=root" SBTEST_PGSQL_ARGS="--pgsql-user=postgres" make test
;;
esac
else
# To avoid name conflicts, deploy source packages only for
# "default", i.e. x86_64 architecture
if [[ -z "$ARCH" && "$TRAVIS_CPU_ARCH" == amd64 ]]; then
PACKAGECLOUD_GLOB='build/*.{rpm,deb,dsc}'
else
# Exclude *.src.rpm and *.dsc
PACKAGECLOUD_GLOB='build/*{[^c].rpm,.deb}'
fi
git clone https://github.com/akopytov/packpack.git packpack
packpack/packpack
fi
deploy:
# Deploy packages to PackageCloud
- provider: packagecloud
username: "${PACKAGECLOUD_USER}"
repository: "${PACKAGECLOUD_REPO}"
token: "${PACKAGECLOUD_TOKEN}"
dist: "${OS}/${DIST}"
package_glob: "${PACKAGECLOUD_GLOB}"
skip_cleanup: true
on:
all_branches: true
condition: -n "$OS" && -n "$DIST" && -n "$PACKAGECLOUD_TOKEN" && "$DIST" != "rawhide" && "$DIST" != "sid"
after_success:
- >
if [ "x$TARGET" = "xcoverage" ]; then
coveralls --exclude third_party/ --gcov-options '\-lp'
fi
# Local variables:
# mode: yaml
# End:
================================================
FILE: COPYING
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
================================================
FILE: ChangeLog
================================================
2020-04-24 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.20
* build/CI/packaging: Add arm64 to Travis CI matrix (#358)
* build/CI/packaging: add Ubuntu Focal
* build/CI/packaging: remove Fedora Rawhide from CI matrix
* build/CI/packaging: fix regression tests to work with MySQL 8.0.19+
* build/CI/packaging: fix macOS builds in Travis
* build/CI/packaging: remove Ubuntu Disco (EOL)
2019-12-08 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.19
* build/CI/packaging: fix Ubuntu packaging for Bionic and later versions
* regression tests: compatibility fix for PostgreSQL 12
* build/CI/packaging: fix macOs builds in Travis
* build/CI/packaging: add Fedora 31.
2019-10-21 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.18
* build/CI/packaging: add Ubuntu Eoan.
* build/CI/packaging: remove Ubuntu Cosmic (EOL).
* build/CI/packaging: add CentOS 8.
* build/CI/packaging: add Ubuntu Disco.
* build/CI/packaging: remove Ubuntu Trusty (EOL).
* build/CI/packaging: remove Fedora 28 (EOL).
* build/CI/packaging: add Fedora 30.
* build/CI/packaging: cherry-pick fix for LuaJIT/LuaJIT#484 to
fix builds on macOS Mojave.
* build/CI/packaging: add Debian Buster
2019-03-15 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.17
* build/CI/packaging: update RPM spec to support RHEL8-beta
(thanks to Alexey Bychko for the patch)
* regression tests: remove unnecessary error leading to opt_rate.t instability.
* --rate mode: return a non-zero exit code on event queue
overflow.
* --rate mode: fix a bogus error about eventgen thread termination
2018-12-16 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.16
* build/CI/packaging: add Ubuntu Cosmic.
* build/CI/packaging: add Fedora 29.
* build/CI/packaging: remove Fedora 27 (EOL).
* SQL API: fix GH-282 (Mysql's fetch_row() is broken)
* --rate mode: fix latency stats skew on low rates
* Lua: Add /usr/share/lua/5.1 to LUA_PATH and /usr/lib/lua/5.1
to LUA_CPATH.
* build/CI/packaging: add -Wvla to default compiler flags.
* build/CI/packaging: fix debian/changelog format
* build/CI/packaging: fix buildpack.sh to not push multiple file
types to packagecloud.
* build/CI/packaging: add libaio-dev to Debian/Ubuntu build
dependencies.
2018-07-03 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.15
* CI/build/packaging: add Fedora 28
* CI/build/packaging: add Ubuntu Bionic
* CI/build/packaging: remove Fedora 26 (EOL)
* CI/build/packaging: remove Debian Wheezy (EOL)
* fileio: fix GH-229 (--file-fsync-freq=0 seems to prevent
fsync() at the end of the test)
* command line: improve parsing of boolean command line options
* tests: fix GH-220 (Testsuite api_sql_mysql.t failed ...)
* tests: fix GH-223 (test failure on ppc64)
* tests: fix opt_help.t to pass when the binary is not
configured with MySQL support
* MySQL driver: use it by default in DB benchmarks
2018-04-01 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.14
* reports: fix JSON stats reporter to produce valid JSON
(GH-195)
* Lua SQL API: don't crash when query_row() is called with a
SELECT returning empty result set
* Lua SQL API: don't crash when bulk insert API calls are used
out of order
* regression tests: make PostgreSQL tests compatible with the
new dump format introduced in 10.3
* regression tests: minor stability and coverage improvements
2018-02-17 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.13
* remove Ubuntu Zesty from CI/build/packaging matrices (EOL)
* minor cleanups in build scripts
* improve report formatting for long latency values
* fileio: --file-extra-flags now accepts a list of flags rather
than just a single value
* OLTP: re-prepare prepared statements after reconnects, i.e. in
cases when a server connection is lost and sysbench is
configured to ignore such errors
2018-01-17 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.12
* improve --rate mode precision for high argument values
* add Fedora Rawhide and Debian Sid to CI matrix
* fix compile-time architecture detection for some Broadwell
CPUs which were incorrectly identified as Core 2.
* remove build dependency on xxd (and vim-minimal package)
* fix Lua API to correctly stop the benchmark when event()
returns a value other than nil or false (thanks to caojiafeng
for the patch)
* fix the fileio benchmark when the specified file size is not a
multiple of block size
* fix the fileio benchmark to throw a descriptive error when the
specified file size does not match the size of files created by
'prepare'
* remove Fedora 25 from CI/build/packaging matrices (EOL)
* minor improvements in tests and documentation.
2017-12-09 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.11
* add Debian Stretch to CI/build/packaging matrices
* add Fedora 27 to CI/build/packaging matrices
* make statistic counters usable from Lua scripts
* fix the PostgreSQL driver to be compatible with CockroachDB
(GH-180)
* fix oltp_insert.lua to work correctly when both --tables and
--threads are greater than 1 (GH-178)
* fix FreeBSD builds by adding -rdynamic to the default linker
flags (GH-174)
* minor documentation updates
2017-10-25 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.10
* fixed PK conflicts in oltp_insert.lua by creating empty tables
on 'prepare'
* made sysbench.opt available to init()/done() by exporting it
to the global Lua state
* added Fedora 26 (both x86_64 and AArch64) to the list of
supported and tested distributions
* fixed GH-172: sysbench 1.0.9 doesn't build with mariadb 10.2.8
* add the /usr/local LuaRocks root directory to default LUA_PATH
and LUA_CPATH
* removed Fedora 24, Ubuntu Precise, Yakkety from default build
matrices
* added Ubuntu Artful to default build matrices
2017-09-05 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.9
* fixed oltp_delete.lua to not use INSERT statements for
consistency with other oltp_* benchmarks (GH-168)
* added a workaround for MySQL bug #87337 "8.0.2 reintroduces
my_bool to client API"
* fixed building on on Debian GNU/kFreeBSD (GH-161)
* fixed building against MariaDB 10.2 (thanks to Xavier Bachelot
for the patch, GH-160)
2017-07-04 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.8
* fixed api_report test for slow machines (thanks to @jcfp)
* fileio: suggest to run prepare step on missing files (thanks
to Heinrich Schuchardt)
* JSON reports: removed an erroneous trailing comma (GH-139)
* added events per second to the CPU benchmark report (GH-140)
* fixed db_connect() in legacy SQL API to use the default value
for --db-driver (GH-146)
* removed busy-wait in the bounded event generation mode
(--rate) to avoid CPU hogging
2017-05-15 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.7
* Ubuntu Zesty added to package build matrix
* fixed GH-130: Mutex Benchmark Documentation
* fixed latency reports in the --rate mode
* fixed compiler warnings when building against MySQL 8.0 client
libraries
2017-04-13 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.6
* no functional changes
* many build- and packaging-related improvements
* Linux packages are now automatically built using Travis CI and
packpack, hosted by packagecloud.io
2017-04-02 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.5
* various build-related documentation updates
* benchmark can now be specified by a module name on the command
line
* memory benchmark: performance and scalability improvements
* fix ARMv6 builds with system ConcurrencyKit
* fix GH-123: Table already exists error on prepare
* fix GH-121: make buildhost cpudetection optional
2017-03-13 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.4
* fixed a number of compilation errors and warnings that were
specific to 32-bit platforms
* bundle cram (regression tests framework) and use it by default
in 'make test'
* bundled ConcurrencyKit updated to 0.6.0
2017-02-26 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.3
* LuaJIT scalability improvements for non-x86 architectures
* performance optimizations in oltp_read_write.lua to avoid Lua
string management
* fixed Illumos builds (thanks to Dillon Amburgey)
2017-02-17 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.2
* improved scalability for --report-checkpoints mode
* fix builds on CentoOS 6 and autoconf 2.63
* support for Snap (http://snapcraft.io) packages
2017-02-05 Alexey Kopytov <akopytov@gmail.com>
* version 1.0.1
* fix clock_gettime runtime failure built with macOS 10.11 and
Xcode 8.x
2017-02-04 Aleksei Kopytov <akopytov@gmail.com>
* version 1.0.0
* too much time and too many changes since the previous formal
release, so briefly:
* Lua scripts instead of hard-coded C tests for database
("oltp") benchmarks + ability to create custom workloads
* much better single-threaded performance
* much better scalability
* improvements and cleanups in command line syntax and options
* latency histograms in cumulative statistic reports
* report hooks to print statistics in custom formats
(CSV/JSON/XML/etc.)
* Dropped Windows support
* Dropped support for Oracle, Drizzle and libattachsql drivers
2006-10-10 Alexey Kopytov <alexeyk@mysql.com>
* Removed the debugging code in OLTP test which got into 0.4.7 by mistake
* Handle ER_CHECKREAD in the same way as deadlocks in the MySQL driver
* version 0.4.8
2006-05-28 Alexey Kopytov <alexeyk@mysql.com>
* count fsync() time as request execution time in file-fsync-all mode
2006-05-24 Alexey Kopytov <alexeyk@mysql.com>
* Added --oltp-reconnect option
2006-05-18 Alexey Kopytov <alexeyk@mysql.com>
* Allow build with non-gcc compilers
* Fixed random numbers generation on Solaris
* Added --mysql-ssl option
* version 0.4.7
2006-04-03 Alexey Kopytov <alexeyk@mysql.com>
* Added a warning for inaccurate gettimeofday() implementations
* version 0.4.6
2006-03-10 Alexey Kopytov <alexeyk@mysql.com>
* Fixed crash at the end of OLTP test
2006-03-03 Alexey Kopytov <alexeyk@mysql.com>
* Made auto_increment id column optional
* Use TYPE= or ENGINE= in MySQL driver depending on the version of client libraries
2006-01-17 Alexey Kopytov <alexeyk@mysql.com>
* version 0.4.5
* Added several hosts capability to MySQL driver
* Fixed several memory leaks in OLTP test
2005-12-14 Alexey Kopytov <alexeyk@mysql.com>
* Renamed option 'mysql-table-type' to 'mysql-table-engine'
* It's now possible to pass arbitrary engine names to MySQL driver
* Transactions support must be explicitly specified with
'mysql-engine-trx' option for those engines, which are unknown to SysBench
2005-09-27 Alexey Kopytov <alexeyk@mysql.com>
* Changed 'thread fairness' calculation from percents to stddev
* Added validation mode to OLTP test (--validate switch)
* Remove auto_increment from the 'id' field before running OLTP tests
* Print separate time for query execution and result fetching in --debug mode
* version 0.4.3
2005-07-25 Alexey Kopytov <alexeyk@mysql.com>
* Minor cleanups in help messages
* Several FreeBSD-related fixes
* Fixed the Oracle driver
* Version 0.4.1
2005-03-04 Alexey Kopytov <alexeyk@mysql.com>
* Fixed a lot of small bugs, including portability issues on Mac OS X,
64-bit platforms and old MySQL versions
* Documentation added to the main tree
* New validation mode in fileio test
2005-01-27 Alexey Kopytov <alexeyk@mysql.com>
* Fixed compilation on Solaris
* Added call to thr_setconcurrency() on Solaris
* Fixed an overflow bug in sb_timer_current()
* Changed the default number of threads to 1
* Added non-transactional mode to the OLTP test
* Fixed bug with excessive number of connections in OLTP test
* Handle ER_LOCK_WAIT_TIMEOUT in the same way as ER_LOCK_DEADLOCK
* Version 0.3.2
2004-07-27 Alexey Kopytov <alexeyk@mysql.com>
* Fixed MySQL driver to use new PS API in MySQL >= 4.1.2
2004-07-12 Alexey Kopytov <alexeyk@mysql.com>
* Fixed final fsync in random I/O requests
* Fixed several race conditions
2004-07-09 Alexey Kopytov <alexeyk@mysql.com>
* Removed --oltp-time-limit option (obsoleted by --max-time)
2004-07-06 Alexey Kopytov <alexeyk@mysql.com>
* Changed statistics output to more human-readable format
2004-07-04 Alexey Kopytov <alexeyk@mysql.com>
* Added new logger interface to internal API
* Modified all tests to use the new logger interface
2004-06-17 Alexey Kopytov <alexeyk@mysql.com>
* Fixed table type autodetection with MySQL >= 4.1
2004-06-06 Alexey Kopytov <alexeyk@mysql.com>
* Added preliminary support of prepared statements to DB API
2004-05-31 Alexey Kopytov <alexeyk@mysql.com>
* Added slow-mmap mode for 32-bit boxes in fileio test
2004-05-30 Alexey Kopytov <alexeyk@mysql.com>
* Fixed compilation with gcc >= 3.3
* Fixed 'prepare' command for sequential write test
2004-05-26 Alexey Kopytov <alexeyk@mysql.com>
* Changed formatting of file sizes in output
* Fixed type cast warning on SuSE 8.1
2004-05-21 Alexey Kopytov <alexeyk@mysql.com>
* Added mutex performance benchmark
2004-05-12 Alexey Kopytov <alexeyk@mysql.com>
* Extended memory benchmark to calculate more useful results
2004-05-10 Alexey Kopytov <alexeyk@mysql.com>
* Split test file creation, test running and cleaning up into separate
commands (prepare, run, cleanup) for fileio test
2004-05-05 Alexey Kopytov <alexeyk@mysql.com>
* Removed limit on maximum block size for fileio test
2004-05-04 Alexey Kopytov <alexeyk@mysql.com>
* added --max-time option to limit total test execution time
2004-05-03 Alexey Kopytov <alexeyk@mysql.com>
* Fixed compilation with --without-mysql option.
2004-04-13 Alexey Kopytov <alexeyk@mysql.com>
* Added mmaped I/O support to fileio test
2004-04-11 Alexey Kopytov <alexeyk@mysql.com>
* Changed default table size to a lower value in OLTP test
2004-04-07 Alexey Kopytov <alexeyk@mysql.com>
* Added automatic table type detection to MySQL driver
* Changed the default table type for MySQL driver to InnoDB
* Added support for BDB and NDB table types
2004-04-06 Alexey Kopytov <alexeyk@mysql.com>
* Added autoconf macro to handle older (incompatible) version of
libaio.h
2004-04-05 Alexey Kopytov <alexeyk@mysql.com>
* Fixed compilation on 64-bit systems
* Replaced Linux AIO calls with more portable equivalents
2004-04-04 Alexey Kopytov <alexeyk@mysql.com>
* Added parameter to specify maximum number of queued operations
in fileio async mode (file-async-backlog)
* Added parameter to specify extra open() flags (file-extra-flags)
* Fixed memory allocation bug in command line parser
2004-04-02 Alexey Kopytov <alexeyk@mysql.com>
* Added Linux asynchronous I/O support to fileio test
* Fixed bug with statistic counters
2004-04-01 Alexey Kopytov <alexeyk@mysql.com>
* Added test file creation to fileio test
* Added read-only mode to OLTP test
2004-03-31 Alexey Kopytov <alexeyk@mysql.com>
* Close database connections in OLTP test
* Added file-fsync-all mode for fileio test
2004-03-30 Alexey Kopytov <alexeyk@mysql.com>
* Added myisam-max-rows option for MySQL driver
* Fixed configure.ac for cases when no MySQL libraries found
2004-03-10 Alexey Kopytov <alexeyk@mysql.com>
* Implement proper handling of table locks in OLTP test
2004-03-09 Alexey Kopytov <alexeyk@mysql.com>
* Recognize MySQL table type when creating test database
* Fix driver-specific options
* Now it's possible to pass MySQL root directory in --with-mysql option
* Trim trailing '.libs' if user passed it in --with-mysql-libs option
to configure
2004-03-08 Alexey Kopytov <alexeyk@mysql.com>
* Build drivers and tests as separate libraries (first step to
dynamically loaded modules)
* Display help when required arguments are missing in fileio test
* Changed code formatting to match MySQL coding guidelines
2004-03-04 Alexey Kopytov <alexeyk@mysql.com>
* Generalized DB-dependent code
* Added 'database capabilities' feature
2004-02-28 Alexey Kopytov <alexeyk@mysql.com>
* Fixed possible memory leak in sql request generator
2004-03-27 Alexey Kopytov <alexeyk@mysql.com>
* Split OLTP code into DB-independent part and MySQL driver
2004-02-23 Alexey Kopytov <alexeyk@mysql.com>
* Use libtool for linking with external libraries
* Statically link external libraries when they are not installed
2004-02-19 Alexey Kopytov <alexeyk@mysql.com>
* Print more info when configure finds no MySQL development files
* Added --with-mysql-includes and --with-mysql-libs to configure
* Fixed compilation error when compiling without MySQL support
* Combine several inserts into one query to speed up database creation
================================================
FILE: Dockerfile
================================================
FROM ubuntu:xenial
RUN apt-get update
RUN apt-get -y install make automake libtool pkg-config libaio-dev git
# For MySQL support
RUN apt-get -y install libmysqlclient-dev libssl-dev
# For PostgreSQL support
RUN apt-get -y install libpq-dev
RUN git clone https://github.com/akopytov/sysbench.git sysbench
WORKDIR sysbench
RUN ./autogen.sh
RUN ./configure --with-mysql --with-pgsql
RUN make -j
RUN make install
WORKDIR /root
RUN rm -rf sysbench
ENTRYPOINT sysbench
================================================
FILE: Makefile.am
================================================
# Copyright (C) 2004 MySQL AB
# Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
ACLOCAL_AMFLAGS = -I m4
AM_DISTCHECK_CONFIGURE_FLAGS = --without-mysql
if USE_BUNDLED_LUAJIT
LUAJIT_DIR = third_party/luajit
endif
if USE_BUNDLED_CK
CK_DIR = third_party/concurrency_kit
endif
SUBDIRS = $(LUAJIT_DIR) $(CK_DIR) src tests
EXTRA_DIST = autogen.sh README.md ChangeLog \
snap/snapcraft.yaml.in third_party/cram \
debian/changelog debian/compat debian/control debian/copyright \
debian/dirs debian/docs debian/install debian/rules \
debian/source/format \
rpm/sysbench.spec \
scripts/buildpack.sh
dist-hook:
$(MAKE) -C $(distdir)/third_party/cram clean
test:
cd tests && $(MAKE) test
clean-local:
$(MAKE) -C $(top_srcdir)/third_party/cram clean
================================================
FILE: README.md
================================================
[![Latest Release][release-badge]][release-url]
[![Build Status][action-badge]][action-url]
[![Debian Packages][deb-badge]][deb-url]
[![RPM Packages][rpm-badge]][rpm-url]
[![Coverage Status][coveralls-badge]][coveralls-url]
[![License][license-badge]][license-url]
<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-generate-toc again -->
**Table of Contents**
- [sysbench](#sysbench)
- [Features](#features)
- [Installing from Binary Packages](#installing-from-binary-packages)
- [Linux](#linux)
- [macOS](#macos)
- [Windows](#windows)
- [Building and Installing From Source](#building-and-installing-from-source)
- [Build Requirements](#build-requirements)
- [Windows](#windows)
- [Debian/Ubuntu](#debianubuntu)
- [RHEL/CentOS](#rhelcentos)
- [Fedora](#fedora)
- [macOS](#macos)
- [Build and Install](#build-and-install)
- [Usage](#usage)
- [General Syntax](#general-syntax)
- [General Command Line Options](#general-command-line-options)
- [Random Numbers Options](#random-numbers-options)
- [Versioning](#versioning)
<!-- markdown-toc end -->
# sysbench
sysbench is a scriptable multi-threaded benchmark tool based on
LuaJIT. It is most frequently used for database benchmarks, but can also
be used to create arbitrarily complex workloads that do not involve a
database server.
sysbench comes with the following bundled benchmarks:
- `oltp_*.lua`: a collection of OLTP-like database benchmarks
- `fileio`: a filesystem-level benchmark
- `cpu`: a simple CPU benchmark
- `memory`: a memory access benchmark
- `threads`: a thread-based scheduler benchmark
- `mutex`: a POSIX mutex benchmark
## Features
- extensive statistics about rate and latency is available, including
latency percentiles and histograms;
- low overhead even with thousands of concurrent threads. sysbench is
capable of generating and tracking hundreds of millions of events per
second;
- new benchmarks can be easily created by implementing pre-defined hooks
in user-provided Lua scripts;
- can be used as a general-purpose Lua interpreter as well, simply
replace `#!/usr/bin/lua` with `#!/usr/bin/sysbench` in your script.
# Installing from Binary Packages
## Linux
The easiest way to download and install sysbench on Linux is using
binary package repositories hosted by
[packagecloud](https://packagecloud.io). The repositories are
automatically updated on each sysbench release. Currently x86_64, i386
and aarch64 binaries are available.
Multiple methods to download and install sysbench packages are available and
described at <https://packagecloud.io/akopytov/sysbench/install>.
Quick install instructions:
- Debian/Ubuntu
``` shell
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
sudo apt -y install sysbench
```
- RHEL/CentOS:
``` shell
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench
```
- Fedora:
``` shell
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo dnf -y install sysbench
```
- Arch Linux:
``` shell
sudo pacman -Suy sysbench
```
## macOS
On macOS, up-to-date sysbench packages are available from Homebrew:
```shell
# Add --with-postgresql if you need PostgreSQL support
brew install sysbench
```
## Windows
As of sysbench 1.0 support for native Windows builds was dropped. It may
be re-introduced in later releases. Currently, the recommended way to
obtain sysbench on Windows is
using
[Windows Subsystem for Linux available in Windows 10](https://msdn.microsoft.com/en-us/commandline/wsl/about).
After installing WSL and getting into he bash prompt on Windows
following Debian/Ubuntu installation instructions is
sufficient. Alternatively, one can use WSL to build and install sysbench
from source, or use an older sysbench release to build a native binary.
# Building and Installing From Source
It is recommended to install sysbench from the official binary
packages as described in
[Installing from Binary Packages](#installing-from-binary-packages). Below
are instruction for cases when you want to use sysbench on an
architecture for which no binary packages are available.
## Build Requirements
### Windows
As of sysbench 1.0 support for native Windows builds was
dropped. It may be re-introduced in later versions. Currently, the
recommended way to build sysbench on Windows is using
[Windows Subsystem for Linux available in Windows 10](https://msdn.microsoft.com/en-us/commandline/wsl/about).
After installing WSL and getting into bash prompt on Windows, following
Debian/Ubuntu build instructions is sufficient. Alternatively, one can
build and use an older 0.5 release on Windows.
### Debian/Ubuntu
``` shell
apt -y install make automake libtool pkg-config libaio-dev
# For MySQL support
apt -y install libmysqlclient-dev libssl-dev
# For PostgreSQL support
apt -y install libpq-dev
```
### RHEL/CentOS
``` shell
yum -y install make automake libtool pkgconfig libaio-devel
# For MySQL support, replace with mysql-devel on RHEL/CentOS 5
yum -y install mariadb-devel openssl-devel
# For PostgreSQL support
yum -y install postgresql-devel
```
### Fedora
``` shell
dnf -y install make automake libtool pkgconfig libaio-devel
# For MySQL support
dnf -y install mariadb-devel openssl-devel
# For PostgreSQL support
dnf -y install postgresql-devel
```
### macOS
Assuming you have Xcode (or Xcode Command Line Tools) and Homebrew installed:
``` shell
brew install automake libtool openssl pkg-config
# For MySQL support
brew install mysql
# For PostgreSQL support
brew install postgresql
# openssl is not linked by Homebrew, this is to avoid "ld: library not found for -lssl"
export LDFLAGS=-L/usr/local/opt/openssl/lib
```
## Build and Install
``` shell
./autogen.sh
# Add --with-pgsql to build with PostgreSQL support
./configure
make -j
make install
```
The above will build sysbench with MySQL support by default. If you have
MySQL headers and libraries in non-standard locations (and no
`mysql_config` can be found in the `PATH`), you can specify them
explicitly with `--with-mysql-includes` and `--with-mysql-libs` options
to `./configure`.
To compile sysbench without MySQL support, use `--without-mysql`. If no
database drivers are available database-related scripts will not work,
but other benchmarks will be functional.
# Usage
## General Syntax
The general command line syntax for sysbench is:
sysbench [options]... [testname] [command]
- *testname* is an optional name of a built-in test (e.g. `fileio`,
`memory`, `cpu`, etc.), or a name of one of the bundled Lua scripts
(e.g. `oltp_read_only`), or a *path* to a custom Lua script. If no
test name is specified on the command line (and thus, there is no
*command* too, as in that case it would be parsed as a *testname*), or
the test name is a dash ("`-`"), then sysbench expects a Lua script to
execute on its standard input.
- *command* is an optional argument that will be passed by sysbench to
the built-in test or script specified with *testname*. *command*
defines the *action* that must be performed by the test. The list of
available commands depends on a particular test. Some tests also
implement their own custom commands.
Below is a description of typical test commands and their purpose:
+ `prepare`: performs preparative actions for those tests which need
them, e.g. creating the necessary files on disk for the `fileio`
test, or filling the test database for database benchmarks.
+ `run`: runs the actual test specified with the *testname*
argument. This command is provided by all tests.
+ `cleanup`: removes temporary data after the test run in those
tests which create one.
+ `help`: displays usage information for the test specified with the
*testname* argument. This includes the full list of commands
provided by the test, so it should be used to get the available
commands.
- *options* is a list of zero or more command line options starting with
`'--'`. As with commands, the `sysbench testname help` command
should be used to describe available options provided by a
particular test.
See [General command line options](README.md#general-command-line-options)
for a description of general options provided by sysbench itself.
You can use `sysbench --help` to display the general command line syntax
and options.
## General Command Line Options
The table below lists the supported common options, their descriptions and default values:
*Option* | *Description* | *Default value*
----------------------|---------------|----------------
| `--threads` | The total number of worker threads to create | 1 |
| `--events` | Limit for total number of requests. 0 (the default) means no limit | 0 |
| `--time` | Limit for total execution time in seconds. 0 means no limit | 10 |
| `--warmup-time` | Execute events for this many seconds with statistics disabled before the actual benchmark run with statistics enabled. This is useful when you want to exclude the initial period of a benchmark run from statistics. In many benchmarks, the initial period is not representative because CPU/database/page and other caches need some time to warm up | 0 |
| `--rate` | Average transactions rate. The number specifies how many events (transactions) per seconds should be executed by all threads on average. 0 (default) means unlimited rate, i.e. events are executed as fast as possible | 0 |
| `--thread-init-timeout` | Wait time in seconds for worker threads to initialize | 30 |
| `--thread-stack-size` | Size of stack for each thread | 32K |
| `--report-interval` | Periodically report intermediate statistics with a specified interval in seconds. Note that statistics produced by this option is per-interval rather than cumulative. 0 disables intermediate reports | 0 |
| `--debug` | Print more debug info | off |
| `--validate` | Perform validation of test results where possible | off |
| `--help` | Print help on general syntax or on a specified test, and exit | off |
| `--verbosity` | Verbosity level (0 - only critical messages, 5 - debug) | 4 |
| `--percentile` | sysbench measures execution times for all processed requests to display statistical information like minimal, average and maximum execution time. For most benchmarks it is also useful to know a request execution time value matching some percentile (e.g. 95% percentile means we should drop 5% of the most long requests and choose the maximal value from the remaining ones). This option allows to specify a percentile rank of query execution times to count | 95 |
| `--luajit-cmd` | perform a LuaJIT control command. This option is equivalent to `luajit -j`. See [LuaJIT documentation](http://luajit.org/running.html#opt_j) for more information | |
Note that numerical values for all *size* options (like `--thread-stack-size` in this table) may be specified by appending the corresponding multiplicative suffix (K for kilobytes, M for megabytes, G for gigabytes and T for terabytes).
## Random Numbers Options
sysbench provides a number of algorithms to generate random numbers that are distributed according to a given probability distribution. The table below lists options that can be used to control those algorithms.
*Option* | *Description* | *Default value*
----------------------|---------------|----------------
`--rand-type` | random numbers distribution {uniform, gaussian, special, pareto, zipfian} to use by default. Benchmark scripts may choose to use either the default distribution, or specify it explictly, i.e. override the default. | special
`--rand-seed` | seed for random number generator. When 0, the current time is used as an RNG seed. | 0
`--rand-spec-iter` | number of iterations for the special distribution | 12
`--rand-spec-pct` | percentage of the entire range where 'special' values will fall in the special distribution | 1
`--rand-spec-res` | percentage of 'special' values to use for the special distribution | 75
`--rand-pareto-h` | shape parameter for the Pareto distribution | 0.2
`--rand-zipfian-exp` | shape parameter (theta) for the Zipfian distribution | 0.8
# Versioning
For transparency and insight into its release cycle, and for striving to maintain backward compatibility, sysbench will be maintained under the Semantic Versioning guidelines as much as possible.
Releases will be numbered with the following format:
`<major>.<minor>.<patch>`
And constructed with the following guidelines:
* Breaking backward compatibility bumps the major (and resets the minor and patch)
* New additions without breaking backward compatibility bumps the minor (and resets the patch)
* Bug fixes and misc changes bumps the patch
For more information on SemVer, please visit [http://semver.org/](http://semver.org/).
[coveralls-badge]: https://coveralls.io/repos/github/akopytov/sysbench/badge.svg?branch=master
[coveralls-url]: https://coveralls.io/github/akopytov/sysbench?branch=master
[action-url]: https://github.com/akopytov/sysbench/actions/workflows/ci.yml
[action-badge]: https://github.com/akopytov/sysbench/actions/workflows/ci.yml/badge.svg
[license-badge]: https://img.shields.io/badge/license-GPLv2-blue.svg
[license-url]: COPYING
[release-badge]: https://img.shields.io/github/release/akopytov/sysbench.svg
[release-url]: https://github.com/akopytov/sysbench/releases/latest
[deb-badge]: https://img.shields.io/badge/Packages-Debian-red.svg?style=flat
[deb-url]: https://packagecloud.io/akopytov/sysbench?filter=debs
[rpm-badge]: https://img.shields.io/badge/Packages-RPM-blue.svg?style=flat
[rpm-url]: https://packagecloud.io/akopytov/sysbench?filter=rpms
================================================
FILE: autogen.sh
================================================
#!/bin/sh
autoreconf -vi
================================================
FILE: config/config.rpath
================================================
#! /bin/sh
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
# Copyright 1996-2007 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
# This file is free software; the Free Software Foundation gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# The first argument passed to this file is the canonical host specification,
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
# should be set by the caller.
#
# The set of defined variables is at the end of this script.
# Known limitations:
# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
# than 256 bytes, otherwise the compiler driver will dump core. The only
# known workaround is to choose shorter directory names for the build
# directory and/or the installation directory.
# All known linkers require a `.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
shrext=.so
host="$1"
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
# Code taken from libtool.m4's _LT_CC_BASENAME.
for cc_temp in $CC""; do
case $cc_temp in
compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
\-*) ;;
*) break;;
esac
done
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
wl=
if test "$GCC" = yes; then
wl='-Wl,'
else
case "$host_os" in
aix*)
wl='-Wl,'
;;
darwin*)
case $cc_basename in
xlc*)
wl='-Wl,'
;;
esac
;;
mingw* | cygwin* | pw32* | os2*)
;;
hpux9* | hpux10* | hpux11*)
wl='-Wl,'
;;
irix5* | irix6* | nonstopux*)
wl='-Wl,'
;;
newsos6)
;;
linux* | k*bsd*-gnu)
case $cc_basename in
icc* | ecc*)
wl='-Wl,'
;;
pgcc | pgf77 | pgf90)
wl='-Wl,'
;;
ccc*)
wl='-Wl,'
;;
como)
wl='-lopt='
;;
*)
case `$CC -V 2>&1 | sed 5q` in
*Sun\ C*)
wl='-Wl,'
;;
esac
;;
esac
;;
osf3* | osf4* | osf5*)
wl='-Wl,'
;;
rdos*)
;;
solaris*)
wl='-Wl,'
;;
sunos4*)
wl='-Qoption ld '
;;
sysv4 | sysv4.2uw2* | sysv4.3*)
wl='-Wl,'
;;
sysv4*MP*)
;;
sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
wl='-Wl,'
;;
unicos*)
wl='-Wl,'
;;
uts4*)
;;
esac
fi
# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
hardcode_libdir_flag_spec=
hardcode_libdir_separator=
hardcode_direct=no
hardcode_minus_L=no
case "$host_os" in
cygwin* | mingw* | pw32*)
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
if test "$GCC" != yes; then
with_gnu_ld=no
fi
;;
interix*)
# we just hope/assume this is gcc and not c89 (= MSVC++)
with_gnu_ld=yes
;;
openbsd*)
with_gnu_ld=no
;;
esac
ld_shlibs=yes
if test "$with_gnu_ld" = yes; then
# Set some defaults for GNU ld with shared library support. These
# are reset later if shared libraries are not supported. Putting them
# here allows them to be overridden if necessary.
# Unlike libtool, we use -rpath here, not --rpath, since the documented
# option of GNU ld is called -rpath, not --rpath.
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
case "$host_os" in
aix3* | aix4* | aix5*)
# On AIX/PPC, the GNU linker is very broken
if test "$host_cpu" != ia64; then
ld_shlibs=no
fi
;;
amigaos*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
# that the semantics of dynamic libraries on AmigaOS, at least up
# to version 4, is to share data among multiple programs linked
# with the same dynamic library. Since this doesn't match the
# behavior of shared libraries on other platforms, we cannot use
# them.
ld_shlibs=no
;;
beos*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
cygwin* | mingw* | pw32*)
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
hardcode_libdir_flag_spec='-L$libdir'
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
interix[3-9]*)
hardcode_direct=no
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
;;
gnu* | linux* | k*bsd*-gnu)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
netbsd*)
;;
solaris*)
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
ld_shlibs=no
elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
case `$LD -v 2>&1` in
*\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
ld_shlibs=no
;;
*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
else
ld_shlibs=no
fi
;;
esac
;;
sunos4*)
hardcode_direct=yes
;;
*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
esac
if test "$ld_shlibs" = no; then
hardcode_libdir_flag_spec=
fi
else
case "$host_os" in
aix3*)
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
hardcode_minus_L=yes
if test "$GCC" = yes; then
# Neither direct hardcoding nor static linking is supported with a
# broken collect2.
hardcode_direct=unsupported
fi
;;
aix4* | aix5*)
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
aix_use_runtimelinking=no
else
aix_use_runtimelinking=no
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking.
case $host_os in aix4.[23]|aix4.[23].*|aix5*)
for ld_flag in $LDFLAGS; do
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aix_use_runtimelinking=yes
break
fi
done
;;
esac
fi
hardcode_direct=yes
hardcode_libdir_separator=':'
if test "$GCC" = yes; then
case $host_os in aix4.[012]|aix4.[012].*)
collect2name=`${CC} -print-prog-name=collect2`
if test -f "$collect2name" && \
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
:
else
# We have old collect2
hardcode_direct=unsupported
hardcode_minus_L=yes
hardcode_libdir_flag_spec='-L$libdir'
hardcode_libdir_separator=
fi
;;
esac
fi
# Begin _LT_AC_SYS_LIBPATH_AIX.
echo 'int main () { return 0; }' > conftest.c
${CC} ${LDFLAGS} conftest.c -o conftest
aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
if test -z "$aix_libpath"; then
aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
fi
if test -z "$aix_libpath"; then
aix_libpath="/usr/lib:/lib"
fi
rm -f conftest.c conftest
# End _LT_AC_SYS_LIBPATH_AIX.
if test "$aix_use_runtimelinking" = yes; then
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
else
if test "$host_cpu" = ia64; then
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
else
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
fi
fi
;;
amigaos*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
# see comment about different semantics on the GNU ld section
ld_shlibs=no
;;
bsdi[45]*)
;;
cygwin* | mingw* | pw32*)
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
hardcode_libdir_flag_spec=' '
libext=lib
;;
darwin* | rhapsody*)
hardcode_direct=no
if test "$GCC" = yes ; then
:
else
case $cc_basename in
xlc*)
;;
*)
ld_shlibs=no
;;
esac
fi
;;
dgux*)
hardcode_libdir_flag_spec='-L$libdir'
;;
freebsd1*)
ld_shlibs=no
;;
freebsd2.2*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
freebsd2*)
hardcode_direct=yes
hardcode_minus_L=yes
;;
freebsd* | dragonfly*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
hpux9*)
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
;;
hpux10*)
if test "$with_gnu_ld" = no; then
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
fi
;;
hpux11*)
if test "$with_gnu_ld" = no; then
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_libdir_separator=:
case $host_cpu in
hppa*64*|ia64*)
hardcode_direct=no
;;
*)
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
;;
esac
fi
;;
irix5* | irix6* | nonstopux*)
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
netbsd*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
newsos6)
hardcode_direct=yes
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
openbsd*)
if test -f /usr/libexec/ld.so; then
hardcode_direct=yes
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
else
case "$host_os" in
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
hardcode_libdir_flag_spec='-R$libdir'
;;
*)
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
;;
esac
fi
else
ld_shlibs=no
fi
;;
os2*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
;;
osf3*)
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
osf4* | osf5*)
if test "$GCC" = yes; then
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
# Both cc and cxx compiler support -rpath directly
hardcode_libdir_flag_spec='-rpath $libdir'
fi
hardcode_libdir_separator=:
;;
solaris*)
hardcode_libdir_flag_spec='-R$libdir'
;;
sunos4*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_direct=yes
hardcode_minus_L=yes
;;
sysv4)
case $host_vendor in
sni)
hardcode_direct=yes # is this really true???
;;
siemens)
hardcode_direct=no
;;
motorola)
hardcode_direct=no #Motorola manual says yes, but my tests say they lie
;;
esac
;;
sysv4.3*)
;;
sysv4*MP*)
if test -d /usr/nec; then
ld_shlibs=yes
fi
;;
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
;;
sysv5* | sco3.2v5* | sco5v6*)
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
hardcode_libdir_separator=':'
;;
uts4*)
hardcode_libdir_flag_spec='-L$libdir'
;;
*)
ld_shlibs=no
;;
esac
fi
# Check dynamic linker characteristics
# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
# Unlike libtool.m4, here we don't care about _all_ names of the library, but
# only about the one the linker finds when passed -lNAME. This is the last
# element of library_names_spec in libtool.m4, or possibly two of them if the
# linker has special search rules.
library_names_spec= # the last element of library_names_spec in libtool.m4
libname_spec='lib$name'
case "$host_os" in
aix3*)
library_names_spec='$libname.a'
;;
aix4* | aix5*)
library_names_spec='$libname$shrext'
;;
amigaos*)
library_names_spec='$libname.a'
;;
beos*)
library_names_spec='$libname$shrext'
;;
bsdi[45]*)
library_names_spec='$libname$shrext'
;;
cygwin* | mingw* | pw32*)
shrext=.dll
library_names_spec='$libname.dll.a $libname.lib'
;;
darwin* | rhapsody*)
shrext=.dylib
library_names_spec='$libname$shrext'
;;
dgux*)
library_names_spec='$libname$shrext'
;;
freebsd1*)
;;
freebsd* | dragonfly*)
case "$host_os" in
freebsd[123]*)
library_names_spec='$libname$shrext$versuffix' ;;
*)
library_names_spec='$libname$shrext' ;;
esac
;;
gnu*)
library_names_spec='$libname$shrext'
;;
hpux9* | hpux10* | hpux11*)
case $host_cpu in
ia64*)
shrext=.so
;;
hppa*64*)
shrext=.sl
;;
*)
shrext=.sl
;;
esac
library_names_spec='$libname$shrext'
;;
interix[3-9]*)
library_names_spec='$libname$shrext'
;;
irix5* | irix6* | nonstopux*)
library_names_spec='$libname$shrext'
case "$host_os" in
irix5* | nonstopux*)
libsuff= shlibsuff=
;;
*)
case $LD in
*-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
*-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
*-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
*) libsuff= shlibsuff= ;;
esac
;;
esac
;;
linux*oldld* | linux*aout* | linux*coff*)
;;
linux* | k*bsd*-gnu)
library_names_spec='$libname$shrext'
;;
knetbsd*-gnu)
library_names_spec='$libname$shrext'
;;
netbsd*)
library_names_spec='$libname$shrext'
;;
newsos6)
library_names_spec='$libname$shrext'
;;
nto-qnx*)
library_names_spec='$libname$shrext'
;;
openbsd*)
library_names_spec='$libname$shrext$versuffix'
;;
os2*)
libname_spec='$name'
shrext=.dll
library_names_spec='$libname.a'
;;
osf3* | osf4* | osf5*)
library_names_spec='$libname$shrext'
;;
rdos*)
;;
solaris*)
library_names_spec='$libname$shrext'
;;
sunos4*)
library_names_spec='$libname$shrext$versuffix'
;;
sysv4 | sysv4.3*)
library_names_spec='$libname$shrext'
;;
sysv4*MP*)
library_names_spec='$libname$shrext'
;;
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
library_names_spec='$libname$shrext'
;;
uts4*)
library_names_spec='$libname$shrext'
;;
esac
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
# How to pass a linker flag through the compiler.
wl="$escaped_wl"
# Static library suffix (normally "a").
libext="$libext"
# Shared library suffix (normally "so").
shlibext="$shlibext"
# Format of library name prefix.
libname_spec="$escaped_libname_spec"
# Library names that the linker finds when passed -lNAME.
library_names_spec="$escaped_library_names_spec"
# Flag to hardcode \$libdir into a binary during linking.
# This must work even if \$libdir does not exist.
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
# Whether we need a single -rpath flag with a separated argument.
hardcode_libdir_separator="$hardcode_libdir_separator"
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
# resulting binary.
hardcode_direct="$hardcode_direct"
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
# resulting binary.
hardcode_minus_L="$hardcode_minus_L"
EOF
================================================
FILE: configure.ac
================================================
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.63])
AC_INIT([sysbench],[1.1.0],[https://github.com/akopytov/sysbench/issues],[sysbench],[https://github.com/akopytov/sysbench])
AC_CONFIG_AUX_DIR([config])
# Define m4_ifblank and m4_ifnblank macros from introduced in
# autotools 2.64 m4sugar.m4 if using an earlier autotools.
m4_ifdef([m4_ifblank], [], [
m4_define([m4_ifblank],
[m4_if(m4_translit([[$1]], [ ][ ][
]), [], [$2], [$3])])
])
m4_ifdef([m4_ifnblank], [], [
m4_define([m4_ifnblank],
[m4_if(m4_translit([[$1]], [ ][ ][
]), [], [$3], [$2])])
])
# Setting CFLAGS here prevents AC_CANONICAL_TARGET from injecting them
SAVE_CFLAGS=${CFLAGS}
SAVE_CXXFLAGS=${CXXFLAGS}
CFLAGS=
CXXFLAGS=
AC_CANONICAL_TARGET
CFLAGS=${SAVE_CFLAGS}
CXXFLAGS=${SAVE_CXXFLAGS}
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_SRCDIR([src/sysbench.c])
AC_CONFIG_HEADERS([config/config.h])
AC_CONFIG_MACRO_DIR([m4])
m4_pattern_forbid([^PKG_[A-Z_]+$],
[pkg-config has to be installed to build sysbench])
ACX_USE_SYSTEM_EXTENSIONS
AC_PROG_CC
AC_PROG_CPP
AM_PROG_CC_C_O
if test x"$ac_cv_prog_cc_c99" = xno; then
AC_MSG_ERROR([a C99 compiler is required to build sysbench])
fi
# Try to guess the most optimal compiler architecture flag, unless it's already
# been specified by the user via CFLAGS (or --without-gcc-arch is passed to
# configure)
AS_CASE([$CFLAGS],
[*-march=*],,
[AX_GCC_ARCHFLAG([no])]
)
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
LT_INIT
AC_CHECK_PROG(sb_have_pkg_config, pkg-config, yes, no)
if test x"$sb_have_pkg_config" = xno; then
AC_MSG_ERROR([the pkg-config package is required to build sysbench])
fi
AX_COMPILER_VENDOR
# Checks for user arguments
AC_LIB_PREFIX()
CPPFLAGS="-D_GNU_SOURCE ${CPPFLAGS}"
AM_CONDITIONAL([IS_MACOS], [test "$host_os" = "darwin"])
if test "$host_os" = "darwin"; then
# MacOS requires _DARWIN_C_SOURCE for valloc(3) to be visible
CPPFLAGS="-D_DARWIN_C_SOURCE ${CPPFLAGS}"
# LuaJIT also requires MACOSX_DEPLOYMENT_TARGET to be set on MacOS
if test -z "$MACOSX_DEPLOYMENT_TARGET"; then
MACOSX_DEPLOYMENT_TARGET="$(sw_vers -productVersion)"
fi
AC_SUBST(MACOSX_DEPLOYMENT_TARGET, $MACOSX_DEPLOYMENT_TARGET)
fi
# Build optimized or debug version ?
# First check for gcc and g++
if test "$GCC" = "yes"
then
CFLAGS="-ggdb3 ${CFLAGS}"
DEBUG_CFLAGS="-O0"
OPTIMIZE_CFLAGS="-O3 -funroll-loops"
GCOV_CFLAGS="-O0 --coverage"
GCOV_LDFLAGS="-coverage"
ASAN_CFLAGS="-fsanitize=address"
ASAN_LDFLAGS="${ASAN_CFLAGS}"
MSAN_CFLAGS="-fsanitize=memory"
MSAN_LDFLAGS="${MSAN_LDFLAGS}"
fi
if test "$ax_cv_c_compiler_vendor" = "sun"
then
isainfo_k=`isainfo -k`
if test "$target_cpu" = "sparc"
then
MEMALIGN_FLAGS="-xmemalign=8s"
IS_64="-m64"
LDFLAGS="${LDFLAGS} -L/usr/lib/${isainfo_k} -L/usr/local/lib/${isainfo_k}"
else
if test "$isainfo_k" = "amd64"
then
IS_64="-m64"
LDFLAGS="${LDFLAGS} -L/usr/lib/${isainfo_k} -L/usr/local/lib/${isainfo_k}"
fi
fi
CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
CFLAGS="-g -mt ${IS_64} ${MEMALIGN_FLAGS} ${CFLAGS}"
DEBUG_CFLAGS="-xO0"
OPTIMIZE_CFLAGS="-xO2 -xlibmil -xdepend -Xa -mt -xstrconst"
# TODO: Set flags for Gcov-enabled builds, if supported by Sun Studio
fi
# Check if we should compile with MySQL support
AC_ARG_WITH([mysql],
AS_HELP_STRING([--with-mysql],
[compile with MySQL support (default is enabled)]),
[], [with_mysql=yes])
AC_MSG_CHECKING([whether to compile with MySQL support])
AS_IF([test "x$with_mysql" != "xno"],
[mysql_support=yes],
[mysql_support=no])
AC_MSG_RESULT([$mysql_support])
# Check if we should compile with PostgreSQL support
AC_ARG_WITH([pgsql],
AS_HELP_STRING([--with-pgsql],
[compile with PostgreSQL support (default is disabled)]),
[], [with_pgsql=no])
AC_MSG_CHECKING([whether to compile with PostgreSQL support])
AS_IF([test "x$with_pgsql" != "xno"],
[pgsql_support=yes],
[pgsql_support=no])
AC_MSG_RESULT([$pgsql_support])
# Set LuaJIT flags
SB_LUAJIT
# Set Concurrency Kit flags
SB_CONCURRENCY_KIT
# Check if we should enable large files support
AC_ARG_ENABLE(largefile,
AS_HELP_STRING([--enable-largefile],[enable large files support (default is enabled)]), ,
enable_largefile=yes
)
# For SHM_HUGETLB on Linux
AC_CHECK_DECLS(SHM_HUGETLB,
AC_DEFINE([HAVE_LARGE_PAGES], [1],
[Define if you have large pages support])
AC_DEFINE([HUGETLB_USE_PROC_MEMINFO], [1],
[Define if /proc/meminfo shows the huge page size (Linux only)])
, ,
[
#include <sys/shm.h>
]
)
# Check if we should enable Linux AIO support
AC_ARG_ENABLE(aio,
AS_HELP_STRING([--enable-aio],[enable Linux asynchronous I/O support (default is enabled)]), ,
enable_aio=yes
)
AC_CHECK_DECLS(O_SYNC, ,
AC_DEFINE([O_SYNC], [O_FSYNC],
[Define to the appropriate value for O_SYNC on your platform]),
[
#include <fcntl.h>
]
)
# Checks for libraries.
ACX_PTHREAD
AC_CHECK_LIB(m, sqrt)
SB_CHECK_MYSQL
AS_IF([test x$with_pgsql != xno], [
AC_CHECK_PGSQL([$with_pgsql])
USE_PGSQL=1
AC_DEFINE(USE_PGSQL,1,[Define to 1 if you want to compile with PostgreSQL support])
AC_SUBST([PGSQL_LIBS])
AC_SUBST([PGSQL_CFLAGS])
])
AM_CONDITIONAL(USE_PGSQL, test x$with_pgsql != xno)
AC_SUBST([USE_PGSQL])
# Check for libaio
AC_CHECK_AIO
AM_CONDITIONAL(USE_AIO, test x$enable_aio = xyes)
AC_CHECK_HEADERS([ \
errno.h \
fcntl.h \
math.h \
pthread.h \
sched.h \
signal.h \
stdlib.h \
string.h \
sys/aio.h \
sys/ipc.h \
sys/time.h \
sys/mman.h \
sys/shm.h \
thread.h \
unistd.h \
limits.h \
libgen.h \
])
# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_OFF_T
AX_TLS([],
AC_MSG_ERROR([thread-local storage is not suppored by the target platform!])
)
# Define HAVE_FUNC_ATTRIBUTE_FORMAT if compiler supports the
# __attribute__((format...)) function attribute
AX_GCC_FUNC_ATTRIBUTE(format)
# Define HAVE_FUNC_ATTRIBUTE_UNUSED if compiler supports the
# __attribute__((unused)) function attribute
AX_GCC_FUNC_ATTRIBUTE(unused)
if test "$enable_largefile" = yes; then
AC_SYS_LARGEFILE
fi
AC_CHECK_SIZEOF(size_t)
AC_CHECK_SIZEOF(bool,,
[
#include <stdbool.h>
])
# Checks for library functions.
AC_FUNC_MMAP
AC_FUNC_STRERROR_R
AC_SEARCH_LIBS([clock_gettime], [rt])
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_CHECK_FUNCS([ \
alarm \
clock_gettime \
directio \
fdatasync \
gettimeofday \
isatty \
memalign \
memset \
posix_memalign \
pthread_cancel \
pthread_yield \
setvbuf \
sqrt \
strdup \
thr_setconcurrency \
valloc \
])
AC_CHECK_FUNC(pthread_once, ,
AC_MSG_ERROR([*** pthread_once() is not available on this platform ***])
)
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
AC_ARG_WITH([debug],
[AS_HELP_STRING([--with-debug],
[Add debug code/turns off optimizations (yes|no) @<:@default=no@:>@])],
[with_debug=$withval],
[with_debug=no])
AC_ARG_ENABLE([coverage],
[AS_HELP_STRING([--enable-coverage],
[Toggle coverage @<:@default=no@:>@])],
[ac_coverage="$enableval"],
[ac_coverage="no"])
AC_ARG_ENABLE([asan],
[AS_HELP_STRING([--enable-asan],
[Enable AddressSanitizer @<:@default=no@:>@])],
[ac_asan="$enableval"],
[ac_asan="no"])
AC_ARG_ENABLE([msan],
[AS_HELP_STRING([--enable-msan],
[Enable MemorySanitizer @<:@default=no@:>@])],
[ac_msan="$enableval"],
[ac_msan="no"])
AC_ARG_ENABLE([fail],
[AS_HELP_STRING([--disable-fail],
[Turn warnings into failures @<:@default=no@:>@])],
[ac_warn_fail="$enableval"],
[ac_warn_fail="no"])
if test "$with_debug" = "yes"
then
# Debugging. No optimization.
CFLAGS="${DEBUG_CFLAGS} -DDEBUG ${CFLAGS}"
elif test "$ac_coverage" = "yes"
then
# Gcov-enabled build. No optimization.
CFLAGS="${GCOV_CFLAGS} ${CFLAGS}"
LDFLAGS="${GCOV_LDFLAGS} ${LDFLAGS}"
else
# Optimized version. No debug
CFLAGS="${OPTIMIZE_CFLAGS} ${CFLAGS}"
fi
if test "$ac_asan" = "yes"
then
# Add -fsanitize=address to CFLAGS/LDFLAGS if supported by the compiler
AX_CHECK_COMPILE_FLAG([-fsanitize=address],
[
CFLAGS="${ASAN_CFLAGS} ${CFLAGS}"
LDFLAGS="${ASAN_LDFLAGS} ${LDFLAGS}"
])
fi
if test "$ac_msan" = "yes"
then
# Add -fsanitize=memory to CFLAGS/LDFLAGS if supported by the compiler
AX_CHECK_COMPILE_FLAG([-fsanitize=memory],
[
CFLAGS="${MSAN_CFLAGS} ${CFLAGS}"
LDFLAGS="${MSAN_CFLAGS} ${LDFLAGS}"
])
fi
if test "$GCC" = "yes"
then
if test "$ac_warn_fail" = "yes"
then
W_FAIL="-Werror"
fi
CC_WARNINGS="-Wall -Wextra -Wpointer-arith -Wbad-function-cast \
-Wstrict-prototypes -Wnested-externs -Wno-format-zero-length \
-Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations \
-Wredundant-decls -Wcast-align -Wvla ${W_FAIL}"
fi
if test "$ax_cv_c_compiler_vendor" = "sun"
then
CC_WARNINGS="-v -errtags=yes -errwarn=%all -erroff=E_INTEGER_OVERFLOW_DETECTED -erroff=E_STATEMENT_NOT_REACHED"
fi
AM_CFLAGS="${CC_WARNINGS} ${AM_CFLAGS} ${PTHREAD_CFLAGS}"
AM_CPPFLAGS="${AM_CPPFLAGS} -I\$(top_srcdir)/src ${LUAJIT_CFLAGS} ${CK_CFLAGS}"
AM_LDFLAGS="$PTHREAD_LIBS"
AC_SUBST(AM_CFLAGS)
AC_SUBST(AM_CPPFLAGS)
AC_SUBST(AM_LDFLAGS)
# Define SB_GIT_SHA
git=$(which git)
if test -n "$git"
then
SB_GIT_SHA=$(git rev-parse --short HEAD 2>/dev/null)
if test -n "$SB_GIT_SHA"
then
SB_GIT_SHA="-$SB_GIT_SHA"
fi
fi
AC_DEFINE_UNQUOTED([SB_GIT_SHA], ["$SB_GIT_SHA"], [Git commit hash, if available.])
AC_SUBST([SB_GIT_SHA])
AC_CONFIG_FILES([
Makefile
third_party/luajit/Makefile
third_party/concurrency_kit/Makefile
src/Makefile
src/drivers/Makefile
src/drivers/mysql/Makefile
src/drivers/pgsql/Makefile
src/tests/Makefile
src/tests/cpu/Makefile
src/tests/fileio/Makefile
src/tests/memory/Makefile
src/tests/threads/Makefile
src/tests/mutex/Makefile
src/lua/Makefile
src/lua/internal/Makefile
tests/Makefile
tests/include/config.sh
snap/snapcraft.yaml
])
AC_OUTPUT
AC_MSG_RESULT([===============================================================================])
AC_MSG_RESULT([sysbench version : ${PACKAGE_VERSION}${SB_GIT_SHA}])
AC_MSG_RESULT([CC : ${CC}])
AC_MSG_RESULT([CFLAGS : ${CFLAGS} ${AM_CFLAGS}])
AC_MSG_RESULT([CPPFLAGS : ${CPPFLAGS} ${AM_CPPFLAGS}])
AC_MSG_RESULT([LDFLAGS : ${LDFLAGS} ${AM_LDFLAGS}])
AC_MSG_RESULT([LIBS : ${LIBS}])
AC_MSG_RESULT([])
AC_MSG_RESULT([prefix : $(eval echo ${prefix})])
AC_MSG_RESULT([bindir : $(eval echo ${bindir})])
AC_MSG_RESULT([libexecdir : $(eval echo ${libexecdir})])
AC_MSG_RESULT([mandir : $(eval echo ${mandir})])
AC_MSG_RESULT([datadir : $(eval echo ${datadir})])
AC_MSG_RESULT([])
AC_MSG_RESULT([MySQL support : ${mysql_support}])
AC_MSG_RESULT([PostgreSQL support : ${pgsql_support}])
AC_MSG_RESULT([])
AC_MSG_RESULT([LuaJIT : ${sb_use_luajit}])
AC_MSG_RESULT([LUAJIT_CFLAGS : ${LUAJIT_CFLAGS}])
AC_MSG_RESULT([LUAJIT_LIBS : ${LUAJIT_LIBS}])
AC_MSG_RESULT([LUAJIT_LDFLAGS : ${LUAJIT_LDFLAGS}])
AC_MSG_RESULT([])
AC_MSG_RESULT([Concurrency Kit : ${sb_use_ck}])
if test "$sb_use_ck" = bundled; then
AC_MSG_RESULT([CK_CFLAGS : ${CK_CFLAGS}])
AC_MSG_RESULT([CK_LIBS : ${CK_LIBS}])
AC_MSG_RESULT([configure flags : ${CK_CONFIGURE_FLAGS}])
fi
AC_MSG_RESULT([===============================================================================])
================================================
FILE: debian/changelog
================================================
sysbench (1.0.21-1) unstable; urgency=low
* add libzstd-dev to build dependencies
-- Alexey Kopytov <akopytov@gmail.com> Sun, 24 Jan 2021 13:16:04 +0300
sysbench (1.0.18-1) unstable; urgency=low
* add libssl-dev to build dependencies
-- Alexey Kopytov <akopytov@gmail.com> Sun, 08 Dec 2019 14:02:01 +0300
sysbench (1.0.15-2) unstable; urgency=low
* add libaio-dev to build dependencies
-- Alexey Kopytov <akopytov@gmail.com> Sat, 09 Jul 2018 09:24:42 +0300
sysbench (1.0.12-1) unstable; urgency=low
* remove vim-common from build dependencies
-- Alexey Kopytov <akopytov@gmail.com> Sat, 06 Jan 2018 10:59:42 +0300
sysbench (1.0.11-1) unstable; urgency=low
* add Debian Stretch support by adding optional build dependency on
default-libmysqlclient-dev and replacing python-minimal with python
(as minimal does not provide the shlex module required by cram)
-- Alexey Kopytov <akopytov@gmail.com> Sat, 09 Dec 2017 19:52:23 +0300
sysbench (1.0.6-1) unstable; urgency=low
* Add pkg-config, vim-common and python-minimal and libpq-dev to build dependencies.
* Fix 'clean' target in rules.
* Add ChangeLog and COPYING to docs.
* Remove tests/db/*.lua from install.
* Pass --without-gcc-arch to configure to not override compiler flags
passed by the build system
-- Alexey Kopytov <akopytov@gmail.com> Thu, 13 Apr 2017 23:04:34 +0300
sysbench (1.0-1) unstable; urgency=low
* Initial release
-- Alexey Kopytov <akopytov@gmail.com> Wed, 10 Aug 2016 18:04:53 +0300
================================================
FILE: debian/compat
================================================
7
================================================
FILE: debian/control
================================================
Source: sysbench
Section: misc
Priority: extra
Maintainer: Alexey Kopytov <akopytov@gmail.com>
Build-Depends: debhelper, autoconf, automake, libaio-dev, libtool, libmysqlclient-dev | default-libmysqlclient-dev, libpq-dev, pkg-config, python, libssl-dev, libzstd-dev
Standards-Version: 3.9.5
Homepage: https://github.com/akopytov/sysbench
Package: sysbench
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Scriptable database and system performance benchmark
sysbench is a scriptable multi-threaded benchmark tool based on
LuaJIT. It is most frequently used for database benchmarks, but can also
be used to create arbitrarily complex workloads that do not involve a
database server.
.
sysbench comes with the following bundled benchmarks:
.
- oltp_*.lua: a collection of OLTP-like database benchmarks
- fileio: a filesystem-level benchmark
- cpu: a simple CPU benchmark
- memory: a memory access benchmark
- threads: a thread-based scheduler benchmark
- mutex: a POSIX mutex benchmark
================================================
FILE: debian/copyright
================================================
Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat
Upstream-Name: sysbench
Upstream-Maintainer: Alexey Kopytov <akopytov@gmail.com>
Upstream-Source: https://github.com/akopytov/sysbench
Files: *
Copyright: 2016 Alexey Kopytov
License: GPL-2
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.
.
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL-2'.
================================================
FILE: debian/dirs
================================================
usr/bin
================================================
FILE: debian/docs
================================================
README.md
ChangeLog
COPYING
================================================
FILE: debian/install
================================================
================================================
FILE: debian/rules
================================================
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_configure:
dh_testdir
autoreconf -vif
dh_auto_configure -- --with-mysql --with-pgsql --without-gcc-arch
override_dh_compress:
dh_compress -X.lua
================================================
FILE: debian/source/format
================================================
3.0 (quilt)
================================================
FILE: install-sh
================================================
#!/bin/sh
#
# install - install a program, script, or datafile
#
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
transformbasename=""
transform_arg=""
instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
chowncmd=""
chgrpcmd=""
stripcmd=""
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=""
dst=""
dir_arg=""
while [ x"$1" != x ]; do
case $1 in
-c) instcmd=$cpprog
shift
continue;;
-d) dir_arg=true
shift
continue;;
-m) chmodcmd="$chmodprog $2"
shift
shift
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
-s) stripcmd=$stripprog
shift
continue;;
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
shift
continue;;
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
shift
continue;;
*) if [ x"$src" = x ]
then
src=$1
else
# this colon is to work around a 386BSD /bin/sh bug
:
dst=$1
fi
shift
continue;;
esac
done
if [ x"$src" = x ]
then
echo "$0: no input file specified" >&2
exit 1
else
:
fi
if [ x"$dir_arg" != x ]; then
dst=$src
src=""
if [ -d "$dst" ]; then
instcmd=:
chmodcmd=""
else
instcmd=$mkdirprog
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if [ -f "$src" ] || [ -d "$src" ]
then
:
else
echo "$0: $src does not exist" >&2
exit 1
fi
if [ x"$dst" = x ]
then
echo "$0: no destination specified" >&2
exit 1
else
:
fi
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
if [ -d "$dst" ]
then
dst=$dst/`basename "$src"`
else
:
fi
fi
## this sed command emulates the dirname command
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# this part is taken from Noah Friedman's mkinstalldirs script
# Skip lots of stat calls in the usual case.
if [ ! -d "$dstdir" ]; then
defaultIFS='
'
IFS="${IFS-$defaultIFS}"
oIFS=$IFS
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
IFS=$oIFS
pathcomp=''
while [ $# -ne 0 ] ; do
pathcomp=$pathcomp$1
shift
if [ ! -d "$pathcomp" ] ;
then
$mkdirprog "$pathcomp"
else
:
fi
pathcomp=$pathcomp/
done
fi
if [ x"$dir_arg" != x ]
then
$doit $instcmd "$dst" &&
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
else
# If we're going to rename the final executable, determine the name now.
if [ x"$transformarg" = x ]
then
dstfile=`basename "$dst"`
else
dstfile=`basename "$dst" $transformbasename |
sed $transformarg`$transformbasename
fi
# don't allow the sed command to completely eliminate the filename
if [ x"$dstfile" = x ]
then
dstfile=`basename "$dst"`
else
:
fi
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up temp files at exit.
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
trap '(exit $?); exit' 1 2 13 15
# Move or copy the file name to the temp name
$doit $instcmd "$src" "$dsttmp" &&
# and set any options; do chmod last to preserve setuid bits
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
# Now remove or move aside any old file at destination location. We try this
# two ways since rm can't unlink itself on some systems and the destination
# file might be busy for other reasons. In this case, the final cleanup
# might fail but the new file should still install successfully.
{
if [ -f "$dstdir/$dstfile" ]
then
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
{
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
(exit 1); exit
}
else
:
fi
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
fi &&
# The final little trick to "correctly" pass the exit status to the exit trap.
{
(exit 0); exit
}
================================================
FILE: m4/ac_check_aio.m4
================================================
dnl ---------------------------------------------------------------------------
dnl Macro: AC_CHECK_AIO
dnl Check for Linux AIO availability on the target system
dnl Also, check the version of libaio library (at the moment, there are two
dnl versions with incompatible interfaces).
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_CHECK_AIO],[
if test x$enable_aio = xyes; then
AC_CHECK_HEADER([libaio.h],
[AC_DEFINE(HAVE_LIBAIO_H,1,[Define to 1 if your system has <libaio.h> header file])],
[enable_aio=no])
fi
if test x$enable_aio = xyes; then
AC_CHECK_LIB([aio], [io_queue_init], , [enable_aio=no])
fi
if test x$enable_aio = xyes; then
AC_MSG_CHECKING(if io_getevents() has an old interface)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[[
#ifdef HAVE_LIBAIO_H
# include <libaio.h>
#endif
struct io_event event;
io_context_t ctxt;
]],
[[
(void)io_getevents(ctxt, 1, &event, NULL);
]] )
], [
AC_DEFINE([HAVE_OLD_GETEVENTS], 1, [Define to 1 if libaio has older getevents() interface])
AC_MSG_RESULT(yes)
],
[AC_MSG_RESULT(no)]
)
fi
])
================================================
FILE: m4/ac_check_pgsql.m4
================================================
dnl ---------------------------------------------------------------------------
dnl Macro: AC_CHECK_PGSQL
dnl First check for custom PostgreSQL paths in --with-pgsql-* options.
dnl If some paths are missing, check if pg_config exists.
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_CHECK_PGSQL],[
# Check for custom includes path
if test [ -z "$ac_cv_pgsql_includes" ]
then
AC_ARG_WITH([pgsql-includes],
AS_HELP_STRING([--with-pgsql-includes], [path to PostgreSQL header files]),
[ac_cv_pgsql_includes=$withval])
fi
if test [ -n "$ac_cv_pgsql_includes" ]
then
AC_CACHE_CHECK([PostgreSQL includes], [ac_cv_pgsql_includes], [ac_cv_pgsql_includes=""])
PGSQL_CFLAGS="-I$ac_cv_pgsql_includes"
fi
# Check for custom library path
if test [ -z "$ac_cv_pgsql_libs" ]
then
AC_ARG_WITH([pgsql-libs],
AS_HELP_STRING([--with-pgsql-libs], [path to PostgreSQL libraries]),
[ac_cv_pgsql_libs=$withval])
fi
if test [ -n "$ac_cv_pgsql_libs" ]
then
AC_CACHE_CHECK([PostgreSQL libraries], [ac_cv_pgsql_libs], [ac_cv_pgsql_libs=""])
PGSQL_LIBS="-L$ac_cv_pgsql_libs -lpq"
fi
# If some path is missing, try to autodetermine with pgsql_config
if test [ -z "$ac_cv_pgsql_includes" -o -z "$ac_cv_pgsql_libs" ]
then
if test [ -z "$pgconfig" ]
then
AC_PATH_PROG(pgconfig,pg_config)
fi
if test [ -z "$pgconfig" ]
then
AC_MSG_ERROR([pg_config executable not found
********************************************************************************
ERROR: cannot find PostgreSQL libraries. If you want to compile with PosgregSQL support,
you must either specify file locations explicitly using
--with-pgsql-includes and --with-pgsql-libs options, or make sure path to
pg_config is listed in your PATH environment variable. If you want to
disable PostgreSQL support, use --without-pgsql option.
********************************************************************************
])
else
if test [ -z "$ac_cv_pgsql_includes" ]
then
AC_MSG_CHECKING(PostgreSQL C flags)
PGSQL_CFLAGS="-I`${pgconfig} --includedir`"
AC_MSG_RESULT($PGSQL_CFLAGS)
fi
if test [ -z "$ac_cv_pgsql_libs" ]
then
AC_MSG_CHECKING(PostgreSQL linker flags)
PGSQL_LIBS="-L`${pgconfig} --libdir` -lpq"
AC_MSG_RESULT($PGSQL_LIBS)
fi
fi
fi
])
================================================
FILE: m4/acx_pthread.m4
================================================
##### http://autoconf-archive.cryp.to/acx_pthread.html
#
# SYNOPSIS
#
# ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
#
# DESCRIPTION
#
# This macro figures out how to build C programs using POSIX threads.
# It sets the PTHREAD_LIBS output variable to the threads library and
# linker flags, and the PTHREAD_CFLAGS output variable to any special
# C compiler flags that are needed. (The user can also force certain
# compiler flags/libs to be tested by setting these environment
# variables.)
#
# Also sets PTHREAD_CC to any special C compiler that is needed for
# multi-threaded programs (defaults to the value of CC otherwise).
# (This is necessary on AIX to use the special cc_r compiler alias.)
#
# NOTE: You are assumed to not only compile your program with these
# flags, but also link it with them as well. e.g. you should link
# with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
# $LIBS
#
# If you are only building threads programs, you may wish to use
# these variables in your default LIBS, CFLAGS, and CC:
#
# LIBS="$PTHREAD_LIBS $LIBS"
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# CC="$PTHREAD_CC"
#
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
# constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
#
# ACTION-IF-FOUND is a list of shell commands to run if a threads
# library is found, and ACTION-IF-NOT-FOUND is a list of commands to
# run it if it is not found. If ACTION-IF-FOUND is not specified, the
# default action will define HAVE_PTHREAD.
#
# Please let the authors know if this macro fails on any platform, or
# if you have any other suggestions or comments. This macro was based
# on work by SGJ on autoconf scripts for FFTW (http://www.fftw.org/)
# (with help from M. Frigo), as well as ac_pthread and hb_pthread
# macros posted by Alejandro Forero Cuervo to the autoconf macro
# repository. We are also grateful for the helpful feedback of
# numerous users.
#
# LAST MODIFICATION
#
# 2006-05-29
#
# COPYLEFT
#
# Copyright (c) 2006 Steven G. Johnson <stevenj@alum.mit.edu>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
#
# As a special exception, the respective Autoconf Macro's copyright
# owner gives unlimited permission to copy, distribute and modify the
# configure scripts that are the output of Autoconf when processing
# the Macro. You need not follow the terms of the GNU General Public
# License when using or distributing such scripts, even though
# portions of the text of the Macro appear in them. The GNU General
# Public License (GPL) does govern all other use of the material that
# constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the
# Autoconf Macro released by the Autoconf Macro Archive. When you
# make and distribute a modified version of the Autoconf Macro, you
# may extend this special exception to the GPL to apply to your
# modified version as well.
AC_DEFUN([ACX_PTHREAD], [
AC_REQUIRE([AC_CANONICAL_HOST])
AC_LANG_PUSH([C])
acx_pthread_ok=no
# We used to check for pthread.h first, but this fails if pthread.h
# requires special compiler flags (e.g. on True64 or Sequent).
# It gets checked for in the link test anyway.
# First of all, check if the user has set any of the PTHREAD_LIBS,
# etcetera environment variables, and if threads linking works using
# them:
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
AC_MSG_RESULT($acx_pthread_ok)
if test x"$acx_pthread_ok" = xno; then
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
fi
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
fi
# We must check for the threads library under a number of different
# names; the ordering is very important because some systems
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
# libraries is broken (non-POSIX).
# Create a list of thread flags to try. Items starting with a "-" are
# C compiler flags, and other items are library names, except for "none"
# which indicates that we try without any flags at all, and "pthread-config"
# which is a program returning the flags for the Pth emulation library.
acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
# The ordering *is* (sometimes) important. Some notes on the
# individual items follow:
# pthreads: AIX (must check this before -lpthread)
# none: in case threads are in libc; should be tried before -Kthread and
# other compiler flags to prevent continual compiler warnings
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
# -pthreads: Solaris/gcc
# -mthreads: Mingw32/gcc, Lynx/gcc
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
# doesn't hurt to check since this sometimes defines pthreads too;
# also defines -D_REENTRANT)
# ... -mt is also the pthreads flag for HP/aCC
# pthread: Linux, etcetera
# --thread-safe: KAI C++
# pthread-config: use pthread-config program (for GNU Pth library)
case "${host_cpu}-${host_os}" in
*solaris*)
# On Solaris (at least, for some versions), libc contains stubbed
# (non-functional) versions of the pthreads routines, so link-based
# tests will erroneously succeed. (We need to link with -pthreads/-mt/
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
# a function called by this macro, so we could check for that, but
# who knows whether they'll stub that too in a future libc.) So,
# we'll just look for -pthreads and -lpthread first:
acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags"
;;
esac
if test x"$acx_pthread_ok" = xno; then
for flag in $acx_pthread_flags; do
case $flag in
none)
AC_MSG_CHECKING([whether pthreads work without any flags])
;;
-*)
AC_MSG_CHECKING([whether pthreads work with $flag])
PTHREAD_CFLAGS="$flag"
;;
pthread-config)
AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
if test x"$acx_pthread_config" = xno; then continue; fi
PTHREAD_CFLAGS="`pthread-config --cflags`"
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
;;
*)
AC_MSG_CHECKING([for the pthreads library -l$flag])
PTHREAD_LIBS="-l$flag"
;;
esac
save_LIBS="$LIBS"
save_CFLAGS="$CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# Check for various functions. We must include pthread.h,
# since some functions may be macros. (On the Sequent, we
# need a special flag -Kthread to make this header compile.)
# We check for pthread_join because it is in -lpthread on IRIX
# while pthread_create is in libc. We check for pthread_attr_init
# due to DEC craziness with -lpthreads. We check for
# pthread_cleanup_push because it is one of the few pthread
# functions on Solaris that doesn't have a non-functional libc stub.
# We try pthread_create on general principles.
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t th; pthread_join(th, 0);
pthread_attr_init(0); pthread_cleanup_push(0, 0);
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ]])],[acx_pthread_ok=yes],[])
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
AC_MSG_RESULT($acx_pthread_ok)
if test "x$acx_pthread_ok" = xyes; then
break;
fi
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
done
fi
# Various other checks:
if test "x$acx_pthread_ok" = xyes; then
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
AC_MSG_CHECKING([for joinable pthread attribute])
attr_name=unknown
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], [[int attr=$attr; return attr;]])],[attr_name=$attr; break],[])
done
AC_MSG_RESULT($attr_name)
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
[Define to necessary symbol if this constant
uses a non-standard name on your system.])
fi
AC_MSG_CHECKING([if more special flags are required for pthreads])
flag=no
case "${host_cpu}-${host_os}" in
*-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
*solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
esac
AC_MSG_RESULT(${flag})
if test "x$flag" != xno; then
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
fi
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
# More AIX lossage: must compile with xlc_r or cc_r
if test x"$GCC" != xyes; then
AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
else
PTHREAD_CC=$CC
fi
else
PTHREAD_CC="$CC"
fi
AC_SUBST(PTHREAD_LIBS)
AC_SUBST(PTHREAD_CFLAGS)
AC_SUBST(PTHREAD_CC)
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test x"$acx_pthread_ok" = xyes; then
ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
:
else
acx_pthread_ok=no
$2
fi
AC_LANG_POP([])
])dnl ACX_PTHREAD
================================================
FILE: m4/ax_check_compile_flag.m4
================================================
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
#
# DESCRIPTION
#
# Check whether the given FLAG works with the current language's compiler
# or gives an error. (Warnings, however, are ignored)
#
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
# success/failure.
#
# If EXTRA-FLAGS is defined, it is added to the current language's default
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
# force the compiler to issue an error when a bad flag is given.
#
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
#
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
#
# LICENSE
#
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 5
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
[
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
[AS_VAR_SET(CACHEVAR,[yes])],
[AS_VAR_SET(CACHEVAR,[no])])
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
AS_VAR_IF(CACHEVAR,yes,
[m4_default([$2], :)],
[m4_default([$3], :)])
AS_VAR_POPDEF([CACHEVAR])dnl
])dnl AX_CHECK_COMPILE_FLAGS
================================================
FILE: m4/ax_compiler_vendor.m4
================================================
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_COMPILER_VENDOR
#
# DESCRIPTION
#
# Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun,
# hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft,
# watcom, etc. The vendor is returned in the cache variable
# $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++.
#
# LICENSE
#
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
# Copyright (c) 2008 Matteo Frigo
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 16
AC_DEFUN([AX_COMPILER_VENDOR],
[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
dnl Please add if possible support to ax_compiler_version.m4
[# note: don't check for gcc first since some other compilers define __GNUC__
vendors="intel: __ICC,__ECC,__INTEL_COMPILER
ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__
pathscale: __PATHCC__,__PATHSCALE__
clang: __clang__
cray: _CRAYC
fujitsu: __FUJITSU
gnu: __GNUC__
sun: __SUNPRO_C,__SUNPRO_CC
hp: __HP_cc,__HP_aCC
dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER
borland: __BORLANDC__,__CODEGEARC__,__TURBOC__
comeau: __COMO__
kai: __KCC
lcc: __LCC__
sgi: __sgi,sgi
microsoft: _MSC_VER
metrowerks: __MWERKS__
watcom: __WATCOMC__
portland: __PGI
tcc: __TINYC__
unknown: UNKNOWN"
for ventest in $vendors; do
case $ventest in
*:) vendor=$ventest; continue ;;
*) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;;
esac
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
#if !($vencpp)
thisisanerror;
#endif
])], [break])
done
ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1`
])
])
================================================
FILE: m4/ax_gcc_archflag.m4
================================================
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_gcc_archflag.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_GCC_ARCHFLAG([PORTABLE?], [ACTION-SUCCESS], [ACTION-FAILURE])
#
# DESCRIPTION
#
# This macro tries to guess the "native" arch corresponding to the target
# architecture for use with gcc's -march=arch or -mtune=arch flags. If
# found, the cache variable $ax_cv_gcc_archflag is set to this flag and
# ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is set to
# "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is
# to add $ax_cv_gcc_archflag to the end of $CFLAGS.
#
# PORTABLE? should be either [yes] (default) or [no]. In the former case,
# the flag is set to -mtune (or equivalent) so that the architecture is
# only used for tuning, but the instruction set used is still portable. In
# the latter case, the flag is set to -march (or equivalent) so that
# architecture-specific instructions are enabled.
#
# The user can specify --with-gcc-arch=<arch> in order to override the
# macro's choice of architecture, or --without-gcc-arch to disable this.
#
# When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is
# called unless the user specified --with-gcc-arch manually.
#
# Requires macros: AX_CHECK_COMPILE_FLAG, AX_GCC_X86_CPUID
#
# (The main emphasis here is on recent CPUs, on the principle that doing
# high-performance computing on old hardware is uncommon.)
#
# LICENSE
#
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
# Copyright (c) 2008 Matteo Frigo
# Copyright (c) 2014 Tsukasa Oi
# Copyright (c) 2017-2018 Alexey Kopytov
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 21
AC_DEFUN([AX_GCC_ARCHFLAG],
[AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_CANONICAL_HOST])
AC_REQUIRE([AC_PROG_SED])
AC_REQUIRE([AX_COMPILER_VENDOR])
AC_ARG_WITH(gcc-arch, [AS_HELP_STRING([--with-gcc-arch=<arch>], [use architecture <arch> for gcc -march/-mtune, instead of guessing])],
ax_gcc_arch=$withval, ax_gcc_arch=yes)
AC_MSG_CHECKING([for gcc architecture flag])
AC_MSG_RESULT([])
AC_CACHE_VAL(ax_cv_gcc_archflag,
[
ax_cv_gcc_archflag="unknown"
if test "$GCC" = yes; then
if test "x$ax_gcc_arch" = xyes; then
ax_gcc_arch=""
if test "$cross_compiling" = no; then
case $host_cpu in
i[[3456]]86*|x86_64*|amd64*) # use cpuid codes
AX_GCC_X86_CPUID(0)
AX_GCC_X86_CPUID(1)
case $ax_cv_gcc_x86_cpuid_0 in
*:756e6547:6c65746e:49656e69) # Intel
case $ax_cv_gcc_x86_cpuid_1 in
*5[[4578]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;;
*5[[123]]?:*:*:*) ax_gcc_arch=pentium ;;
*0?61?:*:*:*|?61?:*:*:*|61?:*:*:*) ax_gcc_arch=pentiumpro ;;
*0?6[[356]]?:*:*:*|?6[[356]]?:*:*:*|6[[356]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;;
*0?6[[78ab]]?:*:*:*|?6[[78ab]]?:*:*:*|6[[78ab]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;;
*0?6[[9d]]?:*:*:*|?6[[9d]]?:*:*:*|6[[9d]]?:*:*:*|*1?65?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;;
*0?6e?:*:*:*|?6e?:*:*:*|6e?:*:*:*) ax_gcc_arch="yonah pentium-m pentium3 pentiumpro" ;;
*0?6f?:*:*:*|?6f?:*:*:*|6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;;
*1?6[[7d]]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;;
*1?6[[aef]]?:*:*:*|*2?6e?:*:*:*) ax_gcc_arch="nehalem corei7 core2 pentium-m pentium3 pentiumpro" ;;
*2?6[[5cf]]?:*:*:*) ax_gcc_arch="westmere corei7 core2 pentium-m pentium3 pentiumpro" ;;
*2?6[[ad]]?:*:*:*) ax_gcc_arch="sandybridge corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;;
*3?6[[ae]]?:*:*:*) ax_gcc_arch="ivybridge core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;;
*3?6[[cf]]?:*:*:*|*4?6[[56]]?:*:*:*) ax_gcc_arch="haswell core-avx2 core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;;
*3?6d?:*:*:*|*4?6[[7f]]?:*:*:*|*5?66?:*:*:*) ax_gcc_arch="broadwell core-avx2 core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;;
*1?6c?:*:*:*|*2?6[[67]]?:*:*:*|*3?6[[56]]?:*:*:*) ax_gcc_arch="bonnell atom core2 pentium-m pentium3 pentiumpro" ;;
*3?67?:*:*:*|*[[45]]?6[[ad]]?:*:*:*) ax_gcc_arch="silvermont atom core2 pentium-m pentium3 pentiumpro" ;;
*000?f[[012]]?:*:*:*|?f[[012]]?:*:*:*|f[[012]]?:*:*:*) ax_gcc_arch="pentium4 pentiumpro" ;;
*000?f[[346]]?:*:*:*|?f[[346]]?:*:*:*|f[[346]]?:*:*:*) ax_gcc_arch="nocona prescott pentium4 pentiumpro" ;;
# fallback
*5??:*:*:*) ax_gcc_arch=pentium ;;
*??6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;;
*6??:*:*:*) ax_gcc_arch=pentiumpro ;;
*00??f??:*:*:*|??f??:*:*:*|?f??:*:*:*|f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro" ;;
esac ;;
*:68747541:444d4163:69746e65) # AMD
case $ax_cv_gcc_x86_cpuid_1 in
*5[[67]]?:*:*:*) ax_gcc_arch=k6 ;;
*5[[8]]?:*:*:*) ax_gcc_arch="k6-2 k6" ;;
*5[[9d]]?:*:*:*) ax_gcc_arch="k6-3 k6" ;;
*6[[12]]?:*:*:*) ax_gcc_arch="athlon k7" ;;
*6[[34]]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;;
*6[[678a]]?:*:*:*) ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;;
*000?f[[4578bcef]]?:*:*:*|?f[[4578bcef]]?:*:*:*|f[[4578bcef]]?:*:*:*|*001?f[[4578bcf]]?:*:*:*|1?f[[4578bcf]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;;
*002?f[[13457bcf]]?:*:*:*|2?f[[13457bcf]]?:*:*:*|*004?f[[138bcf]]?:*:*:*|4?f[[138bcf]]?:*:*:*|*005?f[[df]]?:*:*:*|5?f[[df]]?:*:*:*|*006?f[[8bcf]]?:*:*:*|6?f[[8bcf]]?:*:*:*|*007?f[[cf]]?:*:*:*|7?f[[cf]]?:*:*:*|*00c?f1?:*:*:*|c?f1?:*:*:*|*020?f3?:*:*:*|20?f3?:*:*:*) ax_gcc_arch="athlon64-sse3 k8-sse3 athlon64 k8" ;;
*010?f[[245689a]]?:*:*:*|10?f[[245689a]]?:*:*:*|*030?f1?:*:*:*|30?f1?:*:*:*) ax_gcc_arch="barcelona amdfam10 k8" ;;
*050?f[[12]]?:*:*:*|50?f[[12]]?:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;;
*060?f1?:*:*:*|60?f1?:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;;
*060?f2?:*:*:*|60?f2?:*:*:*|*061?f[[03]]?:*:*:*|61?f[[03]]?:*:*:*) ax_gcc_arch="bdver2 bdver1 amdfam10 k8" ;;
*063?f0?:*:*:*|63?f0?:*:*:*) ax_gcc_arch="bdver3 bdver2 bdver1 amdfam10 k8" ;;
*07[[03]]?f0?:*:*:*|7[[03]]?f0?:*:*:*) ax_gcc_arch="btver2 btver1 amdfam10 k8" ;;
# fallback
*0[[13]]??f??:*:*:*|[[13]]??f??:*:*:*) ax_gcc_arch="barcelona amdfam10 k8" ;;
*020?f??:*:*:*|20?f??:*:*:*) ax_gcc_arch="athlon64-sse3 k8-sse3 athlon64 k8" ;;
*05??f??:*:*:*|5??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;;
*060?f??:*:*:*|60?f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;;
*061?f??:*:*:*|61?f??:*:*:*) ax_gcc_arch="bdver2 bdver1 amdfam10 k8" ;;
*06??f??:*:*:*|6??f??:*:*:*) ax_gcc_arch="bdver3 bdver2 bdver1 amdfam10 k8" ;;
*070?f??:*:*:*|70?f??:*:*:*) ax_gcc_arch="btver2 btver1 amdfam10 k8" ;;
*???f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;;
esac ;;
*:746e6543:736c7561:48727561) # IDT / VIA (Centaur)
case $ax_cv_gcc_x86_cpuid_1 in
*54?:*:*:*) ax_gcc_arch=winchip-c6 ;;
*5[[89]]?:*:*:*) ax_gcc_arch=winchip2 ;;
*66?:*:*:*) ax_gcc_arch=winchip2 ;;
*6[[78]]?:*:*:*) ax_gcc_arch=c3 ;;
*6[[9adf]]?:*:*:*) ax_gcc_arch="c3-2 c3" ;;
esac ;;
esac
if test x"$ax_gcc_arch" = x; then # fallback
case $host_cpu in
i586*) ax_gcc_arch=pentium ;;
i686*) ax_gcc_arch=pentiumpro ;;
esac
fi
;;
sparc*)
AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/])
cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null`
cputype=`echo "$cputype" | tr -d ' -' | $SED 's/SPARCIIi/SPARCII/' |tr $as_cr_LETTERS $as_cr_letters`
case $cputype in
*ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;;
*ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;;
*ultrasparc*) ax_gcc_arch="ultrasparc v9" ;;
*supersparc*|*tms390z5[[05]]*) ax_gcc_arch="supersparc v8" ;;
*hypersparc*|*rt62[[056]]*) ax_gcc_arch="hypersparc v8" ;;
*cypress*) ax_gcc_arch=cypress ;;
esac ;;
alphaev5) ax_gcc_arch=ev5 ;;
alphaev56) ax_gcc_arch=ev56 ;;
alphapca56) ax_gcc_arch="pca56 ev56" ;;
alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;;
alphaev6) ax_gcc_arch=ev6 ;;
alphaev67) ax_gcc_arch=ev67 ;;
alphaev68) ax_gcc_arch="ev68 ev67" ;;
alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;;
alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;;
alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;;
powerpc*)
cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | $SED 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null`
cputype=`echo $cputype | $SED -e 's/ppc//g;s/ *//g'`
case $cputype in
*750*) ax_gcc_arch="750 G3" ;;
*740[[0-9]]*) ax_gcc_arch="$cputype 7400 G4" ;;
*74[[4-5]][[0-9]]*) ax_gcc_arch="$cputype 7450 G4" ;;
*74[[0-9]][[0-9]]*) ax_gcc_arch="$cputype G4" ;;
*970*) ax_gcc_arch="970 G5 power4";;
*POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";;
*POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";;
603ev|8240) ax_gcc_arch="$cputype 603e 603";;
*) ax_gcc_arch=$cputype ;;
esac
ax_gcc_arch="$ax_gcc_arch powerpc"
;;
aarch64)
cpuimpl=`grep 'CPU implementer' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1`
cpuarch=`grep 'CPU architecture' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1`
cpuvar=`grep 'CPU variant' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1`
case $cpuimpl in
0x42) case $cpuarch in
8) case $cpuvar in
0x0) ax_gcc_arch="thunderx2t99 vulcan armv8.1-a armv8-a+lse armv8-a native" ;;
esac
;;
esac
;;
0x43) case $cpuarch in
8) case $cpuvar in
0x0) ax_gcc_arch="thunderx armv8-a native" ;;
0x1) ax_gcc_arch="thunderx+lse armv8.1-a armv8-a+lse armv8-a native" ;;
esac
;;
esac
;;
esac
;;
esac
fi # not cross-compiling
fi # guess arch
if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
if test "x[]m4_default([$1],yes)" = xyes; then # if we require portable code
flag_prefixes="-mtune="
if test "x$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor" = xclang; then flag_prefixes="-march="; fi
# -mcpu=$arch and m$arch generate nonportable code on every arch except
# x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr.
case $host_cpu in i*86|x86_64*|amd64*) flag_prefixes="$flag_prefixes -mcpu= -m";; esac
else
flag_prefixes="-march= -mcpu= -m"
fi
for flag_prefix in $flag_prefixes; do
for arch in $ax_gcc_arch; do
flag="$flag_prefix$arch"
AX_CHECK_COMPILE_FLAG($flag, [if test "x$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor" = xclang; then
if test "x[]m4_default([$1],yes)" = xyes; then
if test "x$flag" = "x-march=$arch"; then flag=-mtune=$arch; fi
fi
fi; ax_cv_gcc_archflag=$flag; break])
done
test "x$ax_cv_gcc_archflag" = xunknown || break
done
fi
fi # $GCC=yes
])
AC_MSG_CHECKING([for gcc architecture flag])
AC_MSG_RESULT($ax_cv_gcc_archflag)
if test "x$ax_cv_gcc_archflag" = xunknown; then
m4_default([$3],:)
else
m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_gcc_archflag"])
fi
])
================================================
FILE: m4/ax_gcc_func_attribute.m4
================================================
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_gcc_func_attribute.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_GCC_FUNC_ATTRIBUTE(ATTRIBUTE)
#
# DESCRIPTION
#
# This macro checks if the compiler supports one of GCC's function
# attributes; many other compilers also provide function attributes with
# the same syntax. Compiler warnings are used to detect supported
# attributes as unsupported ones are ignored by default so quieting
# warnings when using this macro will yield false positives.
#
# The ATTRIBUTE parameter holds the name of the attribute to be checked.
#
# If ATTRIBUTE is supported define HAVE_FUNC_ATTRIBUTE_<ATTRIBUTE>.
#
# The macro caches its result in the ax_cv_have_func_attribute_<attribute>
# variable.
#
# The macro currently supports the following function attributes:
#
# alias
# aligned
# alloc_size
# always_inline
# artificial
# cold
# const
# constructor
# constructor_priority for constructor attribute with priority
# deprecated
# destructor
# dllexport
# dllimport
# error
# externally_visible
# fallthrough
# flatten
# format
# format_arg
# gnu_inline
# hot
# ifunc
# leaf
# malloc
# noclone
# noinline
# nonnull
# noreturn
# nothrow
# optimize
# pure
# sentinel
# sentinel_position
# unused
# used
# visibility
# warning
# warn_unused_result
# weak
# weakref
#
# Unsupported function attributes will be tested with a prototype
# returning an int and not accepting any arguments and the result of the
# check might be wrong or meaningless so use with care.
#
# LICENSE
#
# Copyright (c) 2013 Gabriele Svelto <gabriele.svelto@gmail.com>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
#serial 9
AC_DEFUN([AX_GCC_FUNC_ATTRIBUTE], [
AS_VAR_PUSHDEF([ac_var], [ax_cv_have_func_attribute_$1])
AC_CACHE_CHECK([for __attribute__(($1))], [ac_var], [
AC_LINK_IFELSE([AC_LANG_PROGRAM([
m4_case([$1],
[alias], [
int foo( void ) { return 0; }
int bar( void ) __attribute__(($1("foo")));
],
[aligned], [
int foo( void ) __attribute__(($1(32)));
],
[alloc_size], [
void *foo(int a) __attribute__(($1(1)));
],
[always_inline], [
inline __attribute__(($1)) int foo( void ) { return 0; }
],
[artificial], [
inline __attribute__(($1)) int foo( void ) { return 0; }
],
[cold], [
int foo( void ) __attribute__(($1));
],
[const], [
int foo( void ) __attribute__(($1));
],
[constructor_priority], [
int foo( void ) __attribute__((__constructor__(65535/2)));
],
[constructor], [
int foo( void ) __attribute__(($1));
],
[deprecated], [
int foo( void ) __attribute__(($1("")));
],
[destructor], [
int foo( void ) __attribute__(($1));
],
[dllexport], [
__attribute__(($1)) int foo( void ) { return 0; }
],
[dllimport], [
int foo( void ) __attribute__(($1));
],
[error], [
int foo( void ) __attribute__(($1("")));
],
[externally_visible], [
int foo( void ) __attribute__(($1));
],
[fallthrough], [
int foo( void ) {switch (0) { case 1: __attribute__(($1)); case 2: break ; }};
],
[flatten], [
int foo( void ) __attribute__(($1));
],
[format], [
int foo(const char *p, ...) __attribute__(($1(printf, 1, 2)));
],
[format_arg], [
char *foo(const char *p) __attribute__(($1(1)));
],
[gnu_inline], [
inline __attribute__(($1)) int foo( void ) { return 0; }
],
[hot], [
int foo( void ) __attribute__(($1));
],
[ifunc], [
int my_foo( void ) { return 0; }
static int (*resolve_foo(void))(void) { return my_foo; }
int foo( void ) __attribute__(($1("resolve_foo")));
],
[leaf], [
__attribute__(($1)) int foo( void ) { return 0; }
],
[malloc], [
void *foo( void ) __attribute__(($1));
],
[noclone], [
int foo( void ) __attribute__(($1));
],
[noinline], [
__attribute__(($1)) int foo( void ) { return 0; }
],
[nonnull], [
int foo(char *p) __attribute__(($1(1)));
],
[noreturn], [
void foo( void ) __attribute__(($1));
],
[nothrow], [
int foo( void ) __attribute__(($1));
],
[optimize], [
__attribute__(($1(3))) int foo( void ) { return 0; }
],
[pure], [
int foo( void ) __attribute__(($1));
],
[sentinel], [
int foo(void *p, ...) __attribute__(($1));
],
[sentinel_position], [
int foo(void *p, ...) __attribute__(($1(1)));
],
[returns_nonnull], [
void *foo( void ) __attribute__(($1));
],
[unused], [
int foo( void ) __attribute__(($1));
],
[used], [
int foo( void ) __attribute__(($1));
],
[visibility], [
int foo_def( void ) __attribute__(($1("default")));
int foo_hid( void ) __attribute__(($1("hidden")));
int foo_int( void ) __attribute__(($1("internal")));
int foo_pro( void ) __attribute__(($1("protected")));
],
[warning], [
int foo( void ) __attribute__(($1("")));
],
[warn_unused_result], [
int foo( void ) __attribute__(($1));
],
[weak], [
int foo( void ) __attribute__(($1));
],
[weakref], [
static int foo( void ) { return 0; }
static int bar( void ) __attribute__(($1("foo")));
],
[
m4_warn([syntax], [Unsupported attribute $1, the test may fail])
int foo( void ) __attribute__(($1));
]
)], [])
],
dnl GCC doesn't exit with an error if an unknown attribute is
dnl provided but only outputs a warning, so accept the attribute
dnl only if no warning were issued.
[AS_IF([test -s conftest.err],
[AS_VAR_SET([ac_var], [no])],
[AS_VAR_SET([ac_var], [yes])])],
[AS_VAR_SET([ac_var], [no])])
])
AS_IF([test yes = AS_VAR_GET([ac_var])],
[AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_FUNC_ATTRIBUTE_$1), 1,
[Define to 1 if the system has the `$1' function attribute])], [])
AS_VAR_POPDEF([ac_var])
])
================================================
FILE: m4/ax_gcc_x86_cpuid.m4
================================================
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_GCC_X86_CPUID(OP)
# AX_GCC_X86_CPUID_COUNT(OP, COUNT)
#
# DESCRIPTION
#
# On Pentium and later x86 processors, with gcc or a compiler that has a
# compatible syntax for inline assembly instructions, run a small program
# that executes the cpuid instruction with input OP. This can be used to
# detect the CPU type. AX_GCC_X86_CPUID_COUNT takes an additional COUNT
# parameter that gets passed into register ECX before calling cpuid.
#
# On output, the values of the eax, ebx, ecx, and edx registers are stored
# as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable
# ax_cv_gcc_x86_cpuid_OP.
#
# If the cpuid instruction fails (because you are running a
# cross-compiler, or because you are not using gcc, or because you are on
# a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP
# is set to the string "unknown".
#
# This macro mainly exists to be used in AX_GCC_ARCHFLAG.
#
# LICENSE
#
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
# Copyright (c) 2008 Matteo Frigo
# Copyright (c) 2015 Michael Petch <mpetch@capp-sysware.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 10
AC_DEFUN([AX_GCC_X86_CPUID],
[AX_GCC_X86_CPUID_COUNT($1, 0)
])
AC_DEFUN([AX_GCC_X86_CPUID_COUNT],
[AC_REQUIRE([AC_PROG_CC])
AC_LANG_PUSH([C])
AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1,
[AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
int op = $1, level = $2, eax, ebx, ecx, edx;
FILE *f;
__asm__ __volatile__ ("xchg %%ebx, %1\n"
"cpuid\n"
"xchg %%ebx, %1\n"
: "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx)
: "a" (op), "2" (level));
f = fopen("conftest_cpuid", "w"); if (!f) return 1;
fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
fclose(f);
return 0;
])],
[ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid],
[ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid],
[ax_cv_gcc_x86_cpuid_$1=unknown])])
AC_LANG_POP([C])
])
================================================
FILE: m4/ax_tls.m4
================================================
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_tls.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_TLS([action-if-found], [action-if-not-found])
#
# DESCRIPTION
#
# Provides a test for the compiler support of thread local storage (TLS)
# extensions. Defines TLS if it is found. Currently knows about C++11,
# GCC/ICC, and MSVC. I think SunPro uses the same as GCC, and Borland
# apparently supports either.
#
# LICENSE
#
# Copyright (c) 2008 Alan Woodland <ajw05@aber.ac.uk>
# Copyright (c) 2010 Diego Elio Petteno` <flameeyes@gmail.com>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 15
AC_DEFUN([AX_TLS], [
AC_MSG_CHECKING([for thread local storage (TLS) class])
AC_CACHE_VAL([ac_cv_tls],
[for ax_tls_keyword in thread_local _Thread_local __thread '__declspec(thread)' none; do
AS_CASE([$ax_tls_keyword],
[none], [ac_cv_tls=none ; break],
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
[#include <stdlib.h>],
[static $ax_tls_keyword int bar;]
)],
[ac_cv_tls=$ax_tls_keyword ; break],
[ac_cv_tls=none]
)]
)
done ]
)
AC_MSG_RESULT([$ac_cv_tls])
AS_IF([test "$ac_cv_tls" != "none"],
[AC_DEFINE_UNQUOTED([TLS],[$ac_cv_tls],[If the compiler supports a TLS storage class, define it to that here])
m4_ifnblank([$1],[$1],[[:]])],
[m4_ifnblank([$2],[$2],[[:]])])
])
================================================
FILE: m4/extensions.m4
================================================
dnl Provide AC_USE_SYSTEM_EXTENSIONS for old autoconf machines.
AC_DEFUN([ACX_USE_SYSTEM_EXTENSIONS],[
ifdef([AC_USE_SYSTEM_EXTENSIONS],[
AC_USE_SYSTEM_EXTENSIONS
],[
AC_BEFORE([$0], [AC_COMPILE_IFELSE])
AC_BEFORE([$0], [AC_RUN_IFELSE])
AC_REQUIRE([AC_GNU_SOURCE])
AC_REQUIRE([AC_AIX])
AC_REQUIRE([AC_MINIX])
AH_VERBATIM([__EXTENSIONS__],
[/* Enable extensions on Solaris. */
#ifndef __EXTENSIONS__
# undef __EXTENSIONS__
#endif
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
#endif
#ifndef _TANDEM_SOURCE
# undef _TANDEM_SOURCE
#endif])
AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__],
[ac_cv_safe_to_define___extensions__],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([
# define __EXTENSIONS__ 1
AC_INCLUDES_DEFAULT])],
[ac_cv_safe_to_define___extensions__=yes],
[ac_cv_safe_to_define___extensions__=no])])
test $ac_cv_safe_to_define___extensions__ = yes &&
AC_DEFINE([__EXTENSIONS__])
AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
AC_DEFINE([_TANDEM_SOURCE])
])
])
================================================
FILE: m4/host-cpu-c-abi.m4
================================================
# host-cpu-c-abi.m4
# serial 18
dnl Copyright (C) 2002-2024 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This file is offered as-is, without any warranty.
dnl From Bruno Haible and Sam Steingold.
dnl Sets the HOST_CPU variable to the canonical name of the CPU.
dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its
dnl C language ABI (application binary interface).
dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in
dnl config.h.
dnl
dnl This canonical name can be used to select a particular assembly language
dnl source file that will interoperate with C code on the given host.
dnl
dnl For example:
dnl * 'i386' and 'sparc' are different canonical names, because code for i386
dnl will not run on SPARC CPUs and vice versa. They have different
dnl instruction sets.
dnl * 'sparc' and 'sparc64' are different canonical names, because code for
dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code
dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit
dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit
dnl mode, but not both.
dnl * 'mips' and 'mipsn32' are different canonical names, because they use
dnl different argument passing and return conventions for C functions, and
dnl although the instruction set of 'mips' is a large subset of the
dnl instruction set of 'mipsn32'.
dnl * 'mipsn32' and 'mips64' are different canonical names, because they use
dnl different sizes for the C types like 'int' and 'void *', and although
dnl the instruction sets of 'mipsn32' and 'mips64' are the same.
dnl * The same canonical name is used for different endiannesses. You can
dnl determine the endianness through preprocessor symbols:
dnl - 'arm': test __ARMEL__.
dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL.
dnl - 'powerpc64': test __BIG_ENDIAN__ vs. __LITTLE_ENDIAN__.
dnl * The same name 'i386' is used for CPUs of type i386, i486, i586
dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because
dnl - Instructions that do not exist on all of these CPUs (cmpxchg,
dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your
dnl assembly language source files use such instructions, you will
dnl need to make the distinction.
dnl - Speed of execution of the common instruction set is reasonable across
dnl the entire family of CPUs. If you have assembly language source files
dnl that are optimized for particular CPU types (like GNU gmp has), you
dnl will need to make the distinction.
dnl See <https://en.wikipedia.org/wiki/X86_instruction_listings>.
AC_DEFUN([gl_HOST_CPU_C_ABI],
[
AC_REQUIRE([AC_CANONICAL_HOST])
AC_REQUIRE([gl_C_ASM])
AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi],
[case "$host_cpu" in
changequote(,)dnl
i[34567]86 )
changequote([,])dnl
gl_cv_host_cpu_c_abi=i386
;;
x86_64 )
# On x86_64 systems, the C compiler may be generating code in one of
# these ABIs:
# - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
# - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
# with native Windows (mingw, MSVC).
# - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
# - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if (defined __x86_64__ || defined __amd64__ \
|| defined _M_X64 || defined _M_AMD64)
int ok;
#else
error fail
#endif
]])],
[AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if defined __ILP32__ || defined _ILP32
int ok;
#else
error fail
#endif
]])],
[gl_cv_host_cpu_c_abi=x86_64-x32],
[gl_cv_host_cpu_c_abi=x86_64])],
[gl_cv_host_cpu_c_abi=i386])
;;
changequote(,)dnl
alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
changequote([,])dnl
gl_cv_host_cpu_c_abi=alpha
;;
arm* | aarch64 )
# Assume arm with EABI.
# On arm64 systems, the C compiler may be generating code in one of
# these ABIs:
# - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
# - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
# - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#ifdef __aarch64__
int ok;
#else
error fail
#endif
]])],
[AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if defined __ILP32__ || defined _ILP32
int ok;
#else
error fail
#endif
]])],
[gl_cv_host_cpu_c_abi=arm64-ilp32],
[gl_cv_host_cpu_c_abi=arm64])],
[# Don't distinguish little-endian and big-endian arm, since they
# don't require different machine code for simple operations and
# since the user can distinguish them through the preprocessor
# defines __ARMEL__ vs. __ARMEB__.
# But distinguish arm which passes floating-point arguments and
# return values in integer registers (r0, r1, ...) - this is
# gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which
# passes them in float registers (s0, s1, ...) and double registers
# (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer
# sets the preprocessor defines __ARM_PCS (for the first case) and
# __ARM_PCS_VFP (for the second case), but older GCC does not.
echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c
# Look for a reference to the register d0 in the .s file.
AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then
gl_cv_host_cpu_c_abi=armhf
else
gl_cv_host_cpu_c_abi=arm
fi
rm -f conftest*
])
;;
hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
# On hppa, the C compiler may be generating 32-bit code or 64-bit
# code. In the latter case, it defines _LP64 and __LP64__.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#ifdef __LP64__
int ok;
#else
error fail
#endif
]])],
[gl_cv_host_cpu_c_abi=hppa64],
[gl_cv_host_cpu_c_abi=hppa])
;;
ia64* )
# On ia64 on HP-UX, the C compiler may be generating 64-bit code or
# 32-bit code. In the latter case, it defines _ILP32.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#ifdef _ILP32
int ok;
#else
error fail
#endif
]])],
[gl_cv_host_cpu_c_abi=ia64-ilp32],
[gl_cv_host_cpu_c_abi=ia64])
;;
mips* )
# We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
# at 32.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
int ok;
#else
error fail
#endif
]])],
[gl_cv_host_cpu_c_abi=mips64],
[# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
# may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
# In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
# may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIO32.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if (_MIPS_SIM == _ABIN32)
int ok;
#else
error fail
#endif
]])],
[gl_cv_host_cpu_c_abi=mipsn32],
[gl_cv_host_cpu_c_abi=mips])])
;;
powerpc* )
# Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
# No need to distinguish them here; the caller may distinguish
# them based on the OS.
# On powerpc64 systems, the C compiler may still be generating
# 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
# be generating 64-bit code.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if defined __powerpc64__ || defined __LP64__
int ok;
#else
error fail
#endif
]])],
[# On powerpc64, there are two ABIs on Linux: The AIX compatible
# one and the ELFv2 one. The latter defines _CALL_ELF=2.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if defined _CALL_ELF && _CALL_ELF == 2
int ok;
#else
error fail
#endif
]])],
[gl_cv_host_cpu_c_abi=powerpc64-elfv2],
[gl_cv_host_cpu_c_abi=powerpc64])
],
[gl_cv_host_cpu_c_abi=powerpc])
;;
rs6000 )
gl_cv_host_cpu_c_abi=powerpc
;;
riscv32 | riscv64 )
# There are 2 architectures (with variants): rv32* and rv64*.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if __riscv_xlen == 64
int ok;
#else
error fail
#endif
]])],
[cpu=riscv64],
[cpu=riscv32])
# There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
# Size of 'long' and 'void *':
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if defined __LP64__
int ok;
#else
error fail
#endif
]])],
[main_abi=lp64],
[main_abi=ilp32])
# Float ABIs:
# __riscv_float_abi_double:
# 'float' and 'double' are passed in floating-point registers.
# __riscv_float_abi_single:
# 'float' are passed in floating-point registers.
# __riscv_float_abi_soft:
# No values are passed in floating-point registers.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if defined __riscv_float_abi_double
int ok;
#else
error fail
#endif
]])],
[float_abi=d],
[AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if defined __riscv_float_abi_single
int ok;
#else
error fail
#endif
]])],
[float_abi=f],
[float_abi=''])
])
gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
;;
s390* )
# On s390x, the C compiler may be generating 64-bit (= s390x) code
# or 31-bit (= s390) code.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if defined __LP64__ || defined __s390x__
int ok;
#else
error fail
#endif
]])],
[gl_cv_host_cpu_c_abi=s390x],
[gl_cv_host_cpu_c_abi=s390])
;;
sparc | sparc64 )
# UltraSPARCs running Linux have `uname -m` = "sparc64", but the
# C compiler still generates 32-bit code.
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[#if defined __sparcv9 || defined __arch64__
int ok;
#else
error fail
#endif
]])],
[gl_cv_host_cpu_c_abi=sparc64],
[gl_cv_host_cpu_c_abi=sparc])
;;
*)
gl_cv_host_cpu_c_abi="$host_cpu"
;;
esac
])
dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same.
HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'`
HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi"
AC_SUBST([HOST_CPU])
AC_SUBST([HOST_CPU_C_ABI])
# This was
# AC_DEFINE_UNQUOTED([__${HOST_CPU}__])
# AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__])
# earlier, but KAI C++ 3.2d doesn't like this.
sed -e 's/-/_/g' >> confdefs.h <<EOF
#ifndef __${HOST_CPU}__
#define __${HOST_CPU}__ 1
#endif
#ifndef __${HOST_CPU_C_ABI}__
#define __${HOST_CPU_C_ABI}__ 1
#endif
EOF
AH_TOP([/* CPU and C ABI indicator */
#ifndef __i386__
#undef __i386__
#endif
#ifndef __x86_64_x32__
#undef __x86_64_x32__
#endif
#ifndef __x86_64__
#undef __x86_64__
#endif
#ifndef __alpha__
#undef __alpha__
#endif
#ifndef __arm__
#undef __arm__
#endif
#ifndef __armhf__
#undef __armhf__
#endif
#ifndef __arm64_ilp32__
#undef __arm64_ilp32__
#endif
#ifndef __arm64__
#undef __arm64__
#endif
#ifndef __hppa__
#undef __hppa__
#endif
#ifndef __hppa64__
#undef __hppa64__
#endif
#ifndef __ia64_ilp32__
#undef __ia64_ilp32__
#endif
#ifndef __ia64__
#undef __ia64__
#endif
#ifndef __loongarch64__
#undef __loongarch64__
#endif
#ifndef __m68k__
#undef __m68k__
#endif
#ifndef __mips__
#undef __mips__
#endif
#ifndef __mipsn32__
#undef __mipsn32__
#endif
#ifndef __mips64__
#undef __mips64__
#endif
#ifndef __powerpc__
#undef __powerpc__
#endif
#ifndef __powerpc64__
#undef __powerpc64__
#endif
#ifndef __powerpc64_elfv2__
#undef __powerpc64_elfv2__
#endif
#ifndef __riscv32__
#undef __riscv32__
#endif
#ifndef __riscv64__
#undef __riscv64__
#endif
#ifndef __riscv32_ilp32__
#undef __riscv32_ilp32__
#endif
#ifndef __riscv32_ilp32f__
#undef __riscv32_ilp32f__
#endif
#ifndef __riscv32_ilp32d__
#undef __riscv32_ilp32d__
#endif
#ifndef __riscv64_ilp32__
#undef __riscv64_ilp32__
#endif
#ifndef __riscv64_ilp32f__
#undef __riscv64_ilp32f__
#endif
#ifndef __riscv64_ilp32d__
#undef __riscv64_ilp32d__
#endif
#ifndef __riscv64_lp64__
#undef __riscv64_lp64__
#endif
#ifndef __riscv64_lp64f__
#undef __riscv64_lp64f__
#endif
#ifndef __riscv64_lp64d__
#undef __riscv64_lp64d__
#endif
#ifndef __s390__
#undef __s390__
#endif
#ifndef __s390x__
#undef __s390x__
#endif
#ifndef __sh__
#undef __sh__
#endif
#ifndef __sparc__
#undef __sparc__
#endif
#ifndef __sparc64__
#undef __sparc64__
#endif
])
])
dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI
dnl (application binary interface) is a 32-bit one, to 'no' if it is a 64-bit
dnl one.
dnl This is a simplified variant of gl_HOST_CPU_C_ABI.
AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT],
[
AC_REQUIRE([AC_CANONICAL_HOST])
AC_CACHE_CHECK([32-bit host C ABI], [gl_cv_host_cpu_c_abi_32bit],
[case "$host_cpu" in
# CPUs that only support a 32-bit ABI.
arc \
| bfin \
| cris* \
| csky \
| epiphany \
| ft32 \
| h8300 \
| m68k \
| microblaze | microblazeel \
| nds32 | nds32le | nds32be \
| nios2 | nios2eb | nios2el \
| or1k* \
| or32 \
| sh | sh[1234] | sh[1234]e[lb] \
| tic6x \
| xtensa* )
gl_cv_host_cpu_c_abi_32bit=yes
;;
# CPUs that only support a 64-bit ABI.
changequote(,)dnl
alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
| mmix )
changequote([,])dnl
gl_cv_host_cpu_c_abi_32bit=no
;;
*)
if test -n "$gl_cv_host_cpu_c_abi"; then
dnl gl_HOST_CPU_C_ABI has already been run. Use its result.
case "$gl_cv_host_cpu_c_abi" in
i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
gl_cv_host_cpu_c_abi_32bit=yes ;;
x86_64 | alpha | arm64 | aarch64c | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
gl_cv_host_cpu_c_abi_32bit=no ;;
*)
gl_cv_host_cpu_c_abi_32bit=unknown ;;
esac
else
gl_cv_host_cpu_c_abi_32bit=unknown
fi
if test $gl_cv_host_cpu_c_abi_32bit = unknown; then
AC_COMPILE_IFELSE(
[AC_LANG_SOURCE(
[[int test_pointer_size[sizeof (void *) - 5];
]])],
[gl_cv_host_cpu_c_abi_32bit=no],
[gl_cv_host_cpu_c_abi_32bit=yes])
fi
;;
esac
])
HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
])
================================================
FILE: m4/lib-ld.m4
================================================
# lib-ld.m4 serial 3 (gettext-0.13)
dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl Subroutines of libtool.m4,
dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
dnl with libtool.m4.
dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
AC_DEFUN([AC_LIB_PROG_LD_GNU],
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
acl_cv_prog_gnu_ld=yes ;;
*)
acl_cv_prog_gnu_ld=no ;;
esac])
with_gnu_ld=$acl_cv_prog_gnu_ld
])
dnl From libtool-1.4. Sets the variable LD.
AC_DEFUN([AC_LIB_PROG_LD],
[AC_ARG_WITH(gnu-ld,
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_CANONICAL_HOST])dnl
# Prepare PATH_SEPARATOR.
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
echo "#! /bin/sh" >conf$$.sh
echo "exit 0" >>conf$$.sh
chmod +x conf$$.sh
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
PATH_SEPARATOR=';'
else
PATH_SEPARATOR=:
fi
rm -f conf$$.sh
fi
ac_prog=ld
if test "$GCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
AC_MSG_CHECKING([for ld used by GCC])
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return which upsets mingw
ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
esac
case $ac_prog in
# Accept absolute paths.
[[\\/]* | [A-Za-z]:[\\/]*)]
[re_direlt='/[^/][^/]*/\.\./']
# Canonicalize the path of ld
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
done
test -z "$LD" && LD="$ac_prog"
;;
"")
# If it fails, then pretend we aren't using GCC.
ac_prog=ld
;;
*)
# If it is relative, then search for the first ld in PATH.
with_gnu_ld=unknown
;;
esac
elif test "$with_gnu_ld" = yes; then
AC_MSG_CHECKING([for GNU ld])
else
AC_MSG_CHECKING([for non-GNU ld])
fi
AC_CACHE_VAL(acl_cv_path_LD,
[if test -z "$LD"; then
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
for ac_dir in $PATH; do
test -z "$ac_dir" && ac_dir=.
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
acl_cv_path_LD="$ac_dir/$ac_prog"
# Check to see if the program is GNU ld. I'd rather use --version,
# but apparently some GNU ld's only accept -v.
# Break only if it was the GNU/non-GNU ld that we prefer.
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
*GNU* | *'with BFD'*)
test "$with_gnu_ld" != no && break ;;
*)
test "$with_gnu_ld" != yes && break ;;
esac
fi
done
IFS="$ac_save_ifs"
else
acl_cv_path_LD="$LD" # Let the user override the test with a path.
fi])
LD="$acl_cv_path_LD"
if test -n "$LD"; then
AC_MSG_RESULT($LD)
else
AC_MSG_RESULT(no)
fi
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
AC_LIB_PROG_LD_GNU
])
================================================
FILE: m4/lib-link.m4
================================================
# lib-link.m4 serial 13 (gettext-0.17)
dnl Copyright (C) 2001-2007 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
AC_PREREQ(2.54)
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
dnl the libraries corresponding to explicit and implicit dependencies.
dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
dnl augments the CPPFLAGS variable.
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
AC_DEFUN([AC_LIB_LINKFLAGS],
[
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
AC_REQUIRE([AC_LIB_RPATH])
define([Name],[translit([$1],[./-], [___])])
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
AC_LIB_LINKFLAGS_BODY([$1], [$2])
ac_cv_lib[]Name[]_libs="$LIB[]NAME"
ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
])
LIB[]NAME="$ac_cv_lib[]Name[]_libs"
LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
AC_SUBST([LIB]NAME)
AC_SUBST([LTLIB]NAME)
AC_SUBST([LIB]NAME[_PREFIX])
dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
dnl results of this search when this library appears as a dependency.
HAVE_LIB[]NAME=yes
undefine([Name])
undefine([NAME])
])
dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
dnl searches for libname and the libraries corresponding to explicit and
dnl implicit dependencies, together with the specified include files and
dnl the ability to compile and link the specified testcode. If found, it
dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
[
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
AC_REQUIRE([AC_LIB_RPATH])
define([Name],[translit([$1],[./-], [___])])
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
dnl accordingly.
AC_LIB_LINKFLAGS_BODY([$1], [$2])
dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
dnl because if the user has installed lib[]Name and not disabled its use
dnl via --without-lib[]Name-prefix, he wants to use it.
ac_save_CPPFLAGS="$CPPFLAGS"
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
ac_save_LIBS="$LIBS"
LIBS="$LIBS $LIB[]NAME"
AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
LIBS="$ac_save_LIBS"
])
if test "$ac_cv_lib[]Name" = yes; then
HAVE_LIB[]NAME=yes
AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
AC_MSG_CHECKING([how to link with lib[]$1])
AC_MSG_RESULT([$LIB[]NAME])
else
HAVE_LIB[]NAME=no
dnl If $LIB[]NAME didn't lead to a usable library, we don't need
dnl $INC[]NAME either.
CPPFLAGS="$ac_save_CPPFLAGS"
LIB[]NAME=
LTLIB[]NAME=
LIB[]NAME[]_PREFIX=
fi
AC_SUBST([HAVE_LIB]NAME)
AC_SUBST([LIB]NAME)
AC_SUBST([LTLIB]NAME)
AC_SUBST([LIB]NAME[_PREFIX])
undefine([Name])
undefine([NAME])
])
dnl Determine the platform dependent parameters needed to use rpath:
dnl acl_libext,
dnl acl_shlibext,
dnl acl_hardcode_libdir_flag_spec,
dnl acl_hardcode_libdir_separator,
dnl acl_hardcode_direct,
dnl acl_hardcode_minus_L.
AC_DEFUN([AC_LIB_RPATH],
[
dnl Tell automake >= 1.10 to complain if config.rpath is missing.
m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
. ./conftest.sh
rm -f ./conftest.sh
acl_cv_rpath=done
])
wl="$acl_cv_wl"
acl_libext="$acl_cv_libext"
acl_shlibext="$acl_cv_shlibext"
acl_libname_spec="$acl_cv_libname_spec"
acl_library_names_spec="$acl_cv_library_names_spec"
acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
acl_hardcode_direct="$acl_cv_hardcode_direct"
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
dnl Determine whether the user wants rpath handling at all.
AC_ARG_ENABLE(rpath,
[ --disable-rpath do not hardcode runtime library paths],
:, enable_rpath=yes)
])
dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
dnl the libraries corresponding to explicit and implicit dependencies.
dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
[
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
dnl Autoconf >= 2.61 supports dots in --with options.
define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])])
dnl By default, look in $includedir and $libdir.
use_additional=yes
AC_LIB_WITH_FINAL_PREFIX([
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
])
AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix],
[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
--without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir],
[
if test "X$withval" = "Xno"; then
use_additional=no
else
if test "X$withval" = "X"; then
AC_LIB_WITH_FINAL_PREFIX([
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
])
else
additional_includedir="$withval/include"
additional_libdir="$withval/$acl_libdirstem"
fi
fi
])
dnl Search the library and its dependencies in $additional_libdir and
dnl $LDFLAGS. Using breadth-first-seach.
LIB[]NAME=
LTLIB[]NAME=
INC[]NAME=
LIB[]NAME[]_PREFIX=
rpathdirs=
ltrpathdirs=
names_already_handled=
names_next_round='$1 $2'
while test -n "$names_next_round"; do
names_this_round="$names_next_round"
names_next_round=
for name in $names_this_round; do
already_handled=
for n in $names_already_handled; do
if test "$n" = "$name"; then
already_handled=yes
break
fi
done
if test -z "$already_handled"; then
names_already_handled="$names_already_handled $name"
dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
dnl or AC_LIB_HAVE_LINKFLAGS call.
uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
eval value=\"\$HAVE_LIB$uppername\"
if test -n "$value"; then
if test "$value" = yes; then
eval value=\"\$LIB$uppername\"
test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
eval value=\"\$LTLIB$uppername\"
test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
else
dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
dnl that this library doesn't exist. So just drop it.
:
fi
else
dnl Search the library lib$name in $additional_libdir and $LDFLAGS
dnl and the already constructed $LIBNAME/$LTLIBNAME.
found_dir=
found_la=
found_so=
found_a=
eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
if test -n "$acl_shlibext"; then
shrext=".$acl_shlibext" # typically: shrext=.so
else
shrext=
fi
if test $use_additional = yes; then
dir="$additional_libdir"
dnl The same code as in the loop below:
dnl First look for a shared library.
if test -n "$acl_shlibext"; then
if test -f "$dir/$libname$shrext"; then
found_dir="$dir"
found_so="$dir/$libname$shrext"
else
if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
ver=`(cd "$dir" && \
for f in "$libname$shrext".*; do echo "$f"; done \
| sed -e "s,^$libname$shrext\\\\.,," \
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
| sed 1q ) 2>/dev/null`
if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
found_dir="$dir"
found_so="$dir/$libname$shrext.$ver"
fi
else
eval library_names=\"$acl_library_names_spec\"
for f in $library_names; do
if test -f "$dir/$f"; then
found_dir="$dir"
found_so="$dir/$f"
break
fi
done
fi
fi
fi
dnl Then look for a static library.
if test "X$found_dir" = "X"; then
if test -f "$dir/$libname.$acl_libext"; then
found_dir="$dir"
found_a="$dir/$libname.$acl_libext"
fi
fi
if test "X$found_dir" != "X"; then
if test -f "$dir/$libname.la"; then
found_la="$dir/$libname.la"
fi
fi
fi
if test "X$found_dir" = "X"; then
for x in $LDFLAGS $LTLIB[]NAME; do
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
case "$x" in
-L*)
dir=`echo "X$x" | sed -e 's/^X-L//'`
dnl First look for a shared library.
if test -n "$acl_shlibext"; then
if test -f "$dir/$libname$shrext"; then
found_dir="$dir"
found_so="$dir/$libname$shrext"
else
if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
ver=`(cd "$dir" && \
for f in "$libname$shrext".*; do echo "$f"; done \
| sed -e "s,^$libname$shrext\\\\.,," \
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
| sed 1q ) 2>/dev/null`
if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
found_dir="$dir"
found_so="$dir/$libname$shrext.$ver"
fi
else
eval library_names=\"$acl_library_names_spec\"
for f in $library_names; do
if test -f "$dir/$f"; then
found_dir="$dir"
found_so="$dir/$f"
break
fi
done
fi
fi
fi
dnl Then look for a static library.
if test "X$found_dir" = "X"; then
if test -f "$dir/$libname.$acl_libext"; then
found_dir="$dir"
found_a="$dir/$libname.$acl_libext"
fi
fi
if test "X$found_dir" != "X"; then
if test -f "$dir/$libname.la"; then
found_la="$dir/$libname.la"
fi
fi
;;
esac
if test "X$found_dir" != "X"; then
break
fi
done
fi
if test "X$found_dir" != "X"; then
dnl Found the library.
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
if test "X$found_so" != "X"; then
dnl Linking with a shared library. We attempt to hardcode its
dnl directory into the executable's runpath, unless it's the
dnl standard /usr/lib.
if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
dnl No hardcoding is needed.
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
else
dnl Use an explicit option to hardcode DIR into the resulting
dnl binary.
dnl Potentially add DIR to ltrpathdirs.
dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
haveit=
for x in $ltrpathdirs; do
if test "X$x" = "X$found_dir"; then
haveit=yes
break
fi
done
if test -z "$haveit"; then
ltrpathdirs="$ltrpathdirs $found_dir"
fi
dnl The hardcoding into $LIBNAME is system dependent.
if test "$acl_hardcode_direct" = yes; then
dnl Using DIR/libNAME.so during linking hardcodes DIR into the
dnl resulting binary.
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
else
if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
dnl Use an explicit option to hardcode DIR into the resulting
dnl binary.
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
dnl Potentially add DIR to rpathdirs.
dnl The rpathdirs will be appended to $LIBNAME at the end.
haveit=
for x in $rpathdirs; do
if test "X$x" = "X$found_dir"; then
haveit=yes
break
fi
done
if test -z "$haveit"; then
rpathdirs="$rpathdirs $found_dir"
fi
else
dnl Rely on "-L$found_dir".
dnl But don't add it if it's already contained in the LDFLAGS
dnl or the already constructed $LIBNAME
haveit=
for x in $LDFLAGS $LIB[]NAME; do
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
if test "X$x" = "X-L$found_dir"; then
haveit=yes
break
fi
done
if test -z "$haveit"; then
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
fi
if test "$acl_hardcode_minus_L" != no; then
dnl FIXME: Not sure whether we should use
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
dnl here.
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
else
dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
dnl here, because this doesn't fit in flags passed to the
dnl compiler. So give up. No hardcoding. This affects only
dnl very old systems.
dnl FIXME: Not sure whether we should use
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
dnl here.
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
fi
fi
fi
fi
else
if test "X$found_a" != "X"; then
dnl Linking with a static library.
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
else
dnl We shouldn't come here, but anyway it's good to have a
dnl fallback.
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
fi
fi
dnl Assume the include files are nearby.
additional_includedir=
case "$found_dir" in
*/$acl_libdirstem | */$acl_libdirstem/)
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
LIB[]NAME[]_PREFIX="$basedir"
additional_includedir="$basedir/include"
;;
esac
if test "X$additional_includedir" != "X"; then
dnl Potentially add $additional_includedir to $INCNAME.
dnl But don't add it
dnl 1. if it's the standard /usr/include,
dnl 2. if it's /usr/local/include and we are using GCC on Linux,
dnl 3. if it's already present in $CPPFLAGS or the already
dnl constructed $INCNAME,
dnl 4. if it doesn't exist as a directory.
if test "X$additional_includedir" != "X/usr/include"; then
haveit=
if test "X$additional_includedir" = "X/usr/local/include"; then
if test -n "$GCC"; then
case $hos
gitextract_6o7n74ws/
├── .github/
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── .travis.yml
├── COPYING
├── ChangeLog
├── Dockerfile
├── Makefile.am
├── README.md
├── autogen.sh
├── config/
│ └── config.rpath
├── configure.ac
├── debian/
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── copyright
│ ├── dirs
│ ├── docs
│ ├── install
│ ├── rules
│ └── source/
│ └── format
├── install-sh
├── m4/
│ ├── ac_check_aio.m4
│ ├── ac_check_pgsql.m4
│ ├── acx_pthread.m4
│ ├── ax_check_compile_flag.m4
│ ├── ax_compiler_vendor.m4
│ ├── ax_gcc_archflag.m4
│ ├── ax_gcc_func_attribute.m4
│ ├── ax_gcc_x86_cpuid.m4
│ ├── ax_tls.m4
│ ├── extensions.m4
│ ├── host-cpu-c-abi.m4
│ ├── lib-ld.m4
│ ├── lib-link.m4
│ ├── lib-prefix.m4
│ ├── pkg.m4
│ ├── sb_autoconf_compat.m4
│ ├── sb_check_mysql.m4
│ ├── sb_concurrency_kit.m4
│ └── sb_luajit.m4
├── missing
├── mkinstalldirs
├── rpm/
│ └── sysbench.spec
├── scripts/
│ └── buildpack.sh
├── snap/
│ └── snapcraft.yaml.in
├── src/
│ ├── Makefile.am
│ ├── db_driver.c
│ ├── db_driver.h
│ ├── drivers/
│ │ ├── Makefile.am
│ │ ├── mysql/
│ │ │ ├── Makefile.am
│ │ │ └── drv_mysql.c
│ │ └── pgsql/
│ │ ├── Makefile.am
│ │ └── drv_pgsql.c
│ ├── lua/
│ │ ├── Makefile.am
│ │ ├── bulk_insert.lua
│ │ ├── empty-test.lua
│ │ ├── internal/
│ │ │ ├── Makefile.am
│ │ │ ├── sysbench.cmdline.lua
│ │ │ ├── sysbench.histogram.lua
│ │ │ ├── sysbench.lua
│ │ │ ├── sysbench.rand.lua
│ │ │ └── sysbench.sql.lua
│ │ ├── oltp_common.lua
│ │ ├── oltp_delete.lua
│ │ ├── oltp_insert.lua
│ │ ├── oltp_point_select.lua
│ │ ├── oltp_read_only.lua
│ │ ├── oltp_read_write.lua
│ │ ├── oltp_update_index.lua
│ │ ├── oltp_update_non_index.lua
│ │ ├── oltp_write_only.lua
│ │ ├── prime-test.lua
│ │ ├── select_random_points.lua
│ │ └── select_random_ranges.lua
│ ├── sb_barrier.c
│ ├── sb_barrier.h
│ ├── sb_ck_pr.h
│ ├── sb_counter.c
│ ├── sb_counter.h
│ ├── sb_global.h
│ ├── sb_histogram.c
│ ├── sb_histogram.h
│ ├── sb_list.h
│ ├── sb_logger.c
│ ├── sb_logger.h
│ ├── sb_lua.c
│ ├── sb_lua.h
│ ├── sb_options.c
│ ├── sb_options.h
│ ├── sb_rand.c
│ ├── sb_rand.h
│ ├── sb_thread.c
│ ├── sb_thread.h
│ ├── sb_timer.c
│ ├── sb_timer.h
│ ├── sb_util.c
│ ├── sb_util.h
│ ├── sysbench.c
│ ├── sysbench.h
│ ├── tests/
│ │ ├── Makefile.am
│ │ ├── cpu/
│ │ │ ├── Makefile.am
│ │ │ └── sb_cpu.c
│ │ ├── fileio/
│ │ │ ├── Makefile.am
│ │ │ ├── crc32.c
│ │ │ ├── crc32.h
│ │ │ ├── crc32tbl.h
│ │ │ └── sb_fileio.c
│ │ ├── memory/
│ │ │ ├── Makefile.am
│ │ │ └── sb_memory.c
│ │ ├── mutex/
│ │ │ ├── Makefile.am
│ │ │ └── sb_mutex.c
│ │ ├── sb_cpu.h
│ │ ├── sb_fileio.h
│ │ ├── sb_memory.h
│ │ ├── sb_mutex.h
│ │ ├── sb_threads.h
│ │ └── threads/
│ │ ├── Makefile.am
│ │ └── sb_threads.c
│ └── xoroshiro128plus.h
├── tests/
│ ├── Makefile.am
│ ├── README.md
│ ├── include/
│ │ ├── api_sql_common.sh
│ │ ├── config.sh.in
│ │ ├── drv_common.sh
│ │ ├── inspect.lua
│ │ ├── mysql_common.sh
│ │ ├── pgsql_common.sh
│ │ ├── script_bulk_insert_common.sh
│ │ ├── script_oltp_common.sh
│ │ └── script_select_random_common.sh
│ ├── t/
│ │ ├── 1st.t
│ │ ├── api_basic.t
│ │ ├── api_histogram.t
│ │ ├── api_rand.t
│ │ ├── api_reports.t
│ │ ├── api_sql_mysql.t
│ │ ├── api_sql_pgsql.t
│ │ ├── cmd_cleanup.t
│ │ ├── cmd_help.t
│ │ ├── cmd_prepare.t
│ │ ├── cmd_run.t
│ │ ├── cmdline.t
│ │ ├── commands.t
│ │ ├── drivers.t
│ │ ├── drv_mysql.t
│ │ ├── drv_pgsql.t
│ │ ├── help_drv_mysql.t
│ │ ├── help_drv_pgsql.t
│ │ ├── opt_help.t
│ │ ├── opt_histogram.t
│ │ ├── opt_luajit_cmd.t
│ │ ├── opt_rate.t
│ │ ├── opt_report_checkpoints.t
│ │ ├── opt_report_interval.t
│ │ ├── opt_version.t
│ │ ├── opt_warmup_time.t
│ │ ├── script_bulk_insert_mysql.t
│ │ ├── script_bulk_insert_pgsql.t
│ │ ├── script_oltp_delete_mysql.t
│ │ ├── script_oltp_delete_pgsql.t
│ │ ├── script_oltp_general_mysql.t
│ │ ├── script_oltp_help.t
│ │ ├── script_oltp_insert_mysql.t
│ │ ├── script_oltp_insert_pgsql.t
│ │ ├── script_oltp_point_select_mysql.t
│ │ ├── script_oltp_point_select_pgsql.t
│ │ ├── script_oltp_read_write_mysql.t
│ │ ├── script_oltp_read_write_pgsql.t
│ │ ├── script_select_random_mysql.t
│ │ ├── script_select_random_pgsql.t
│ │ ├── test_cpu.t
│ │ ├── test_fileio.t
│ │ ├── test_memory.t
│ │ ├── test_mutex.t
│ │ ├── test_threads.t
│ │ └── tests.t
│ └── test_run.sh
└── third_party/
├── concurrency_kit/
│ ├── Makefile.am
│ └── ck/
│ ├── .gitignore
│ ├── LICENSE
│ ├── README
│ ├── build/
│ │ ├── ck.build.aarch64
│ │ ├── ck.build.arm
│ │ ├── ck.build.in
│ │ ├── ck.build.ppc
│ │ ├── ck.build.ppc64
│ │ ├── ck.build.s390x
│ │ ├── ck.build.sparcv9
│ │ ├── ck.build.x86
│ │ ├── ck.build.x86_64
│ │ ├── ck.pc.in
│ │ ├── ck.spec.in
│ │ └── regressions.build.in
│ ├── configure
│ ├── doc/
│ │ ├── CK_ARRAY_FOREACH
│ │ ├── CK_COHORT_INIT
│ │ ├── CK_COHORT_INSTANCE
│ │ ├── CK_COHORT_LOCK
│ │ ├── CK_COHORT_PROTOTYPE
│ │ ├── CK_COHORT_TRYLOCK
│ │ ├── CK_COHORT_TRYLOCK_PROTOTYPE
│ │ ├── CK_COHORT_UNLOCK
│ │ ├── CK_HS_HASH
│ │ ├── CK_RHS_HASH
│ │ ├── CK_RWCOHORT_INIT
│ │ ├── CK_RWCOHORT_INSTANCE
│ │ ├── CK_RWCOHORT_PROTOTYPE
│ │ ├── CK_RWCOHORT_READ_LOCK
│ │ ├── CK_RWCOHORT_READ_UNLOCK
│ │ ├── CK_RWCOHORT_WRITE_LOCK
│ │ ├── CK_RWCOHORT_WRITE_UNLOCK
│ │ ├── ck_array_buffer
│ │ ├── ck_array_commit
│ │ ├── ck_array_deinit
│ │ ├── ck_array_init
│ │ ├── ck_array_initialized
│ │ ├── ck_array_length
│ │ ├── ck_array_put
│ │ ├── ck_array_put_unique
│ │ ├── ck_array_remove
│ │ ├── ck_bitmap_base
│ │ ├── ck_bitmap_bits
│ │ ├── ck_bitmap_bts
│ │ ├── ck_bitmap_buffer
│ │ ├── ck_bitmap_clear
│ │ ├── ck_bitmap_init
│ │ ├── ck_bitmap_iterator_init
│ │ ├── ck_bitmap_next
│ │ ├── ck_bitmap_reset
│ │ ├── ck_bitmap_set
│ │ ├── ck_bitmap_size
│ │ ├── ck_bitmap_test
│ │ ├── ck_bitmap_union
│ │ ├── ck_brlock
│ │ ├── ck_cohort
│ │ ├── ck_elide
│ │ ├── ck_epoch_barrier
│ │ ├── ck_epoch_begin
│ │ ├── ck_epoch_call
│ │ ├── ck_epoch_end
│ │ ├── ck_epoch_init
│ │ ├── ck_epoch_poll
│ │ ├── ck_epoch_reclaim
│ │ ├── ck_epoch_recycle
│ │ ├── ck_epoch_register
│ │ ├── ck_epoch_synchronize
│ │ ├── ck_epoch_unregister
│ │ ├── ck_hs_apply
│ │ ├── ck_hs_count
│ │ ├── ck_hs_destroy
│ │ ├── ck_hs_fas
│ │ ├── ck_hs_gc
│ │ ├── ck_hs_get
│ │ ├── ck_hs_grow
│ │ ├── ck_hs_init
│ │ ├── ck_hs_iterator_init
│ │ ├── ck_hs_move
│ │ ├── ck_hs_next
│ │ ├── ck_hs_put
│ │ ├── ck_hs_put_unique
│ │ ├── ck_hs_rebuild
│ │ ├── ck_hs_remove
│ │ ├── ck_hs_reset
│ │ ├── ck_hs_reset_size
│ │ ├── ck_hs_set
│ │ ├── ck_hs_stat
│ │ ├── ck_ht_count
│ │ ├── ck_ht_destroy
│ │ ├── ck_ht_entry_empty
│ │ ├── ck_ht_entry_key
│ │ ├── ck_ht_entry_key_direct
│ │ ├── ck_ht_entry_key_length
│ │ ├── ck_ht_entry_key_set
│ │ ├── ck_ht_entry_key_set_direct
│ │ ├── ck_ht_entry_set
│ │ ├── ck_ht_entry_set_direct
│ │ ├── ck_ht_entry_value
│ │ ├── ck_ht_entry_value_direct
│ │ ├── ck_ht_gc
│ │ ├── ck_ht_get_spmc
│ │ ├── ck_ht_grow_spmc
│ │ ├── ck_ht_hash
│ │ ├── ck_ht_hash_direct
│ │ ├── ck_ht_init
│ │ ├── ck_ht_iterator_init
│ │ ├── ck_ht_next
│ │ ├── ck_ht_put_spmc
│ │ ├── ck_ht_remove_spmc
│ │ ├── ck_ht_reset_size_spmc
│ │ ├── ck_ht_reset_spmc
│ │ ├── ck_ht_set_spmc
│ │ ├── ck_ht_stat
│ │ ├── ck_pflock
│ │ ├── ck_pr
│ │ ├── ck_pr_add
│ │ ├── ck_pr_and
│ │ ├── ck_pr_barrier
│ │ ├── ck_pr_btc
│ │ ├── ck_pr_btr
│ │ ├── ck_pr_bts
│ │ ├── ck_pr_cas
│ │ ├── ck_pr_dec
│ │ ├── ck_pr_faa
│ │ ├── ck_pr_fas
│ │ ├── ck_pr_fence_acquire
│ │ ├── ck_pr_fence_atomic
│ │ ├── ck_pr_fence_atomic_load
│ │ ├── ck_pr_fence_atomic_store
│ │ ├── ck_pr_fence_load
│ │ ├── ck_pr_fence_load_atomic
│ │ ├── ck_pr_fence_load_depends
│ │ ├── ck_pr_fence_load_store
│ │ ├── ck_pr_fence_memory
│ │ ├── ck_pr_fence_release
│ │ ├── ck_pr_fence_store
│ │ ├── ck_pr_fence_store_atomic
│ │ ├── ck_pr_fence_store_load
│ │ ├── ck_pr_inc
│ │ ├── ck_pr_load
│ │ ├── ck_pr_neg
│ │ ├── ck_pr_not
│ │ ├── ck_pr_or
│ │ ├── ck_pr_rtm
│ │ ├── ck_pr_stall
│ │ ├── ck_pr_store
│ │ ├── ck_pr_sub
│ │ ├── ck_pr_xor
│ │ ├── ck_queue
│ │ ├── ck_rhs_apply
│ │ ├── ck_rhs_count
│ │ ├── ck_rhs_destroy
│ │ ├── ck_rhs_fas
│ │ ├── ck_rhs_gc
│ │ ├── ck_rhs_get
│ │ ├── ck_rhs_grow
│ │ ├── ck_rhs_init
│ │ ├── ck_rhs_iterator_init
│ │ ├── ck_rhs_move
│ │ ├── ck_rhs_next
│ │ ├── ck_rhs_put
│ │ ├── ck_rhs_put_unique
│ │ ├── ck_rhs_rebuild
│ │ ├── ck_rhs_remove
│ │ ├── ck_rhs_reset
│ │ ├── ck_rhs_reset_size
│ │ ├── ck_rhs_set
│ │ ├── ck_rhs_set_load_factor
│ │ ├── ck_rhs_stat
│ │ ├── ck_ring_capacity
│ │ ├── ck_ring_dequeue_spmc
│ │ ├── ck_ring_dequeue_spsc
│ │ ├── ck_ring_enqueue_spmc
│ │ ├── ck_ring_enqueue_spmc_size
│ │ ├── ck_ring_enqueue_spsc
│ │ ├── ck_ring_enqueue_spsc_size
│ │ ├── ck_ring_init
│ │ ├── ck_ring_size
│ │ ├── ck_ring_trydequeue_spmc
│ │ ├── ck_rwcohort
│ │ ├── ck_rwlock
│ │ ├── ck_sequence
│ │ ├── ck_spinlock
│ │ ├── ck_swlock
│ │ ├── ck_tflock
│ │ └── refcheck.pl
│ ├── include/
│ │ ├── ck_array.h
│ │ ├── ck_backoff.h
│ │ ├── ck_barrier.h
│ │ ├── ck_bitmap.h
│ │ ├── ck_brlock.h
│ │ ├── ck_bytelock.h
│ │ ├── ck_cc.h
│ │ ├── ck_cohort.h
│ │ ├── ck_elide.h
│ │ ├── ck_epoch.h
│ │ ├── ck_fifo.h
│ │ ├── ck_hp.h
│ │ ├── ck_hp_fifo.h
│ │ ├── ck_hp_stack.h
│ │ ├── ck_hs.h
│ │ ├── ck_ht.h
│ │ ├── ck_limits.h
│ │ ├── ck_malloc.h
│ │ ├── ck_md.h.in
│ │ ├── ck_pflock.h
│ │ ├── ck_pr.h
│ │ ├── ck_queue.h
│ │ ├── ck_rhs.h
│ │ ├── ck_ring.h
│ │ ├── ck_rwcohort.h
│ │ ├── ck_rwlock.h
│ │ ├── ck_sequence.h
│ │ ├── ck_spinlock.h
│ │ ├── ck_stack.h
│ │ ├── ck_stdbool.h
│ │ ├── ck_stddef.h
│ │ ├── ck_stdint.h
│ │ ├── ck_stdlib.h
│ │ ├── ck_string.h
│ │ ├── ck_swlock.h
│ │ ├── ck_tflock.h
│ │ ├── gcc/
│ │ │ ├── aarch64/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ ├── ck_pr.h
│ │ │ │ ├── ck_pr_llsc.h
│ │ │ │ └── ck_pr_lse.h
│ │ │ ├── arm/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ ├── ck_cc.h
│ │ │ ├── ck_f_pr.h
│ │ │ ├── ck_pr.h
│ │ │ ├── ppc/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ ├── ppc64/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ ├── s390x/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ ├── sparcv9/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ ├── x86/
│ │ │ │ ├── ck_f_pr.h
│ │ │ │ └── ck_pr.h
│ │ │ └── x86_64/
│ │ │ ├── ck_f_pr.h
│ │ │ ├── ck_pr.h
│ │ │ └── ck_pr_rtm.h
│ │ └── spinlock/
│ │ ├── anderson.h
│ │ ├── cas.h
│ │ ├── clh.h
│ │ ├── dec.h
│ │ ├── fas.h
│ │ ├── hclh.h
│ │ ├── mcs.h
│ │ └── ticket.h
│ ├── regressions/
│ │ ├── Makefile.unsupported
│ │ ├── ck_array/
│ │ │ └── validate/
│ │ │ └── serial.c
│ │ ├── ck_backoff/
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_barrier/
│ │ │ ├── benchmark/
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ ├── barrier_centralized.c
│ │ │ ├── barrier_combining.c
│ │ │ ├── barrier_dissemination.c
│ │ │ ├── barrier_mcs.c
│ │ │ └── barrier_tournament.c
│ │ ├── ck_bitmap/
│ │ │ └── validate/
│ │ │ └── serial.c
│ │ ├── ck_brlock/
│ │ │ ├── benchmark/
│ │ │ │ ├── latency.c
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_bytelock/
│ │ │ ├── benchmark/
│ │ │ │ └── latency.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_cohort/
│ │ │ ├── benchmark/
│ │ │ │ ├── ck_cohort.c
│ │ │ │ └── throughput.c
│ │ │ ├── ck_cohort.h
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_epoch/
│ │ │ └── validate/
│ │ │ ├── ck_epoch_call.c
│ │ │ ├── ck_epoch_poll.c
│ │ │ ├── ck_epoch_section.c
│ │ │ ├── ck_epoch_section_2.c
│ │ │ ├── ck_epoch_synchronize.c
│ │ │ ├── ck_stack.c
│ │ │ └── torture.c
│ │ ├── ck_fifo/
│ │ │ ├── benchmark/
│ │ │ │ └── latency.c
│ │ │ └── validate/
│ │ │ ├── ck_fifo_mpmc.c
│ │ │ ├── ck_fifo_mpmc_iterator.c
│ │ │ ├── ck_fifo_spsc.c
│ │ │ └── ck_fifo_spsc_iterator.c
│ │ ├── ck_hp/
│ │ │ ├── benchmark/
│ │ │ │ ├── fifo_latency.c
│ │ │ │ └── stack_latency.c
│ │ │ └── validate/
│ │ │ ├── ck_hp_fifo.c
│ │ │ ├── ck_hp_fifo_donner.c
│ │ │ ├── ck_hp_stack.c
│ │ │ ├── nbds_haz_test.c
│ │ │ └── serial.c
│ │ ├── ck_hs/
│ │ │ ├── benchmark/
│ │ │ │ ├── apply.c
│ │ │ │ ├── parallel_bytestring.c
│ │ │ │ └── serial.c
│ │ │ └── validate/
│ │ │ └── serial.c
│ │ ├── ck_ht/
│ │ │ ├── benchmark/
│ │ │ │ ├── parallel_bytestring.c
│ │ │ │ ├── parallel_direct.c
│ │ │ │ └── serial.c
│ │ │ └── validate/
│ │ │ └── serial.c
│ │ ├── ck_pflock/
│ │ │ ├── benchmark/
│ │ │ │ ├── latency.c
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_pr/
│ │ │ ├── benchmark/
│ │ │ │ ├── benchmark.h
│ │ │ │ ├── ck_pr_add_64.c
│ │ │ │ ├── ck_pr_cas_64.c
│ │ │ │ ├── ck_pr_cas_64_2.c
│ │ │ │ ├── ck_pr_faa_64.c
│ │ │ │ ├── ck_pr_fas_64.c
│ │ │ │ ├── ck_pr_neg_64.c
│ │ │ │ └── fp.c
│ │ │ └── validate/
│ │ │ ├── ck_pr_add.c
│ │ │ ├── ck_pr_and.c
│ │ │ ├── ck_pr_bin.c
│ │ │ ├── ck_pr_btc.c
│ │ │ ├── ck_pr_btr.c
│ │ │ ├── ck_pr_bts.c
│ │ │ ├── ck_pr_btx.c
│ │ │ ├── ck_pr_cas.c
│ │ │ ├── ck_pr_dec.c
│ │ │ ├── ck_pr_faa.c
│ │ │ ├── ck_pr_fas.c
│ │ │ ├── ck_pr_fax.c
│ │ │ ├── ck_pr_inc.c
│ │ │ ├── ck_pr_load.c
│ │ │ ├── ck_pr_n.c
│ │ │ ├── ck_pr_or.c
│ │ │ ├── ck_pr_store.c
│ │ │ ├── ck_pr_sub.c
│ │ │ ├── ck_pr_unary.c
│ │ │ └── ck_pr_xor.c
│ │ ├── ck_queue/
│ │ │ └── validate/
│ │ │ ├── ck_list.c
│ │ │ ├── ck_slist.c
│ │ │ └── ck_stailq.c
│ │ ├── ck_rhs/
│ │ │ ├── benchmark/
│ │ │ │ ├── parallel_bytestring.c
│ │ │ │ └── serial.c
│ │ │ └── validate/
│ │ │ └── serial.c
│ │ ├── ck_ring/
│ │ │ ├── benchmark/
│ │ │ │ └── latency.c
│ │ │ └── validate/
│ │ │ ├── ck_ring_mpmc.c
│ │ │ ├── ck_ring_mpmc_template.c
│ │ │ ├── ck_ring_spmc.c
│ │ │ ├── ck_ring_spmc_template.c
│ │ │ └── ck_ring_spsc.c
│ │ ├── ck_rwcohort/
│ │ │ ├── benchmark/
│ │ │ │ ├── ck_neutral.c
│ │ │ │ ├── ck_rp.c
│ │ │ │ ├── ck_wp.c
│ │ │ │ ├── latency.h
│ │ │ │ └── throughput.h
│ │ │ ├── ck_neutral.h
│ │ │ ├── ck_rp.h
│ │ │ ├── ck_wp.h
│ │ │ └── validate/
│ │ │ ├── ck_neutral.c
│ │ │ ├── ck_rp.c
│ │ │ ├── ck_wp.c
│ │ │ └── validate.h
│ │ ├── ck_rwlock/
│ │ │ ├── benchmark/
│ │ │ │ ├── latency.c
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_sequence/
│ │ │ ├── benchmark/
│ │ │ │ └── ck_sequence.c
│ │ │ └── validate/
│ │ │ └── ck_sequence.c
│ │ ├── ck_spinlock/
│ │ │ ├── benchmark/
│ │ │ │ ├── ck_anderson.c
│ │ │ │ ├── ck_cas.c
│ │ │ │ ├── ck_clh.c
│ │ │ │ ├── ck_dec.c
│ │ │ │ ├── ck_fas.c
│ │ │ │ ├── ck_hclh.c
│ │ │ │ ├── ck_mcs.c
│ │ │ │ ├── ck_spinlock.c
│ │ │ │ ├── ck_ticket.c
│ │ │ │ ├── ck_ticket_pb.c
│ │ │ │ ├── latency.h
│ │ │ │ ├── linux_spinlock.c
│ │ │ │ └── throughput.h
│ │ │ ├── ck_anderson.h
│ │ │ ├── ck_cas.h
│ │ │ ├── ck_clh.h
│ │ │ ├── ck_dec.h
│ │ │ ├── ck_fas.h
│ │ │ ├── ck_hclh.h
│ │ │ ├── ck_mcs.h
│ │ │ ├── ck_spinlock.h
│ │ │ ├── ck_ticket.h
│ │ │ ├── ck_ticket_pb.h
│ │ │ ├── linux_spinlock.h
│ │ │ └── validate/
│ │ │ ├── ck_anderson.c
│ │ │ ├── ck_cas.c
│ │ │ ├── ck_clh.c
│ │ │ ├── ck_dec.c
│ │ │ ├── ck_fas.c
│ │ │ ├── ck_hclh.c
│ │ │ ├── ck_mcs.c
│ │ │ ├── ck_spinlock.c
│ │ │ ├── ck_ticket.c
│ │ │ ├── ck_ticket_pb.c
│ │ │ ├── linux_spinlock.c
│ │ │ └── validate.h
│ │ ├── ck_stack/
│ │ │ ├── benchmark/
│ │ │ │ └── latency.c
│ │ │ └── validate/
│ │ │ ├── pair.c
│ │ │ ├── pop.c
│ │ │ ├── push.c
│ │ │ └── serial.c
│ │ ├── ck_swlock/
│ │ │ ├── benchmark/
│ │ │ │ ├── latency.c
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ ├── ck_tflock/
│ │ │ ├── benchmark/
│ │ │ │ ├── latency.c
│ │ │ │ └── throughput.c
│ │ │ └── validate/
│ │ │ └── validate.c
│ │ └── common.h
│ ├── src/
│ │ ├── ck_array.c
│ │ ├── ck_barrier_centralized.c
│ │ ├── ck_barrier_combining.c
│ │ ├── ck_barrier_dissemination.c
│ │ ├── ck_barrier_mcs.c
│ │ ├── ck_barrier_tournament.c
│ │ ├── ck_epoch.c
│ │ ├── ck_hp.c
│ │ ├── ck_hs.c
│ │ ├── ck_ht.c
│ │ ├── ck_ht_hash.h
│ │ ├── ck_internal.h
│ │ └── ck_rhs.c
│ └── tools/
│ └── feature.sh
├── cram/
│ ├── .coveragerc
│ ├── .gitignore
│ ├── .hgignore
│ ├── .hgtags
│ ├── .pylintrc
│ ├── .travis.yml
│ ├── COPYING.txt
│ ├── MANIFEST.in
│ ├── NEWS.rst
│ ├── README.rst
│ ├── TODO.md
│ ├── contrib/
│ │ ├── PKGBUILD
│ │ └── cram.vim
│ ├── cram/
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ ├── _cli.py
│ │ ├── _diff.py
│ │ ├── _encoding.py
│ │ ├── _main.py
│ │ ├── _process.py
│ │ ├── _run.py
│ │ ├── _test.py
│ │ └── _xunit.py
│ ├── examples/
│ │ ├── .hidden/
│ │ │ └── hidden.t
│ │ ├── .hidden.t
│ │ ├── bare.t
│ │ ├── empty.t
│ │ ├── env.t
│ │ ├── fail.t
│ │ ├── missingeol.t
│ │ ├── skip.t
│ │ └── test.t
│ ├── requirements.txt
│ ├── scripts/
│ │ └── cram
│ ├── setup.cfg
│ ├── setup.py
│ └── tests/
│ ├── config.t
│ ├── debug.t
│ ├── dist.t
│ ├── doctest.t
│ ├── encoding.t
│ ├── interactive.t
│ ├── pep8.t
│ ├── pyflakes.t
│ ├── run-doctests.py
│ ├── setup.sh
│ ├── test.t
│ ├── usage.t
│ └── xunit.t
└── luajit/
├── Makefile.am
└── luajit/
├── .gitignore
├── COPYRIGHT
├── README
├── doc/
│ ├── bluequad-print.css
│ ├── bluequad.css
│ ├── contact.html
│ ├── ext_buffer.html
│ ├── ext_c_api.html
│ ├── ext_ffi.html
│ ├── ext_ffi_api.html
│ ├── ext_ffi_semantics.html
│ ├── ext_ffi_tutorial.html
│ ├── ext_jit.html
│ ├── ext_profiler.html
│ ├── extensions.html
│ ├── faq.html
│ ├── install.html
│ ├── luajit.html
│ ├── running.html
│ └── status.html
├── dynasm/
│ ├── dasm_arm.h
│ ├── dasm_arm.lua
│ ├── dasm_arm64.h
│ ├── dasm_arm64.lua
│ ├── dasm_mips.h
│ ├── dasm_mips.lua
│ ├── dasm_mips64.lua
│ ├── dasm_ppc.h
│ ├── dasm_ppc.lua
│ ├── dasm_proto.h
│ ├── dasm_x64.lua
│ ├── dasm_x86.h
│ ├── dasm_x86.lua
│ └── dynasm.lua
└── etc/
├── luajit.1
└── luajit.pc
SYMBOL INDEX (1733 symbols across 221 files)
FILE: src/db_driver.c
function db_register (line 93) | int db_register(void)
function db_print_help (line 126) | void db_print_help(void)
function enable_print_stats (line 151) | static void enable_print_stats(void)
function disable_print_stats (line 157) | static void disable_print_stats(void)
function check_print_stats (line 164) | static bool check_print_stats(void)
function db_init (line 172) | static void db_init(void)
function db_driver_t (line 203) | db_driver_t *db_create(const char *name)
function db_destroy (line 277) | int db_destroy(db_driver_t *drv)
function db_describe (line 287) | int db_describe(db_driver_t *drv, drv_caps_t *caps)
function db_conn_t (line 299) | db_conn_t *db_connection_create(db_driver_t *drv)
function db_connection_close (line 327) | int db_connection_close(db_conn_t *con)
function db_connection_reconnect (line 351) | int db_connection_reconnect(db_conn_t *con)
function db_connection_free (line 393) | void db_connection_free(db_conn_t *con)
function db_stmt_t (line 405) | db_stmt_t *db_prepare(db_conn_t *con, const char *query, size_t len)
function db_bind_param (line 435) | int db_bind_param(db_stmt_t *stmt, db_bind_t *params, size_t len)
function db_bind_result (line 452) | int db_bind_result(db_stmt_t *stmt, db_bind_t *results, size_t len)
function db_result_t (line 469) | db_result_t *db_execute(db_stmt_t *stmt)
function db_result_t (line 509) | db_result_t *db_stmt_next_result(db_stmt_t *stmt)
function db_row_t (line 557) | db_row_t *db_fetch_row(db_result_t *rs)
function db_result_t (line 600) | db_result_t *db_query(db_conn_t *con, const char *query, size_t len)
function db_more_results (line 639) | bool db_more_results(db_conn_t *con)
function db_result_t (line 657) | db_result_t *db_next_result(db_conn_t *con)
function db_free_results_int (line 701) | static int db_free_results_int(db_conn_t *con)
function db_free_results (line 723) | int db_free_results(db_result_t *rs)
function db_close (line 744) | int db_close(db_stmt_t *stmt)
function db_done (line 790) | void db_done(void)
function db_parse_arguments (line 825) | int db_parse_arguments(void)
function db_print_value (line 852) | int db_print_value(db_bind_t *var, char *buf, int buflen)
function db_free_row (line 914) | void db_free_row(db_row_t *row)
function db_bulk_insert_init (line 923) | int db_bulk_insert_init(db_conn_t *con, const char *query, size_t query_...
function db_bulk_insert_next (line 971) | int db_bulk_insert_next(db_conn_t *con, const char *query, size_t query_...
function db_bulk_do_insert (line 1026) | static int db_bulk_do_insert(db_conn_t *con, int is_last)
function db_bulk_insert_done (line 1057) | int db_bulk_insert_done(db_conn_t *con)
function db_report_intermediate (line 1072) | void db_report_intermediate(sb_stat_t *stat)
function db_report_cumulative (line 1108) | void db_report_cumulative(sb_stat_t *stat)
function db_reset_stats (line 1181) | static void db_reset_stats(void)
FILE: src/db_driver.h
type db_ps_mode_t (line 33) | typedef enum
type db_globals_t (line 41) | typedef struct
type drv_caps_t (line 50) | typedef struct
type db_error_t (line 62) | typedef enum
type db_bind_type_t (line 73) | typedef enum
type db_time_t (line 93) | typedef struct
type db_bind_t (line 106) | typedef struct
type db_conn (line 117) | struct db_conn
type db_stmt (line 118) | struct db_stmt
type db_result (line 119) | struct db_result
type db_row (line 120) | struct db_row
type db_conn (line 127) | struct db_conn
type db_conn (line 128) | struct db_conn
type db_conn (line 129) | struct db_conn
type db_stmt (line 130) | struct db_stmt
type db_stmt (line 131) | struct db_stmt
type db_stmt (line 132) | struct db_stmt
type db_error_t (line 133) | typedef db_error_t drv_op_execute(struct db_stmt *, struct db_result *);
type db_error_t (line 134) | typedef db_error_t drv_op_stmt_next_result(struct db_stmt *,
type db_result (line 136) | struct db_result
type db_result (line 137) | struct db_result
type db_row (line 137) | struct db_row
type db_error_t (line 138) | typedef db_error_t drv_op_query(struct db_conn *, const char *, size_t,
type db_conn (line 140) | struct db_conn
type db_error_t (line 141) | typedef db_error_t drv_op_next_result(struct db_conn *, struct db_result...
type db_result (line 142) | struct db_result
type db_stmt (line 143) | struct db_stmt
type drv_ops_t (line 147) | typedef struct
type db_driver_t (line 175) | typedef struct
type db_value_t (line 189) | typedef struct {
type db_row_t (line 196) | typedef struct db_row
type db_result_t (line 204) | typedef struct db_result
type db_conn_state_t (line 214) | typedef enum {
type db_conn_t (line 222) | typedef struct db_conn
type db_stmt_t (line 259) | typedef struct db_stmt
FILE: src/drivers/mysql/drv_mysql.c
type my_bool (line 54) | typedef bool my_bool;
type mysql_drv_args_t (line 95) | typedef struct
type db_mysql_conn_t (line 120) | typedef struct
type ssl_mode_map_t (line 132) | typedef struct {
type db_mysql_bind_map_t (line 141) | typedef struct
function register_driver_mysql (line 275) | int register_driver_mysql(sb_list_t *drivers)
function mysql_drv_init (line 286) | int mysql_drv_init(void)
function mysql_drv_thread_init (line 367) | int mysql_drv_thread_init(int thread_id)
function mysql_drv_thread_done (line 379) | int mysql_drv_thread_done(int thread_id)
function mysql_drv_describe (line 391) | int mysql_drv_describe(drv_caps_t *caps)
function mysql_drv_real_connect (line 399) | static int mysql_drv_real_connect(db_mysql_conn_t *db_mysql_con)
function mysql_drv_connect (line 459) | int mysql_drv_connect(db_conn_t *sb_conn)
function mysql_drv_disconnect (line 555) | int mysql_drv_disconnect(db_conn_t *sb_conn)
function mysql_drv_prepare (line 576) | int mysql_drv_prepare(db_stmt_t *stmt, const char *query, size_t len)
function convert_to_mysql_bind (line 640) | static void convert_to_mysql_bind(MYSQL_BIND *mybind, db_bind_t *bind)
function mysql_drv_bind_param (line 664) | int mysql_drv_bind_param(db_stmt_t *stmt, db_bind_t *params, size_t len)
function mysql_drv_bind_result (line 731) | int mysql_drv_bind_result(db_stmt_t *stmt, db_bind_t *params, size_t len)
function mysql_drv_reconnect (line 767) | static int mysql_drv_reconnect(db_conn_t *sb_con)
function db_error_t (line 797) | static db_error_t check_error(db_conn_t *sb_con, const char *func,
function db_error_t (line 868) | db_error_t mysql_drv_execute(db_stmt_t *stmt, db_result_t *rs)
function db_error_t (line 976) | db_error_t mysql_drv_stmt_next_result(db_stmt_t *stmt, db_result_t *rs)
function db_error_t (line 1046) | db_error_t mysql_drv_query(db_conn_t *sb_conn, const char *query, size_t...
function mysql_drv_fetch (line 1108) | int mysql_drv_fetch(db_result_t *rs)
function mysql_drv_fetch_row (line 1121) | int mysql_drv_fetch_row(db_result_t *rs, db_row_t *row)
function mysql_drv_more_results (line 1148) | bool mysql_drv_more_results(db_conn_t *sb_conn)
function db_error_t (line 1167) | db_error_t mysql_drv_next_result(db_conn_t *sb_conn, db_result_t *rs)
function mysql_drv_free_results (line 1232) | int mysql_drv_free_results(db_result_t *rs)
function mysql_drv_close (line 1259) | int mysql_drv_close(db_stmt_t *stmt)
function mysql_drv_done (line 1283) | int mysql_drv_done(void)
function get_mysql_bind_type (line 1295) | int get_mysql_bind_type(db_bind_type_t type)
FILE: src/drivers/pgsql/drv_pgsql.c
type pgsql_drv_args_t (line 55) | typedef struct
type db_pgsql_bind_map_t (line 66) | typedef struct
type pg_stmt_t (line 101) | typedef struct pg_stmt
function register_driver_pgsql (line 169) | int register_driver_pgsql(sb_list_t *drivers)
function pgsql_drv_init (line 178) | int pgsql_drv_init(void)
function pgsql_drv_describe (line 206) | int pgsql_drv_describe(drv_caps_t *caps)
function empty_notice_processor (line 237) | static void empty_notice_processor(void *arg, const char *msg)
function pgsql_drv_connect (line 245) | int pgsql_drv_connect(db_conn_t *sb_conn)
function pgsql_drv_disconnect (line 273) | int pgsql_drv_disconnect(db_conn_t *sb_conn)
function pgsql_drv_reconnect (line 289) | int pgsql_drv_reconnect(db_conn_t *sb_conn)
function pgsql_drv_prepare (line 307) | int pgsql_drv_prepare(db_stmt_t *stmt, const char *query, size_t len)
function pgsql_drv_bind_param (line 419) | int pgsql_drv_bind_param(db_stmt_t *stmt, db_bind_t *params, size_t len)
function pgsql_drv_bind_result (line 499) | int pgsql_drv_bind_result(db_stmt_t *stmt, db_bind_t *params, size_t len)
function db_error_t (line 513) | static db_error_t pgsql_check_status(db_conn_t *con, PGresult *pgres,
function db_error_t (line 597) | db_error_t pgsql_drv_execute(db_stmt_t *stmt, db_result_t *rs)
function db_error_t (line 703) | db_error_t pgsql_drv_query(db_conn_t *sb_conn, const char *query, size_t...
function pgsql_drv_fetch (line 728) | int pgsql_drv_fetch(db_result_t *rs)
function pgsql_drv_fetch_row (line 740) | int pgsql_drv_fetch_row(db_result_t *rs, db_row_t *row)
function pgsql_drv_free_results (line 777) | int pgsql_drv_free_results(db_result_t *rs)
function pgsql_drv_close (line 795) | int pgsql_drv_close(db_stmt_t *stmt)
function pgsql_drv_done (line 822) | int pgsql_drv_done(void)
function get_pgsql_bind_type (line 831) | int get_pgsql_bind_type(db_bind_type_t type)
function get_unique_stmt_name (line 843) | int get_unique_stmt_name(char *name, int len)
FILE: src/sb_barrier.c
function sb_barrier_init (line 37) | int sb_barrier_init(sb_barrier_t *barrier, unsigned int count,
function sb_barrier_wait (line 58) | int sb_barrier_wait(sb_barrier_t *barrier)
function sb_barrier_destroy (line 99) | void sb_barrier_destroy(sb_barrier_t *barrier)
FILE: src/sb_barrier.h
type sb_barrier_t (line 36) | typedef struct {
FILE: src/sb_counter.c
function sb_counters_init (line 35) | int sb_counters_init(void)
function sb_counters_done (line 44) | void sb_counters_done(void)
function sb_counters_merge (line 53) | static void sb_counters_merge(sb_counters_t dst)
function sb_counters_checkpoint (line 60) | static void sb_counters_checkpoint(sb_counters_t dst, sb_counters_t cp)
function sb_counters_agg_intermediate (line 75) | void sb_counters_agg_intermediate(sb_counters_t val)
function sb_counters_agg_cumulative (line 88) | void sb_counters_agg_cumulative(sb_counters_t val)
FILE: src/sb_counter.h
type sb_counter_type_t (line 35) | typedef enum {
function SB_LUA_INLINE (line 78) | SB_LUA_INLINE
function SB_LUA_INLINE (line 85) | SB_LUA_INLINE
function SB_LUA_INLINE (line 93) | SB_LUA_INLINE
FILE: src/sb_histogram.c
function sb_histogram_init (line 54) | int sb_histogram_init(sb_histogram_t *h, size_t size,
function sb_histogram_update (line 99) | void sb_histogram_update(sb_histogram_t *h, double value)
function sb_histogram_get_pct_intermediate (line 116) | double sb_histogram_get_pct_intermediate(sb_histogram_t *h,
function merge_intermediate_into_cumulative (line 194) | static void merge_intermediate_into_cumulative(sb_histogram_t *h)
function get_pct_cumulative (line 222) | static double get_pct_cumulative(sb_histogram_t *h, double percentile)
function sb_histogram_get_pct_cumulative (line 241) | double sb_histogram_get_pct_cumulative(sb_histogram_t *h, double percent...
function sb_histogram_get_pct_checkpoint (line 264) | double sb_histogram_get_pct_checkpoint(sb_histogram_t *h,
function sb_histogram_print (line 292) | void sb_histogram_print(sb_histogram_t *h)
function sb_histogram_done (line 333) | void sb_histogram_done(sb_histogram_t *h)
function sb_histogram_t (line 345) | sb_histogram_t *sb_histogram_new(size_t size, double range_min,
function sb_histogram_delete (line 366) | void sb_histogram_delete(sb_histogram_t *h)
FILE: src/sb_histogram.h
type sb_histogram_t (line 27) | typedef struct {
FILE: src/sb_list.h
type sb_list_item_t (line 23) | typedef struct sb_list_item_t
type sb_list_item_t (line 30) | typedef sb_list_item_t sb_list_item;
type sb_list_item_t (line 31) | typedef sb_list_item_t sb_list_t ;
FILE: src/sb_logger.c
function log_register (line 119) | int log_register(void)
function log_print_help (line 136) | void log_print_help(void)
function log_init (line 159) | int log_init(void)
function log_done (line 185) | void log_done(void)
function log_add_handler (line 208) | int log_add_handler(log_msg_type_t type, log_handler_t *handler)
function log_msg (line 225) | void log_msg(log_msg_t *msg)
function log_text (line 266) | void log_text(log_msg_priority_t priority, const char *fmt, ...)
function log_timestamp (line 313) | void log_timestamp(log_msg_priority_t priority, double seconds,
function log_errno (line 363) | void log_errno(log_msg_priority_t priority, const char *fmt, ...)
function text_handler_init (line 401) | int text_handler_init(void)
function text_handler_process (line 427) | int text_handler_process(log_msg_t *msg)
function oper_handler_init (line 464) | int oper_handler_init(void)
function oper_handler_done (line 494) | int oper_handler_done(void)
FILE: src/sb_logger.h
type log_msg_type_t (line 41) | typedef enum {
type log_msg_priority_t (line 50) | typedef enum {
type log_msg_text_t (line 62) | typedef struct {
type log_msg_oper_action_t (line 70) | typedef enum {
type log_msg_oper_t (line 75) | typedef struct {
type log_msg_t (line 82) | typedef struct {
type log_handler_ops_t (line 96) | typedef struct {
type log_handler_t (line 104) | typedef struct {
FILE: src/sb_lua.c
type sb_lua_ctxt_t (line 68) | typedef struct {
type sb_lua_bind_t (line 74) | typedef struct {
type internal_script_t (line 82) | typedef struct {
type sb_lua_error_t (line 89) | typedef enum {
function call_error (line 158) | static void call_error(lua_State *L, const char *name)
function report_error (line 166) | static void report_error(lua_State *L)
function func_available (line 173) | static bool func_available(lua_State *L, const char *func)
function do_export_options (line 184) | static int do_export_options(lua_State *L, bool global)
function export_options (line 280) | static int export_options(lua_State *L)
function sb_test_t (line 290) | sb_test_t *sb_load_lua(const char *testname)
function sb_lua_done (line 349) | void sb_lua_done(void)
function sb_lua_op_init (line 375) | int sb_lua_op_init(void)
function sb_lua_op_thread_init (line 400) | int sb_lua_op_thread_init(int thread_id)
function sb_lua_op_thread_run (line 428) | int sb_lua_op_thread_run(int thread_id)
function sb_lua_op_thread_done (line 444) | int sb_lua_op_thread_done(int thread_id)
function sb_lua_op_done (line 466) | int sb_lua_op_done(void)
function load_internal_scripts (line 485) | static int load_internal_scripts(lua_State *L)
function sb_lua_var_number (line 503) | static void sb_lua_var_number(lua_State *L, const char *name, lua_Number n)
function sb_lua_var_string (line 510) | static void sb_lua_var_string(lua_State *L, const char *name, const char...
function sb_lua_set_paths (line 521) | static void sb_lua_set_paths(lua_State *L)
function sb_lua_set_test_args (line 593) | int sb_lua_set_test_args(sb_arg_t *args, size_t len)
function read_cmdline_options (line 618) | static int read_cmdline_options(lua_State *L)
function lua_State (line 649) | static lua_State *sb_lua_new_state(void)
function sb_lua_close_state (line 756) | int sb_lua_close_state(lua_State *state)
function execute_command (line 770) | static int execute_command(const char *cmd)
function sb_lua_cmd_prepare (line 790) | int sb_lua_cmd_prepare(void)
function sb_lua_cmd_cleanup (line 797) | int sb_lua_cmd_cleanup(void)
function sb_lua_cmd_help (line 804) | int sb_lua_cmd_help(void)
function sb_lua_hook_defined (line 811) | static bool sb_lua_hook_defined(lua_State *L, const char *name)
function sb_lua_hook_push (line 829) | static bool sb_lua_hook_push(lua_State *L, const char *name)
function sb_lua_loaded (line 851) | bool sb_lua_loaded(void)
function sb_lua_custom_command_defined (line 858) | bool sb_lua_custom_command_defined(const char *name)
function sb_lua_custom_command_parallel (line 893) | static bool sb_lua_custom_command_parallel(const char *name)
function call_custom_command (line 926) | static int call_custom_command(lua_State *L)
function sb_lua_call_custom_command (line 987) | int sb_lua_call_custom_command(const char *name)
function stat_to_lua_table (line 1006) | static void stat_to_lua_table(lua_State *L, sb_stat_t *stat)
function sb_lua_report_intermediate (line 1023) | static void sb_lua_report_intermediate(sb_stat_t *stat)
function sb_lua_report_cumulative (line 1046) | static void sb_lua_report_cumulative(sb_stat_t *stat)
function sb_lua_report_thread_init (line 1079) | int sb_lua_report_thread_init(void)
function sb_lua_report_thread_done (line 1090) | void sb_lua_report_thread_done(void *arg)
function sb_lua_do_jitcmd (line 1103) | int sb_lua_do_jitcmd(lua_State *L, const char *cmd)
FILE: src/sb_options.c
function sb_options_init (line 75) | int sb_options_init(void)
function sb_options_done (line 84) | int sb_options_done(void)
function sb_register_arg_set (line 95) | int sb_register_arg_set(sb_arg_t *set)
function option_t (line 110) | option_t *sb_find_option(const char *name)
function read_config_file (line 115) | static void read_config_file(const char *filename)
function option_t (line 127) | option_t *set_option(const char *name, const char *value, sb_arg_type_t ...
function sb_print_options (line 189) | void sb_print_options(sb_arg_t *opts)
function sb_opt_to_flag (line 224) | int sb_opt_to_flag(option_t *opt)
function sb_get_value_flag (line 230) | int sb_get_value_flag(const char *name)
function sb_opt_to_int (line 242) | int sb_opt_to_int(option_t *opt)
function sb_get_value_int (line 266) | int sb_get_value_int(const char *name)
function sb_opt_to_size (line 278) | unsigned long long sb_opt_to_size(option_t *opt)
function sb_get_value_size (line 330) | unsigned long long sb_get_value_size(const char *name)
function sb_opt_to_double (line 342) | double sb_opt_to_double(option_t *opt)
function sb_get_value_double (line 358) | double sb_get_value_double(const char *name)
function sb_opt_copy (line 397) | bool sb_opt_copy(const char *to, const char *from)
function sb_list_t (line 410) | sb_list_t *sb_opt_to_list(option_t *opt)
function sb_list_t (line 416) | sb_list_t *sb_get_value_list(const char *name)
function value_t (line 444) | value_t *new_value()
function option_t (line 456) | option_t *new_option()
function free_values (line 471) | void free_values(sb_list_t *values)
function free_options (line 491) | void free_options(sb_list_t *options)
function remove_value (line 511) | int remove_value(sb_list_t *values, char *valname)
function remove_option (line 531) | int remove_option(sb_list_t * options, char * optname)
function value_t (line 550) | value_t *add_value(sb_list_t *values, const char *data)
function value_t (line 571) | value_t *find_value(sb_list_t *values, const char *data)
function option_t (line 590) | option_t *add_option(sb_list_t *options, const char *name)
function convert_dashes (line 612) | void convert_dashes(char *s)
function opt_name_cmp (line 623) | int opt_name_cmp(const char *s1, const char *s2)
function option_t (line 638) | option_t *find_option(sb_list_t *options, const char *name)
function sb_list_item_t (line 657) | sb_list_item_t *sb_options_enum_start(void)
function sb_list_item_t (line 662) | sb_list_item_t *sb_options_enum_next(sb_list_item_t *pos, option_t **opt)
function sb_list_t (line 674) | sb_list_t *read_config(FILE *fp, sb_list_t *options)
function write_config (line 751) | int write_config(FILE *fp, sb_list_t *options)
FILE: src/sb_options.h
type sb_arg_type_t (line 38) | typedef enum
type sb_arg_t (line 55) | typedef struct
type value_t (line 64) | typedef struct
type option_t (line 72) | typedef struct
FILE: src/sb_rand.c
function sb_rand_register (line 126) | int sb_rand_register(void)
function sb_rand_init (line 135) | int sb_rand_init(void)
function sb_rand_print_help (line 202) | void sb_rand_print_help(void)
function sb_rand_done (line 210) | void sb_rand_done(void)
function sb_rand_thread_init (line 216) | void sb_rand_thread_init(void)
function sb_rand_default (line 230) | uint32_t sb_rand_default(uint32_t a, uint32_t b)
function sb_rand_uniform (line 237) | uint32_t sb_rand_uniform(uint32_t a, uint32_t b)
function sb_rand_gaussian (line 244) | uint32_t sb_rand_gaussian(uint32_t a, uint32_t b)
function sb_rand_pareto (line 259) | uint32_t sb_rand_pareto(uint32_t a, uint32_t b)
function sb_rand_str (line 267) | void sb_rand_str(const char *fmt, char *buf)
function sb_rand_varstr (line 288) | uint32_t sb_rand_varstr(char *buf, uint32_t min_len, uint32_t max_len)
function rand_unique_permute (line 313) | static uint32_t rand_unique_permute(uint32_t x)
function rand_unique_seed (line 325) | static void rand_unique_seed(uint32_t index, uint32_t offset)
function sb_rand_unique (line 335) | uint32_t sb_rand_unique(void)
function sb_rand_zipfian_int (line 355) | static uint32_t sb_rand_zipfian_int(uint32_t n, double e, double s,
function sb_rand_zipfian (line 452) | uint32_t sb_rand_zipfian(uint32_t a, uint32_t b)
function hIntegral (line 468) | static double hIntegral(double x, double e)
function h (line 476) | static double h(double x, double e)
function hIntegralInverse (line 483) | static double hIntegralInverse(double x, double e)
function helper1 (line 504) | static double helper1(double x)
function helper2 (line 518) | static double helper2(double x)
FILE: src/sb_rand.h
type rand_dist_t (line 27) | typedef enum
function sb_rand_uniform_uint64 (line 44) | inline uint64_t sb_rand_uniform_uint64(void)
function sb_rand_uniform_double (line 50) | inline double sb_rand_uniform_double(void)
FILE: src/sb_thread.c
function sb_thread_init (line 50) | int sb_thread_init(void)
function sb_thread_done (line 81) | void sb_thread_done(void)
type sb_thread_proxy (line 90) | struct sb_thread_proxy {
function thread_cancel_handler (line 97) | static void thread_cancel_handler(int sig)
function install_thread_signal_handler (line 103) | static int install_thread_signal_handler(void) {
type sb_thread_proxy (line 113) | struct sb_thread_proxy
function sb_thread_create (line 122) | int sb_thread_create(pthread_t *thread, const pthread_attr_t *attr,
function sb_thread_join (line 144) | int sb_thread_join(pthread_t thread, void **retval)
function sb_thread_cancel (line 149) | int sb_thread_cancel(pthread_t thread)
function sb_thread_create_workers (line 158) | int sb_thread_create_workers(void *(*worker_routine)(void*))
function sb_thread_join_workers (line 186) | int sb_thread_join_workers(void)
FILE: src/sb_thread.h
type sb_thread_ctxt_t (line 37) | typedef struct
FILE: src/sb_timer.c
function sb_timer_init (line 39) | void sb_timer_init(sb_timer_t *t)
function sb_timer_reset (line 53) | void sb_timer_reset(sb_timer_t *t)
function sb_timer_copy (line 64) | void sb_timer_copy(sb_timer_t *to, sb_timer_t *from)
function sb_timer_running (line 73) | bool sb_timer_running(sb_timer_t *t)
function sb_timer_current (line 84) | uint64_t sb_timer_current(sb_timer_t *t)
function sb_timer_checkpoint (line 101) | void sb_timer_checkpoint(sb_timer_t *t, sb_timer_t *old)
function sb_timer_avg (line 116) | uint64_t sb_timer_avg(sb_timer_t *t)
function sb_timer_sum (line 127) | uint64_t sb_timer_sum(sb_timer_t *t)
function sb_timer_min (line 136) | uint64_t sb_timer_min(sb_timer_t *t)
function sb_timer_max (line 147) | uint64_t sb_timer_max(sb_timer_t *t)
function sb_timer_t (line 156) | sb_timer_t sb_timer_merge(sb_timer_t *t1, sb_timer_t *t2)
FILE: src/sb_timer.h
type timer_state_t (line 77) | typedef enum {TIMER_UNINITIALIZED, TIMER_INITIALIZED, TIMER_STOPPED, \
type sb_timer_t (line 82) | typedef struct
function sb_nanosleep (line 99) | static inline int sb_nanosleep(uint64_t ns)
function sb_timer_start (line 117) | static inline void sb_timer_start(sb_timer_t *t)
function sb_timer_stop (line 127) | static inline uint64_t sb_timer_stop(sb_timer_t *t)
function sb_timer_value (line 152) | static inline uint64_t sb_timer_value(sb_timer_t *t)
FILE: src/sb_util.c
function sb_getpagesize (line 63) | size_t sb_getpagesize(void)
FILE: src/sysbench.c
function sigalrm_thread_init_timeout_handler (line 173) | static void sigalrm_thread_init_timeout_handler(int sig)
function sb_report_intermediate (line 187) | void sb_report_intermediate(sb_stat_t *stat)
function report_get_common_stat (line 202) | static void report_get_common_stat(sb_stat_t *stat, sb_counters_t cnt)
function report_intermediate (line 222) | static void report_intermediate(void)
function sb_report_cumulative (line 257) | void sb_report_cumulative(sb_stat_t *stat)
function checkpoint (line 372) | static void checkpoint(sb_stat_t *stat)
function report_cumulative (line 391) | static void report_cumulative(void)
function sigalrm_forced_shutdown_handler (line 417) | static void sigalrm_forced_shutdown_handler(int sig)
function register_tests (line 440) | static int register_tests(void)
function print_header (line 459) | void print_header(void)
function print_help (line 470) | void print_help(void)
function parse_option (line 504) | static int parse_option(char *name, bool ignore_unknown)
function parse_general_arguments (line 543) | static int parse_general_arguments(int argc, char *argv[])
function parse_test_arguments (line 591) | static int parse_test_arguments(sb_test_t *test, int argc, char *argv[])
function print_run_mode (line 617) | void print_run_mode(sb_test_t *test)
function sb_more_events (line 688) | bool sb_more_events(int thread_id)
function sb_event_start (line 747) | void sb_event_start(int thread_id)
function sb_event_stop (line 753) | void sb_event_stop(int thread_id)
function thread_run (line 775) | static int thread_run(sb_test_t *test, int thread_id)
function sb_rand_exp (line 852) | static inline double sb_rand_exp(double lambda)
function threads_started_callback (line 1033) | static int threads_started_callback(void *arg)
function run_test (line 1057) | static int run_test(sb_test_t *test)
function sb_test_t (line 1268) | static sb_test_t *find_test(const char *name)
function checkpoint_cmp (line 1284) | static int checkpoint_cmp(const void *a_ptr, const void *b_ptr)
function init (line 1293) | static int init(void)
function main (line 1438) | int main(int argc, char *argv[])
function sb_print_test_options (line 1611) | void sb_print_test_options(void)
FILE: src/sysbench.h
type sb_event_type_t (line 56) | typedef enum
type sb_test (line 70) | struct sb_test
type sb_event_t (line 72) | typedef struct
type sb_stat_t (line 88) | typedef struct {
type sb_event_t (line 127) | typedef sb_event_t sb_op_next_event(int);
type sb_builtin_cmds_t (line 136) | typedef struct
type sb_operations_t (line 146) | typedef struct
type sb_test_t (line 167) | typedef struct sb_test
type sb_globals_t (line 180) | typedef struct
FILE: src/tests/cpu/sb_cpu.c
function register_test_cpu (line 65) | int register_test_cpu(sb_list_t * tests)
function cpu_init (line 72) | int cpu_init(void)
function sb_event_t (line 86) | sb_event_t cpu_next_event(int thread_id)
function cpu_execute_event (line 97) | int cpu_execute_event(sb_event_t *r, int thread_id)
function cpu_print_mode (line 122) | void cpu_print_mode(void)
function cpu_report_cumulative (line 130) | void cpu_report_cumulative(sb_stat_t *stat)
function cpu_done (line 140) | int cpu_done(void)
FILE: src/tests/fileio/crc32.c
type u4 (line 41) | typedef unsigned int u4;
type u4 (line 44) | typedef unsigned long u4;
type u4 (line 47) | typedef unsigned short u4;
function local (line 104) | local void make_crc_table()
function local (line 168) | local void write_table(out, table)
function crc32 (line 194) | unsigned long ZEXPORT crc32(crc, buf, len)
function crc32_little (line 237) | local unsigned long crc32_little(crc, buf, len)
function crc32_big (line 277) | local unsigned long crc32_big(crc, buf, len)
FILE: src/tests/fileio/sb_fileio.c
type FILE_DESCRIPTOR (line 60) | typedef int FILE_DESCRIPTOR;
type file_test_mode_t (line 66) | typedef enum
type file_fsync_mode_t (line 78) | typedef enum
type file_io_mode_t (line 85) | typedef enum
type file_flags_t (line 92) | typedef enum {
type sb_aio_context_t (line 100) | typedef struct
type sb_aio_oper_t (line 108) | typedef struct
type sb_per_thread_t (line 118) | typedef struct
type iocb (line 261) | struct iocb
function register_test_fileio (line 275) | int register_test_fileio(sb_list_t *tests)
function file_init (line 283) | int file_init(void)
function file_prepare (line 306) | int file_prepare(void)
function file_done (line 368) | int file_done(void)
function sb_event_t (line 396) | sb_event_t file_next_event(int thread_id)
function sb_event_t (line 410) | sb_event_t file_get_seq_request(void)
function sb_event_t (line 483) | sb_event_t file_get_rnd_request(int thread_id)
function file_execute_event (line 562) | int file_execute_event(sb_event_t *sb_req, int thread_id)
function print_file_extra_flags (line 670) | static void print_file_extra_flags(void)
function file_print_mode (line 680) | void file_print_mode(void)
function file_report_intermediate (line 733) | void file_report_intermediate(sb_stat_t *stat)
function file_report_cumulative (line 749) | void file_report_cumulative(sb_stat_t *stat)
function convert_extra_flags (line 844) | static int convert_extra_flags(file_flags_t extra_flags, int *open_flags)
function create_files (line 891) | int create_files(void)
function remove_files (line 974) | int remove_files(void)
function file_cmd_prepare (line 994) | int file_cmd_prepare(void)
function file_cmd_cleanup (line 1013) | int file_cmd_cleanup(void)
function init_vars (line 1021) | void init_vars(void)
function file_thread_done (line 1042) | int file_thread_done(int thread_id)
function file_async_init (line 1065) | int file_async_init(void)
function file_async_done (line 1105) | int file_async_done(void)
function file_submit_or_wait (line 1129) | int file_submit_or_wait(struct iocb *iocb, sb_file_op_t type, ssize_t len,
function file_wait (line 1166) | int file_wait(int thread_id, long nreq)
function file_mmap_prepare (line 1247) | int file_mmap_prepare(void)
function file_mmap_done (line 1290) | int file_mmap_done(void)
function file_do_fsync (line 1310) | int file_do_fsync(unsigned int id, int thread_id)
function file_fsync (line 1368) | int file_fsync(unsigned int id, int thread_id)
function file_pread (line 1382) | ssize_t file_pread(unsigned int file_id, void *buf, ssize_t count,
function file_pwrite (line 1442) | ssize_t file_pwrite(unsigned int file_id, void *buf, ssize_t count,
function parse_arguments (line 1507) | int parse_arguments(void)
function check_seq_req (line 1693) | void check_seq_req(sb_file_request_t *prev_req, sb_file_request_t *r)
function sb_get_allocation_granularity (line 1738) | size_t sb_get_allocation_granularity(void)
function sb_free_memaligned (line 1743) | static void sb_free_memaligned(void *buf)
function FILE_DESCRIPTOR (line 1748) | static FILE_DESCRIPTOR sb_open(const char *name)
function sb_create (line 1775) | static int sb_create(const char *path)
function file_fill_buffer (line 1791) | void file_fill_buffer(unsigned char *buf, unsigned int len,
function file_validate_buffer (line 1810) | int file_validate_buffer(unsigned char *buf, unsigned int len, size_t o...
FILE: src/tests/memory/sb_memory.c
function register_test_memory (line 103) | int register_test_memory(sb_list_t *tests)
function memory_init (line 111) | int memory_init(void)
function sb_event_t (line 251) | sb_event_t memory_next_event(int tid)
function event_rnd_none (line 281) | int event_rnd_none(sb_event_t *req, int tid)
function event_rnd_read (line 296) | int event_rnd_read(sb_event_t *req, int tid)
function event_rnd_write (line 311) | int event_rnd_write(sb_event_t *req, int tid)
function event_seq_none (line 325) | int event_seq_none(sb_event_t *req, int tid)
function event_seq_read (line 339) | int event_seq_read(sb_event_t *req, int tid)
function event_seq_write (line 353) | int event_seq_write(sb_event_t *req, int tid)
function memory_print_mode (line 366) | void memory_print_mode(void)
function memory_report_intermediate (line 412) | void memory_report_intermediate(sb_stat_t *stat)
function memory_report_cumulative (line 425) | void memory_report_cumulative(sb_stat_t *stat)
type shmid_ds (line 450) | struct shmid_ds
FILE: src/tests/mutex/sb_mutex.c
type thread_lock (line 31) | typedef struct
function register_test_mutex (line 79) | int register_test_mutex(sb_list_t *tests)
function mutex_init (line 87) | int mutex_init(void)
function mutex_done (line 109) | int mutex_done(void)
function sb_event_t (line 121) | sb_event_t mutex_next_event(int thread_id)
function mutex_execute_event (line 142) | int mutex_execute_event(sb_event_t *sb_req, int thread_id)
function mutex_print_mode (line 168) | void mutex_print_mode(void)
FILE: src/tests/sb_fileio.h
type sb_file_op_t (line 23) | typedef enum
type sb_file_request_t (line 33) | typedef struct
FILE: src/tests/sb_memory.h
type sb_mem_op_t (line 23) | typedef enum
type sb_mem_scope_t (line 32) | typedef enum
FILE: src/tests/sb_mutex.h
type sb_mutex_request_t (line 24) | typedef struct
FILE: src/tests/sb_threads.h
type sb_threads_request_t (line 24) | typedef struct
FILE: src/tests/threads/sb_threads.c
function register_test_threads (line 75) | int register_test_threads(sb_list_t *tests)
function threads_init (line 83) | int threads_init(void)
function threads_prepare (line 93) | int threads_prepare(void)
function threads_cleanup (line 112) | int threads_cleanup(void)
function sb_event_t (line 124) | sb_event_t threads_next_event(int thread_id)
function threads_execute_event (line 138) | int threads_execute_event(sb_event_t *sb_req, int thread_id)
function threads_print_mode (line 156) | void threads_print_mode(void)
FILE: src/xoroshiro128plus.h
function xoroshiro_rotl (line 34) | inline uint64_t xoroshiro_rotl(const uint64_t x, int k) {
function xoroshiro_next (line 38) | inline uint64_t xoroshiro_next(uint64_t s[2]) {
function xoroshiro_jump (line 55) | static inline void xoroshiro_jump(uint64_t s[2]) {
FILE: third_party/concurrency_kit/ck/include/ck_array.h
type _ck_array (line 37) | struct _ck_array {
type ck_array (line 43) | struct ck_array {
type ck_array_t (line 49) | typedef struct ck_array ck_array_t;
type ck_array_iterator (line 51) | struct ck_array_iterator {
type ck_array_iterator_t (line 54) | typedef struct ck_array_iterator ck_array_iterator_t;
type ck_malloc (line 59) | struct ck_malloc
function ck_array_length (line 66) | int
function CK_CC_INLINE (line 75) | CK_CC_INLINE static void *
function CK_CC_INLINE (line 85) | CK_CC_INLINE static bool
FILE: third_party/concurrency_kit/ck/include/ck_backoff.h
type ck_backoff_t (line 39) | typedef unsigned int ck_backoff_t;
function CK_CC_INLINE (line 44) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/ck_barrier.h
type ck_barrier_centralized (line 33) | struct ck_barrier_centralized {
type ck_barrier_centralized_t (line 37) | typedef struct ck_barrier_centralized ck_barrier_centralized_t;
type ck_barrier_centralized_state (line 39) | struct ck_barrier_centralized_state {
type ck_barrier_centralized_state_t (line 42) | typedef struct ck_barrier_centralized_state ck_barrier_centralized_state_t;
type ck_barrier_combining_group (line 50) | struct ck_barrier_combining_group {
type ck_barrier_combining_group_t (line 59) | typedef struct ck_barrier_combining_group ck_barrier_combining_group_t;
type ck_barrier_combining_state (line 61) | struct ck_barrier_combining_state {
type ck_barrier_combining_state_t (line 64) | typedef struct ck_barrier_combining_state ck_barrier_combining_state_t;
type ck_barrier_combining (line 68) | struct ck_barrier_combining {
type ck_barrier_combining_t (line 72) | typedef struct ck_barrier_combining ck_barrier_combining_t;
type ck_barrier_dissemination_flag (line 83) | struct ck_barrier_dissemination_flag {
type ck_barrier_dissemination_flag_t (line 87) | typedef struct ck_barrier_dissemination_flag ck_barrier_dissemination_fl...
type ck_barrier_dissemination (line 89) | struct ck_barrier_dissemination {
type ck_barrier_dissemination_t (line 95) | typedef struct ck_barrier_dissemination ck_barrier_dissemination_t;
type ck_barrier_dissemination_state (line 97) | struct ck_barrier_dissemination_state {
type ck_barrier_dissemination_state_t (line 102) | typedef struct ck_barrier_dissemination_state ck_barrier_dissemination_s...
type ck_barrier_tournament_round (line 115) | struct ck_barrier_tournament_round {
type ck_barrier_tournament_round_t (line 120) | typedef struct ck_barrier_tournament_round ck_barrier_tournament_round_t;
type ck_barrier_tournament (line 122) | struct ck_barrier_tournament {
type ck_barrier_tournament_t (line 127) | typedef struct ck_barrier_tournament ck_barrier_tournament_t;
type ck_barrier_tournament_state (line 129) | struct ck_barrier_tournament_state {
type ck_barrier_tournament_state_t (line 133) | typedef struct ck_barrier_tournament_state ck_barrier_tournament_state_t;
type ck_barrier_mcs (line 143) | struct ck_barrier_mcs {
type ck_barrier_mcs_t (line 152) | typedef struct ck_barrier_mcs ck_barrier_mcs_t;
type ck_barrier_mcs_state (line 154) | struct ck_barrier_mcs_state {
type ck_barrier_mcs_state_t (line 158) | typedef struct ck_barrier_mcs_state ck_barrier_mcs_state_t;
FILE: third_party/concurrency_kit/ck/include/ck_bitmap.h
type ck_bitmap (line 117) | struct ck_bitmap {
type ck_bitmap_t (line 121) | typedef struct ck_bitmap ck_bitmap_t;
type ck_bitmap_iterator (line 123) | struct ck_bitmap_iterator {
type ck_bitmap_iterator_t (line 128) | typedef struct ck_bitmap_iterator ck_bitmap_iterator_t;
function ck_bitmap_base (line 130) | int
function ck_bitmap_size (line 141) | int
function ck_bitmap_bits (line 151) | int
function CK_CC_INLINE (line 162) | CK_CC_INLINE static void *
function CK_CC_INLINE (line 172) | CK_CC_INLINE static void
function CK_CC_INLINE (line 186) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 197) | CK_CC_INLINE static void
function CK_CC_INLINE (line 209) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 222) | CK_CC_INLINE static void
function CK_CC_INLINE (line 245) | CK_CC_INLINE static void
function CK_CC_INLINE (line 273) | CK_CC_INLINE static void
function CK_CC_INLINE (line 296) | CK_CC_INLINE static void
function CK_CC_INLINE (line 314) | CK_CC_INLINE static bool
function CK_CC_UNUSED (line 345) | CK_CC_UNUSED static bool
function ck_bitmap_count (line 376) | int
function ck_bitmap_count_intersect (line 403) | int
function CK_CC_INLINE (line 441) | CK_CC_INLINE static void
function CK_CC_INLINE (line 466) | CK_CC_INLINE static void
function CK_CC_INLINE (line 484) | CK_CC_INLINE static bool
FILE: third_party/concurrency_kit/ck/include/ck_brlock.h
type ck_brlock_reader (line 47) | struct ck_brlock_reader {
type ck_brlock_reader_t (line 52) | typedef struct ck_brlock_reader ck_brlock_reader_t;
type ck_brlock (line 56) | struct ck_brlock {
type ck_brlock_t (line 60) | typedef struct ck_brlock ck_brlock_t;
function CK_CC_INLINE (line 64) | CK_CC_INLINE static void
function CK_CC_INLINE (line 74) | CK_CC_INLINE static void
function CK_CC_INLINE (line 98) | CK_CC_INLINE static void
function CK_CC_INLINE (line 107) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 141) | CK_CC_INLINE static void
function CK_CC_INLINE (line 160) | CK_CC_INLINE static void
function CK_CC_INLINE (line 178) | CK_CC_INLINE static void
function CK_CC_INLINE (line 219) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 270) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/ck_bytelock.h
type ck_bytelock (line 45) | struct ck_bytelock {
type ck_bytelock_t (line 50) | typedef struct ck_bytelock ck_bytelock_t;
function CK_CC_INLINE (line 55) | CK_CC_INLINE static void
function CK_CC_INLINE (line 81) | CK_CC_INLINE static void
function CK_CC_INLINE (line 118) | CK_CC_INLINE static void
function CK_CC_INLINE (line 127) | CK_CC_INLINE static void
function CK_CC_INLINE (line 182) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/ck_cc.h
function CK_CC_INLINE (line 109) | CK_CC_INLINE static int
function CK_CC_INLINE (line 127) | CK_CC_INLINE static int
function CK_CC_INLINE (line 145) | CK_CC_INLINE static int
function CK_CC_INLINE (line 161) | CK_CC_INLINE static int
FILE: third_party/concurrency_kit/ck/include/ck_cohort.h
type ck_cohort_state (line 41) | enum ck_cohort_state {
FILE: third_party/concurrency_kit/ck/include/ck_elide.h
type ck_elide_config (line 49) | struct ck_elide_config {
type ck_elide_stat (line 67) | struct ck_elide_stat {
type ck_elide_stat_t (line 72) | typedef struct ck_elide_stat ck_elide_stat_t;
function CK_CC_INLINE (line 76) | CK_CC_INLINE static void
type _ck_elide_hint (line 85) | enum _ck_elide_hint {
function _ck_elide_fallback (line 93) | static enum _ck_elide_hint
FILE: third_party/concurrency_kit/ck/include/ck_epoch.h
type ck_epoch_entry (line 52) | struct ck_epoch_entry
type ck_epoch_entry_t (line 53) | typedef struct ck_epoch_entry ck_epoch_entry_t;
type ck_epoch_entry (line 60) | struct ck_epoch_entry {
type ck_epoch_section (line 69) | struct ck_epoch_section {
type ck_epoch_section_t (line 72) | typedef struct ck_epoch_section ck_epoch_section_t;
type ck_epoch_ref (line 80) | struct ck_epoch_ref {
type ck_epoch_record (line 85) | struct ck_epoch_record {
type ck_epoch_record_t (line 100) | typedef struct ck_epoch_record ck_epoch_record_t;
type ck_epoch (line 102) | struct ck_epoch {
type ck_epoch_t (line 107) | typedef struct ck_epoch ck_epoch_t;
function CK_CC_FORCE_INLINE (line 115) | CK_CC_FORCE_INLINE static void *
function CK_CC_FORCE_INLINE (line 125) | CK_CC_FORCE_INLINE static void
function CK_CC_FORCE_INLINE (line 173) | CK_CC_FORCE_INLINE static bool
function CK_CC_FORCE_INLINE (line 195) | CK_CC_FORCE_INLINE static void
function CK_CC_FORCE_INLINE (line 213) | CK_CC_FORCE_INLINE static void
function ck_epoch_value (line 240) | int
FILE: third_party/concurrency_kit/ck/include/ck_fifo.h
type ck_fifo_spsc_entry (line 39) | struct ck_fifo_spsc_entry {
type ck_fifo_spsc_entry_t (line 43) | typedef struct ck_fifo_spsc_entry ck_fifo_spsc_entry_t;
type ck_fifo_spsc (line 45) | struct ck_fifo_spsc {
type ck_fifo_spsc_t (line 54) | typedef struct ck_fifo_spsc ck_fifo_spsc_t;
function CK_CC_INLINE (line 56) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 63) | CK_CC_INLINE static void
function CK_CC_INLINE (line 71) | CK_CC_INLINE static void
function CK_CC_INLINE (line 79) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 86) | CK_CC_INLINE static void
function CK_CC_INLINE (line 94) | CK_CC_INLINE static void
function CK_CC_INLINE (line 102) | CK_CC_INLINE static void
function CK_CC_INLINE (line 114) | CK_CC_INLINE static void
function CK_CC_INLINE (line 123) | CK_CC_INLINE static void
function CK_CC_INLINE (line 139) | CK_CC_INLINE static bool
function ck_fifo_spsc_entry (line 164) | ck_fifo_spsc_entry *
function CK_CC_INLINE (line 180) | CK_CC_INLINE static bool
type ck_fifo_mpmc_entry (line 205) | struct ck_fifo_mpmc_entry
type ck_fifo_mpmc_pointer (line 206) | struct ck_fifo_mpmc_pointer {
type ck_fifo_mpmc_entry (line 211) | struct ck_fifo_mpmc_entry {
type ck_fifo_mpmc_entry_t (line 215) | typedef struct ck_fifo_mpmc_entry ck_fifo_mpmc_entry_t;
type ck_fifo_mpmc (line 217) | struct ck_fifo_mpmc {
type ck_fifo_mpmc_t (line 222) | typedef struct ck_fifo_mpmc ck_fifo_mpmc_t;
function CK_CC_INLINE (line 224) | CK_CC_INLINE static void
function CK_CC_INLINE (line 235) | CK_CC_INLINE static void
function CK_CC_INLINE (line 244) | CK_CC_INLINE static void
function CK_CC_INLINE (line 301) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 354) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 409) | CK_CC_INLINE static bool
FILE: third_party/concurrency_kit/ck/include/ck_hp.h
type ck_hp_hazard (line 39) | struct ck_hp_hazard
type ck_hp (line 42) | struct ck_hp {
type ck_hp_t (line 50) | typedef struct ck_hp ck_hp_t;
type ck_hp_hazard (line 52) | struct ck_hp_hazard {
type ck_hp_hazard_t (line 57) | typedef struct ck_hp_hazard ck_hp_hazard_t;
type ck_hp_record (line 64) | struct ck_hp_record {
type ck_hp_record_t (line 75) | typedef struct ck_hp_record ck_hp_record_t;
function CK_CC_INLINE (line 77) | CK_CC_INLINE static void
function CK_CC_INLINE (line 85) | CK_CC_INLINE static void
function CK_CC_INLINE (line 99) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/ck_hp_fifo.h
type ck_hp_fifo_entry (line 46) | struct ck_hp_fifo_entry {
type ck_hp_fifo_entry_t (line 51) | typedef struct ck_hp_fifo_entry ck_hp_fifo_entry_t;
type ck_hp_fifo (line 53) | struct ck_hp_fifo {
type ck_hp_fifo_t (line 57) | typedef struct ck_hp_fifo ck_hp_fifo_t;
function CK_CC_INLINE (line 59) | CK_CC_INLINE static void
function CK_CC_INLINE (line 68) | CK_CC_INLINE static void
function CK_CC_INLINE (line 77) | CK_CC_INLINE static void
function CK_CC_INLINE (line 108) | CK_CC_INLINE static bool
function ck_hp_fifo_entry (line 137) | ck_hp_fifo_entry *
function ck_hp_fifo_entry (line 171) | ck_hp_fifo_entry *
FILE: third_party/concurrency_kit/ck/include/ck_hp_stack.h
function CK_CC_INLINE (line 39) | CK_CC_INLINE static void
function CK_CC_INLINE (line 47) | CK_CC_INLINE static bool
function ck_stack_entry (line 54) | ck_stack_entry *
function CK_CC_INLINE (line 86) | CK_CC_INLINE static bool
FILE: third_party/concurrency_kit/ck/include/ck_hs.h
type ck_hs_map (line 83) | struct ck_hs_map
type ck_hs (line 84) | struct ck_hs {
type ck_hs_t (line 92) | typedef struct ck_hs ck_hs_t;
type ck_hs_stat (line 94) | struct ck_hs_stat {
type ck_hs_iterator (line 100) | struct ck_hs_iterator {
type ck_hs_iterator_t (line 105) | typedef struct ck_hs_iterator ck_hs_iterator_t;
type ck_malloc (line 118) | struct ck_malloc
type ck_malloc (line 120) | struct ck_malloc
type ck_hs_stat (line 134) | struct ck_hs_stat
FILE: third_party/concurrency_kit/ck/include/ck_ht.h
type ck_ht_hash (line 53) | struct ck_ht_hash {
type ck_ht_hash_t (line 56) | typedef struct ck_ht_hash ck_ht_hash_t;
type ck_ht_entry (line 70) | struct ck_ht_entry {
function ck_ht_entry_empty (line 134) | static bool
function CK_CC_INLINE (line 141) | CK_CC_INLINE static void
function CK_CC_INLINE (line 149) | CK_CC_INLINE static void
function CK_CC_INLINE (line 163) | CK_CC_INLINE static void *
function CK_CC_INLINE (line 174) | CK_CC_INLINE static uint16_t
function CK_CC_INLINE (line 185) | CK_CC_INLINE static void *
function CK_CC_INLINE (line 196) | CK_CC_INLINE static void
function CK_CC_INLINE (line 217) | CK_CC_INLINE static void
function CK_CC_INLINE (line 235) | CK_CC_INLINE static uintptr_t
function CK_CC_INLINE (line 242) | CK_CC_INLINE static uintptr_t
type ck_ht_stat (line 255) | struct ck_ht_stat
type ck_malloc (line 259) | struct ck_malloc
type ck_ht (line 264) | struct ck_ht
FILE: third_party/concurrency_kit/ck/include/ck_malloc.h
type ck_malloc (line 33) | struct ck_malloc {
FILE: third_party/concurrency_kit/ck/include/ck_pflock.h
type ck_pflock (line 41) | struct ck_pflock {
type ck_pflock_t (line 47) | typedef struct ck_pflock ck_pflock_t;
function CK_CC_INLINE (line 57) | CK_CC_INLINE static void
function CK_CC_INLINE (line 70) | CK_CC_INLINE static void
function CK_CC_INLINE (line 84) | CK_CC_INLINE static void
function CK_CC_INLINE (line 110) | CK_CC_INLINE static void
function CK_CC_INLINE (line 119) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/ck_pr.h
function CK_CC_INLINE (line 158) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/ck_queue.h
type type (line 223) | struct type
type type (line 355) | struct type
FILE: third_party/concurrency_kit/ck/include/ck_rhs.h
type ck_rhs_map (line 82) | struct ck_rhs_map
type ck_rhs (line 83) | struct ck_rhs {
type ck_rhs_t (line 92) | typedef struct ck_rhs ck_rhs_t;
type ck_rhs_stat (line 94) | struct ck_rhs_stat {
type ck_rhs_iterator (line 99) | struct ck_rhs_iterator {
type ck_rhs_iterator_t (line 103) | typedef struct ck_rhs_iterator ck_rhs_iterator_t;
type ck_malloc (line 115) | struct ck_malloc
type ck_malloc (line 117) | struct ck_malloc
type ck_rhs_stat (line 131) | struct ck_rhs_stat
FILE: third_party/concurrency_kit/ck/include/ck_ring.h
type ck_ring (line 40) | struct ck_ring {
type ck_ring_t (line 49) | typedef struct ck_ring ck_ring_t;
type ck_ring_buffer (line 51) | struct ck_ring_buffer {
type ck_ring_buffer_t (line 54) | typedef struct ck_ring_buffer ck_ring_buffer_t;
function ck_ring_size (line 56) | int
function ck_ring_capacity (line 66) | int
function CK_CC_INLINE (line 72) | CK_CC_INLINE static void
function CK_CC_FORCE_INLINE (line 87) | CK_CC_FORCE_INLINE static bool
function CK_CC_FORCE_INLINE (line 118) | CK_CC_FORCE_INLINE static bool
function CK_CC_FORCE_INLINE (line 133) | CK_CC_FORCE_INLINE static bool
function CK_CC_FORCE_INLINE (line 166) | CK_CC_FORCE_INLINE static bool
function CK_CC_FORCE_INLINE (line 252) | CK_CC_FORCE_INLINE static bool
function CK_CC_FORCE_INLINE (line 267) | CK_CC_FORCE_INLINE static bool
function CK_CC_FORCE_INLINE (line 292) | CK_CC_FORCE_INLINE static bool
function CK_CC_INLINE (line 336) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 347) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 357) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 372) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 382) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 393) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 403) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 418) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 429) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 439) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 448) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 462) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 472) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 483) | CK_CC_INLINE static bool
FILE: third_party/concurrency_kit/ck/include/ck_rwlock.h
type ck_rwlock (line 35) | struct ck_rwlock {
type ck_rwlock_t (line 39) | typedef struct ck_rwlock ck_rwlock_t;
function CK_CC_INLINE (line 43) | CK_CC_INLINE static void
function CK_CC_INLINE (line 53) | CK_CC_INLINE static void
function CK_CC_INLINE (line 62) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 72) | CK_CC_INLINE static void
function CK_CC_INLINE (line 81) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 92) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 113) | CK_CC_INLINE static void
function CK_CC_INLINE (line 133) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 160) | CK_CC_INLINE static void
function CK_CC_INLINE (line 187) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 195) | CK_CC_INLINE static void
type ck_rwlock_recursive (line 211) | struct ck_rwlock_recursive {
type ck_rwlock_recursive_t (line 215) | typedef struct ck_rwlock_recursive ck_rwlock_recursive_t;
function CK_CC_INLINE (line 219) | CK_CC_INLINE static void
function CK_CC_INLINE (line 242) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 267) | CK_CC_INLINE static void
function CK_CC_INLINE (line 279) | CK_CC_INLINE static void
function CK_CC_INLINE (line 287) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 294) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/ck_sequence.h
type ck_sequence (line 34) | struct ck_sequence {
type ck_sequence_t (line 37) | typedef struct ck_sequence ck_sequence_t;
function CK_CC_INLINE (line 41) | CK_CC_INLINE static void
function ck_sequence_read_begin (line 49) | int
function CK_CC_INLINE (line 76) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 96) | CK_CC_INLINE static void
function CK_CC_INLINE (line 112) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/ck_stack.h
type ck_stack_entry (line 35) | struct ck_stack_entry {
type ck_stack_entry_t (line 38) | typedef struct ck_stack_entry ck_stack_entry_t;
type ck_stack (line 40) | struct ck_stack {
type ck_stack_t (line 44) | typedef struct ck_stack ck_stack_t;
function CK_CC_INLINE (line 53) | CK_CC_INLINE static void
function CK_CC_INLINE (line 77) | CK_CC_INLINE static bool
function ck_stack_entry (line 95) | ck_stack_entry *
function CK_CC_INLINE (line 126) | CK_CC_INLINE static bool
function ck_stack_entry (line 150) | ck_stack_entry *
function CK_CC_INLINE (line 166) | CK_CC_INLINE static void
function CK_CC_INLINE (line 180) | CK_CC_INLINE static bool
function ck_stack_entry (line 194) | ck_stack_entry *
function CK_CC_INLINE (line 228) | CK_CC_INLINE static bool
function ck_stack_entry (line 259) | ck_stack_entry *
function CK_CC_INLINE (line 272) | CK_CC_INLINE static void
function CK_CC_INLINE (line 290) | CK_CC_INLINE static void
function ck_stack_entry (line 302) | ck_stack_entry *
function ck_stack_entry (line 319) | ck_stack_entry *
function CK_CC_INLINE (line 333) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/ck_swlock.h
type ck_swlock (line 37) | struct ck_swlock {
type ck_swlock_t (line 40) | typedef struct ck_swlock ck_swlock_t;
function CK_CC_INLINE (line 48) | CK_CC_INLINE static void
function CK_CC_INLINE (line 57) | CK_CC_INLINE static void
function CK_CC_INLINE (line 66) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 76) | CK_CC_INLINE static void
function CK_CC_INLINE (line 85) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 95) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 108) | CK_CC_INLINE static void
function CK_CC_INLINE (line 120) | CK_CC_INLINE static void
function CK_CC_INLINE (line 139) | CK_CC_INLINE static void
function CK_CC_INLINE (line 155) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 171) | CK_CC_INLINE static void
function CK_CC_INLINE (line 197) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 205) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/ck_tflock.h
type ck_tflock_ticket (line 41) | struct ck_tflock_ticket {
type ck_tflock_ticket_t (line 45) | typedef struct ck_tflock_ticket ck_tflock_ticket_t;
function CK_CC_INLINE (line 55) | CK_CC_INLINE static uint32_t
function CK_CC_INLINE (line 72) | CK_CC_INLINE static void
function CK_CC_INLINE (line 81) | CK_CC_INLINE static void
function CK_CC_INLINE (line 96) | CK_CC_INLINE static void
function CK_CC_INLINE (line 106) | CK_CC_INLINE static void
function CK_CC_INLINE (line 126) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/gcc/aarch64/ck_pr.h
function CK_CC_INLINE (line 49) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/gcc/aarch64/ck_pr_llsc.h
function CK_CC_INLINE (line 35) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 60) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 69) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 91) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 283) | CK_CC_INLINE static void *
function CK_CC_INLINE (line 303) | CK_CC_INLINE static uint64_t
FILE: third_party/concurrency_kit/ck/include/gcc/aarch64/ck_pr_lse.h
function CK_CC_INLINE (line 36) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 60) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 69) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 87) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 244) | CK_CC_INLINE static void *
function CK_CC_INLINE (line 259) | CK_CC_INLINE static uint64_t
FILE: third_party/concurrency_kit/ck/include/gcc/arm/ck_pr.h
function CK_CC_INLINE (line 49) | CK_CC_INLINE static void
function CK_CC_INLINE (line 240) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 284) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 298) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 319) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 511) | CK_CC_INLINE static void *
FILE: third_party/concurrency_kit/ck/include/gcc/ck_cc.h
function CK_CC_INLINE (line 114) | CK_CC_INLINE static int
function CK_CC_INLINE (line 121) | CK_CC_INLINE static int
function CK_CC_INLINE (line 128) | CK_CC_INLINE static int
function CK_CC_INLINE (line 135) | CK_CC_INLINE static int
FILE: third_party/concurrency_kit/ck/include/gcc/ck_pr.h
function CK_CC_INLINE (line 36) | CK_CC_INLINE static void
function CK_CC_INLINE (line 77) | CK_CC_INLINE static void *
function CK_CC_INLINE (line 89) | CK_CC_INLINE static void
function CK_CC_INLINE (line 115) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/gcc/ppc/ck_pr.h
function CK_CC_INLINE (line 54) | CK_CC_INLINE static void
function CK_CC_INLINE (line 283) | CK_CC_INLINE static void *
FILE: third_party/concurrency_kit/ck/include/gcc/ppc64/ck_pr.h
function CK_CC_INLINE (line 53) | CK_CC_INLINE static void
function CK_CC_INLINE (line 152) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 174) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 196) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 217) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 383) | CK_CC_INLINE static void *
FILE: third_party/concurrency_kit/ck/include/gcc/s390x/ck_pr.h
function CK_CC_INLINE (line 54) | CK_CC_INLINE static void
function CK_CC_INLINE (line 115) | CK_CC_INLINE static double
function CK_CC_INLINE (line 154) | CK_CC_INLINE static void
function CK_CC_INLINE (line 167) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 174) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 186) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 192) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 223) | CK_CC_INLINE static void *
function CK_CC_INLINE (line 242) | CK_CC_INLINE static double
FILE: third_party/concurrency_kit/ck/include/gcc/sparcv9/ck_pr.h
function CK_CC_INLINE (line 51) | CK_CC_INLINE static void
function CK_CC_INLINE (line 139) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 153) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 166) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 173) | CK_CC_INLINE static bool
FILE: third_party/concurrency_kit/ck/include/gcc/x86/ck_pr.h
function CK_CC_INLINE (line 58) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/gcc/x86_64/ck_pr.h
function CK_CC_INLINE (line 64) | CK_CC_INLINE static void
function CK_CC_INLINE (line 103) | CK_CC_INLINE static void
function CK_CC_INLINE (line 182) | CK_CC_INLINE static void
function CK_CC_INLINE (line 195) | CK_CC_INLINE static void
function CK_CC_INLINE (line 466) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 483) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 491) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 513) | CK_CC_INLINE static bool
FILE: third_party/concurrency_kit/ck/include/gcc/x86_64/ck_pr_rtm.h
function ck_pr_rtm_begin (line 64) | int
function CK_CC_INLINE (line 78) | CK_CC_INLINE static void
function CK_CC_INLINE (line 86) | CK_CC_INLINE static void
function CK_CC_INLINE (line 94) | CK_CC_INLINE static bool
FILE: third_party/concurrency_kit/ck/include/spinlock/anderson.h
type ck_spinlock_anderson_thread (line 41) | struct ck_spinlock_anderson_thread {
type ck_spinlock_anderson_thread_t (line 45) | typedef struct ck_spinlock_anderson_thread ck_spinlock_anderson_thread_t;
type ck_spinlock_anderson (line 47) | struct ck_spinlock_anderson {
type ck_spinlock_anderson_t (line 55) | typedef struct ck_spinlock_anderson ck_spinlock_anderson_t;
function CK_CC_INLINE (line 57) | CK_CC_INLINE static void
function CK_CC_INLINE (line 90) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 102) | CK_CC_INLINE static void
function CK_CC_INLINE (line 149) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/spinlock/cas.h
type ck_spinlock_cas (line 41) | struct ck_spinlock_cas {
type ck_spinlock_cas_t (line 44) | typedef struct ck_spinlock_cas ck_spinlock_cas_t;
function CK_CC_INLINE (line 48) | CK_CC_INLINE static void
function CK_CC_INLINE (line 57) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 67) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 76) | CK_CC_INLINE static void
function CK_CC_INLINE (line 89) | CK_CC_INLINE static void
function CK_CC_INLINE (line 101) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/spinlock/clh.h
type ck_spinlock_clh (line 39) | struct ck_spinlock_clh {
type ck_spinlock_clh_t (line 43) | typedef struct ck_spinlock_clh ck_spinlock_clh_t;
function CK_CC_INLINE (line 45) | CK_CC_INLINE static void
function CK_CC_INLINE (line 56) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 68) | CK_CC_INLINE static void
function CK_CC_INLINE (line 93) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/spinlock/dec.h
type ck_spinlock_dec (line 43) | struct ck_spinlock_dec {
type ck_spinlock_dec_t (line 46) | typedef struct ck_spinlock_dec ck_spinlock_dec_t;
function CK_CC_INLINE (line 50) | CK_CC_INLINE static void
function CK_CC_INLINE (line 59) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 69) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 79) | CK_CC_INLINE static void
function CK_CC_INLINE (line 103) | CK_CC_INLINE static void
function CK_CC_INLINE (line 122) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/spinlock/fas.h
type ck_spinlock_fas (line 39) | struct ck_spinlock_fas {
type ck_spinlock_fas_t (line 42) | typedef struct ck_spinlock_fas ck_spinlock_fas_t;
function CK_CC_INLINE (line 46) | CK_CC_INLINE static void
function CK_CC_INLINE (line 55) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 66) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 76) | CK_CC_INLINE static void
function CK_CC_INLINE (line 89) | CK_CC_INLINE static void
function CK_CC_INLINE (line 101) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/spinlock/hclh.h
type ck_spinlock_hclh (line 38) | struct ck_spinlock_hclh {
type ck_spinlock_hclh_t (line 44) | typedef struct ck_spinlock_hclh ck_spinlock_hclh_t;
function CK_CC_INLINE (line 46) | CK_CC_INLINE static void
function CK_CC_INLINE (line 61) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 73) | CK_CC_INLINE static void
function CK_CC_INLINE (line 118) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/spinlock/mcs.h
type ck_spinlock_mcs (line 38) | struct ck_spinlock_mcs {
type ck_spinlock_mcs (line 42) | struct ck_spinlock_mcs
type ck_spinlock_mcs_context_t (line 43) | typedef struct ck_spinlock_mcs ck_spinlock_mcs_context_t;
function CK_CC_INLINE (line 47) | CK_CC_INLINE static void
function CK_CC_INLINE (line 56) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 71) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 81) | CK_CC_INLINE static void
function CK_CC_INLINE (line 115) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/include/spinlock/ticket.h
type ck_spinlock_ticket (line 71) | struct ck_spinlock_ticket {
type ck_spinlock_ticket_t (line 74) | typedef struct ck_spinlock_ticket ck_spinlock_ticket_t;
function CK_CC_INLINE (line 77) | CK_CC_INLINE static void
function CK_CC_INLINE (line 86) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 99) | CK_CC_INLINE static void
function CK_CC_INLINE (line 121) | CK_CC_INLINE static void
function CK_CC_INLINE (line 148) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 169) | CK_CC_INLINE static void
type ck_spinlock_ticket (line 191) | struct ck_spinlock_ticket {
type ck_spinlock_ticket_t (line 195) | typedef struct ck_spinlock_ticket ck_spinlock_ticket_t;
function CK_CC_INLINE (line 199) | CK_CC_INLINE static void
function CK_CC_INLINE (line 210) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 221) | CK_CC_INLINE static void
function CK_CC_INLINE (line 241) | CK_CC_INLINE static void
function CK_CC_INLINE (line 270) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/regressions/ck_array/validate/serial.c
function my_free (line 12) | static void
function main (line 40) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_backoff/validate/validate.c
function main (line 33) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_barrier/benchmark/throughput.c
type affinity (line 41) | struct affinity
type counter (line 45) | struct counter {
type counter (line 48) | struct counter
function main (line 81) | int
function main (line 128) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_barrier/validate/barrier_centralized.c
type affinity (line 51) | struct affinity
function main (line 83) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_barrier/validate/barrier_combining.c
type affinity (line 52) | struct affinity
function main (line 85) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_barrier/validate/barrier_dissemination.c
type affinity (line 52) | struct affinity
function main (line 85) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_barrier/validate/barrier_mcs.c
type affinity (line 52) | struct affinity
function main (line 86) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_barrier/validate/barrier_tournament.c
type affinity (line 52) | struct affinity
function main (line 89) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_bitmap/validate/serial.c
function check_iteration (line 44) | static void
function test (line 73) | static void
function test_init (line 153) | static void
function ck_bitmap_t (line 181) | static ck_bitmap_t *
function ck_bitmap_t (line 199) | static ck_bitmap_t *
function test_counts (line 210) | static void
function random_test (line 256) | static void
function main (line 313) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_brlock/benchmark/latency.c
function main (line 38) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_brlock/benchmark/throughput.c
type affinity (line 45) | struct affinity
function main (line 114) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_brlock/validate/validate.c
type affinity (line 47) | struct affinity
function main (line 118) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_bytelock/benchmark/latency.c
function main (line 38) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_bytelock/validate/validate.c
type block (line 47) | struct block {
type affinity (line 51) | struct affinity
type block (line 59) | struct block
function main (line 122) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_cohort/benchmark/throughput.c
type affinity (line 49) | struct affinity
type counters (line 52) | struct counters {
type counters (line 56) | struct counters
function ck_spinlock_fas_lock_with_context (line 62) | static void
function ck_spinlock_fas_unlock_with_context (line 71) | static void
function ck_spinlock_fas_locked_with_context (line 80) | static bool
type cohort_record (line 92) | struct cohort_record {
type cohort_record (line 95) | struct cohort_record
type block (line 99) | struct block {
type block (line 106) | struct block
function main (line 141) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_cohort/validate/validate.c
type affinity (line 43) | struct affinity
function ck_spinlock_fas_lock_with_context (line 48) | static void
function ck_spinlock_fas_unlock_with_context (line 55) | static void
function ck_spinlock_fas_locked_with_context (line 62) | static bool
function ck_spinlock_fas_trylock_with_context (line 69) | static bool
function main (line 149) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_epoch/validate/ck_epoch_call.c
function cb (line 36) | static void
function main (line 50) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_epoch/validate/ck_epoch_poll.c
type node (line 64) | struct node {
type node (line 71) | struct node
type node (line 72) | struct node
function destructor (line 76) | static void
type node (line 139) | struct node
type node (line 155) | struct node
type node (line 162) | struct node
function main (line 205) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_epoch/validate/ck_epoch_section.c
function setup_test (line 44) | static void
function teardown_test (line 56) | static void
function cleanup (line 69) | static void
function test_simple_read_section (line 79) | static void
function test_nested_read_section (line 100) | static void
type obj (line 131) | struct obj {
type obj (line 159) | struct obj
type obj (line 163) | struct obj
function obj_destroy (line 180) | static void
function test_single_reader_with_barrier_thread (line 191) | static void
function test_multiple_readers_with_barrier_thread (line 251) | static void
function main (line 302) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_epoch/validate/ck_epoch_section_2.c
type affinity (line 57) | struct affinity
function main (line 161) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_epoch/validate/ck_epoch_synchronize.c
type node (line 64) | struct node {
type node (line 71) | struct node
type node (line 72) | struct node
function destructor (line 76) | static void
type node (line 146) | struct node
type node (line 162) | struct node
type node (line 169) | struct node
function main (line 218) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_epoch/validate/ck_stack.c
type node (line 55) | struct node {
type node (line 62) | struct node
type node (line 63) | struct node
function destructor (line 66) | static void
type node (line 78) | struct node
type node (line 91) | struct node
type node (line 97) | struct node
function main (line 139) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_epoch/validate/torture.c
type affinity (line 66) | struct affinity
function test (line 68) | static void
function main (line 208) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_fifo/benchmark/latency.c
function main (line 43) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_fifo/validate/ck_fifo_mpmc.c
type context (line 40) | struct context {
type entry (line 46) | struct entry {
type affinity (line 57) | struct affinity
type context (line 65) | struct context
type entry (line 66) | struct entry
type entry (line 81) | struct entry
type entry (line 97) | struct entry
function main (line 115) | int
function main (line 161) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_fifo/validate/ck_fifo_mpmc_iterator.c
type example (line 33) | struct example {
function main (line 39) | int
function main (line 85) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_fifo/validate/ck_fifo_spsc.c
type context (line 40) | struct context {
type entry (line 46) | struct entry {
type affinity (line 53) | struct affinity
type context (line 60) | struct context
type entry (line 61) | struct entry
type entry (line 75) | struct entry
type entry (line 77) | struct entry
function main (line 117) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_fifo/validate/ck_fifo_spsc_iterator.c
type example (line 32) | struct example {
function main (line 38) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_hp/benchmark/fifo_latency.c
function main (line 47) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_hp/benchmark/stack_latency.c
function main (line 48) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_hp/validate/ck_hp_fifo.c
type context (line 39) | struct context {
type entry (line 45) | struct entry {
type affinity (line 54) | struct affinity
type context (line 62) | struct context
type entry (line 63) | struct entry
type entry (line 80) | struct entry
type entry (line 104) | struct entry
function destructor (line 127) | static void
function main (line 135) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_hp/validate/ck_hp_fifo_donner.c
function destructor (line 54) | static void
type entry (line 63) | struct entry {
type entry (line 71) | struct entry
type entry (line 111) | struct entry
function main (line 147) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_hp/validate/ck_hp_stack.c
type node (line 57) | struct node {
type node (line 64) | struct node
type node (line 70) | struct node
type node (line 85) | struct node
type node (line 91) | struct node
function destructor (line 131) | static void
function main (line 139) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_hp/validate/nbds_haz_test.c
type stack_entry (line 56) | struct stack_entry {
type stack_entry_t (line 59) | typedef struct stack_entry stack_entry_t;
type stack (line 61) | struct stack {
type hp_stack_t (line 65) | typedef struct stack hp_stack_t;
type node (line 79) | struct node {
type node (line 87) | struct node
function CK_CC_INLINE (line 93) | CK_CC_INLINE static void
function stack_entry (line 115) | stack_entry *
type node (line 146) | struct node
type node (line 171) | struct node
function destructor (line 192) | static void
function main (line 199) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_hp/validate/serial.c
type entry (line 43) | struct entry {
function destructor (line 48) | static void
function main (line 57) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_hs/benchmark/apply.c
function hs_free (line 55) | static void
type ck_malloc (line 67) | struct ck_malloc
function hs_hash (line 72) | static unsigned long
function hs_compare (line 82) | static bool
function set_destroy (line 89) | static void
function set_init (line 97) | static void
function set_count (line 110) | static size_t
function set_reset (line 117) | static bool
function run_test (line 133) | static void
function main (line 233) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_hs/benchmark/parallel_bytestring.c
type state (line 54) | enum state {
type affinity (line 64) | struct affinity
type hs_epoch (line 69) | struct hs_epoch {
function alarm_handler (line 75) | static void
function hs_hash (line 84) | static unsigned long
function hs_compare (line 94) | static bool
function hs_destroy (line 101) | static void
function hs_free (line 118) | static void
type ck_malloc (line 135) | struct ck_malloc
function set_init (line 140) | static void
function set_remove (line 160) | static bool
function set_replace (line 169) | static bool
function set_swap (line 179) | static bool
function set_insert (line 200) | static bool
function set_count (line 209) | static size_t
function set_reset (line 216) | static bool
function acc (line 280) | static uint64_t
function main (line 292) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_hs/benchmark/serial.c
function hs_free (line 54) | static void
type ck_malloc (line 66) | struct ck_malloc
function hs_hash (line 71) | static unsigned long
function hs_compare (line 81) | static bool
function set_destroy (line 88) | static void
function set_init (line 96) | static void
function set_remove (line 109) | static bool
function set_swap (line 118) | static bool
function set_replace (line 128) | static bool
function set_insert (line 150) | static bool
function set_insert_unique (line 159) | static bool
function set_count (line 168) | static size_t
function set_reset (line 175) | static bool
function set_gc (line 182) | static void
function set_rebuild (line 190) | static void
function keys_shuffle (line 198) | static void
function run_test (line 217) | static void
function main (line 490) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_hs/validate/serial.c
function hs_free (line 45) | static void
type ck_malloc (line 55) | struct ck_malloc
function hs_hash (line 70) | static unsigned long
function hs_compare (line 81) | static bool
function run_test (line 131) | static void
function main (line 348) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_ht/benchmark/parallel_bytestring.c
type state (line 56) | enum state {
type affinity (line 65) | struct affinity
type ht_epoch (line 71) | struct ht_epoch {
function alarm_handler (line 77) | static void
function ht_destroy (line 86) | static void
function ht_free (line 103) | static void
type ck_malloc (line 120) | struct ck_malloc
function table_init (line 125) | static void
function table_remove (line 145) | static bool
function table_replace (line 157) | static bool
function table_insert (line 184) | static bool
function table_count (line 196) | static size_t
function table_reset (line 203) | static bool
function main (line 264) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_ht/benchmark/parallel_direct.c
type state (line 54) | enum state {
type affinity (line 63) | struct affinity
type ht_epoch (line 69) | struct ht_epoch {
function alarm_handler (line 75) | static void
function ht_destroy (line 84) | static void
function ht_free (line 101) | static void
type ck_malloc (line 118) | struct ck_malloc
function hash_function (line 123) | static void
function table_init (line 134) | static void
function table_remove (line 149) | static bool
function table_replace (line 160) | static bool
function table_get (line 171) | static uintptr_t
function table_insert (line 185) | static bool
function table_count (line 196) | static size_t
function table_reset (line 203) | static bool
function main (line 265) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_ht/benchmark/serial.c
function ht_free (line 52) | static void
type ck_malloc (line 64) | struct ck_malloc
function table_init (line 69) | static void
function table_remove (line 87) | static bool
function table_replace (line 99) | static bool
function table_insert (line 128) | static bool
function table_count (line 140) | static size_t
function table_gc (line 147) | static bool
function table_reset (line 154) | static bool
function keys_shuffle (line 161) | static void
function main (line 180) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_ht/validate/serial.c
function ht_free (line 47) | static void
function ht_hash_wrapper (line 57) | static void
type ck_malloc (line 69) | struct ck_malloc
function main (line 85) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pflock/benchmark/latency.c
function main (line 38) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pflock/benchmark/throughput.c
type affinity (line 46) | struct affinity
function main (line 113) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pflock/validate/validate.c
type affinity (line 47) | struct affinity
function main (line 114) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/benchmark/benchmark.h
type block (line 20) | struct block {
type affinity (line 24) | struct affinity
type block (line 34) | struct block
function main (line 54) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/benchmark/ck_pr_add_64.c
function main (line 11) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/benchmark/ck_pr_cas_64.c
function main (line 11) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/benchmark/ck_pr_cas_64_2.c
function main (line 11) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/benchmark/ck_pr_faa_64.c
function main (line 11) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/benchmark/ck_pr_fas_64.c
function main (line 11) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/benchmark/ck_pr_neg_64.c
function main (line 11) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/benchmark/fp.c
function main (line 14) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_add.c
function rg_width (line 84) | static void
function main (line 127) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_and.c
function rg_width (line 80) | static void
function main (line 123) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_btc.c
function main (line 72) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_btr.c
function main (line 73) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_bts.c
function main (line 73) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_cas.c
function rg_width (line 83) | static void
function main (line 126) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_dec.c
function rg_width (line 76) | static void
function main (line 119) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_faa.c
function rg_width (line 85) | static void
function main (line 128) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_fas.c
function rg_width (line 81) | static void
function main (line 124) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_fax.c
function main (line 112) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_inc.c
function rg_width (line 76) | static void
function main (line 119) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_load.c
function rg_width (line 76) | static void
function main (line 118) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_or.c
function rg_width (line 82) | static void
function main (line 125) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_store.c
function rg_width (line 77) | static void
function main (line 119) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_sub.c
function rg_width (line 84) | static void
function main (line 127) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_unary.c
function main (line 109) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_pr/validate/ck_pr_xor.c
function rg_width (line 80) | static void
function main (line 123) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_queue/validate/ck_list.c
type test (line 35) | struct test {
function test_foreach (line 43) | static void
function main (line 116) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_queue/validate/ck_slist.c
type test (line 35) | struct test {
function test_foreach (line 43) | static void
function main (line 116) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_queue/validate/ck_stailq.c
type test (line 34) | struct test {
function test_foreach (line 42) | static void
function main (line 115) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_rhs/benchmark/parallel_bytestring.c
type state (line 54) | enum state {
type affinity (line 64) | struct affinity
type hs_epoch (line 69) | struct hs_epoch {
function alarm_handler (line 75) | static void
function hs_hash (line 84) | static unsigned long
function hs_compare (line 94) | static bool
function hs_destroy (line 101) | static void
function hs_free (line 118) | static void
type ck_malloc (line 135) | struct ck_malloc
function set_init (line 140) | static void
function set_remove (line 157) | static bool
function set_replace (line 166) | static bool
function set_swap (line 176) | static bool
function set_insert (line 197) | static bool
function set_count (line 206) | static size_t
function set_reset (line 213) | static bool
function acc (line 277) | static uint64_t
function main (line 289) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_rhs/benchmark/serial.c
function hs_free (line 54) | static void
type ck_malloc (line 66) | struct ck_malloc
function hs_hash (line 71) | static unsigned long
function hs_compare (line 81) | static bool
function set_destroy (line 88) | static void
function set_init (line 96) | static void
function set_remove (line 109) | static bool
function set_swap (line 118) | static bool
function set_replace (line 128) | static bool
function set_insert (line 150) | static bool
function set_insert_unique (line 159) | static bool
function set_count (line 168) | static size_t
function set_reset (line 175) | static bool
function set_gc (line 182) | static void
function set_rebuild (line 190) | static void
function keys_shuffle (line 198) | static void
function run_test (line 217) | static void
function main (line 490) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_rhs/validate/serial.c
function hs_free (line 45) | static void
type ck_malloc (line 55) | struct ck_malloc
function hs_hash (line 70) | static unsigned long
function hs_compare (line 81) | static bool
function run_test (line 131) | static void
function main (line 298) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_ring/benchmark/latency.c
type entry (line 13) | struct entry {
function main (line 18) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_ring/validate/ck_ring_mpmc.c
type context (line 42) | struct context {
type entry (line 49) | struct entry {
type affinity (line 61) | struct affinity
type context (line 65) | struct context
type context (line 76) | struct context
type entry (line 97) | struct entry
type context (line 169) | struct context
type entry (line 184) | struct entry
type context (line 232) | struct context
type entry (line 233) | struct entry
type entry (line 247) | struct entry
type entry (line 249) | struct entry
function main (line 331) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_ring/validate/ck_ring_mpmc_template.c
type context (line 42) | struct context {
type entry (line 49) | struct entry {
type affinity (line 62) | struct affinity
type context (line 66) | struct context
type context (line 75) | struct context
type entry (line 76) | struct entry
type entry (line 90) | struct entry
type context (line 138) | struct context
type entry (line 139) | struct entry
type entry (line 143) | struct entry
type entry (line 153) | struct entry
type entry (line 155) | struct entry
type entry (line 164) | struct entry
function main (line 245) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_ring/validate/ck_ring_spmc.c
type context (line 42) | struct context {
type entry (line 49) | struct entry {
type affinity (line 60) | struct affinity
type context (line 64) | struct context
type context (line 73) | struct context
type entry (line 88) | struct entry
type context (line 136) | struct context
type entry (line 137) | struct entry
type entry (line 151) | struct entry
type entry (line 153) | struct entry
function main (line 235) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_ring/validate/ck_ring_spmc_template.c
type context (line 42) | struct context {
type entry (line 49) | struct entry {
type affinity (line 62) | struct affinity
type context (line 66) | struct context
type context (line 75) | struct context
type entry (line 76) | struct entry
type entry (line 90) | struct entry
type context (line 138) | struct context
type entry (line 139) | struct entry
type entry (line 143) | struct entry
type entry (line 153) | struct entry
type entry (line 155) | struct entry
type entry (line 164) | struct entry
function main (line 245) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_ring/validate/ck_ring_spsc.c
type context (line 40) | struct context {
type entry (line 47) | struct entry {
type affinity (line 54) | struct affinity
type context (line 57) | struct context
type context (line 62) | struct context
type entry (line 63) | struct entry
type entry (line 78) | struct entry
type entry (line 80) | struct entry
function main (line 158) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_rwcohort/benchmark/latency.h
function ck_spinlock_fas_lock_with_context (line 39) | static void
function ck_spinlock_fas_unlock_with_context (line 46) | static void
function ck_spinlock_fas_locked_with_context (line 53) | static bool
function main (line 63) | LOCK_PROTOTYPE(fas_fas)
FILE: third_party/concurrency_kit/ck/regressions/ck_rwcohort/benchmark/throughput.h
type affinity (line 49) | struct affinity
function ck_spinlock_fas_lock_with_context (line 52) | static void
function ck_spinlock_fas_unlock_with_context (line 61) | static void
function ck_spinlock_fas_locked_with_context (line 70) | static bool
function cohort_record (line 81) | LOCK_PROTOTYPE(fas_fas)
type cohort_record (line 86) | struct cohort_record
type block (line 92) | struct block {
function main (line 165) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_rwcohort/validate/validate.h
type affinity (line 50) | struct affinity
function ck_spinlock_fas_lock_with_context (line 55) | static void
function ck_spinlock_fas_unlock_with_context (line 62) | static void
function ck_spinlock_fas_locked_with_context (line 69) | static bool
function CK_COHORT_INSTANCE (line 79) | LOCK_PROTOTYPE(fas_fas)
function main (line 151) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_rwlock/benchmark/latency.c
function main (line 39) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_rwlock/benchmark/throughput.c
type affinity (line 50) | struct affinity
function rwlock_test (line 184) | static void
function main (line 219) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_rwlock/validate/validate.c
type affinity (line 47) | struct affinity
type ck_elide_config (line 132) | struct ck_elide_config
type ck_elide_stat (line 133) | struct ck_elide_stat
function rwlock_test (line 398) | static void
function main (line 417) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_sequence/benchmark/ck_sequence.c
function main (line 43) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_sequence/validate/ck_sequence.c
type example (line 40) | struct example {
type example (line 46) | struct example
type affinity (line 49) | struct affinity
function validate (line 51) | static void
type example (line 71) | struct example
function main (line 113) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_spinlock/benchmark/latency.h
function main (line 42) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_spinlock/benchmark/throughput.h
type block (line 51) | struct block {
type affinity (line 55) | struct affinity
type counters (line 58) | struct counters {
type counters (line 62) | struct counters
function CK_CC_USED (line 70) | CK_CC_USED static void
function CK_CC_USED (line 83) | CK_CC_USED static void
type block (line 101) | struct block
function main (line 132) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_spinlock/linux_spinlock.h
function CK_CC_INLINE (line 3) | CK_CC_INLINE static void
function CK_CC_INLINE (line 24) | CK_CC_INLINE static void
FILE: third_party/concurrency_kit/ck/regressions/ck_spinlock/validate/linux_spinlock.c
function main (line 7) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_spinlock/validate/validate.h
type block (line 48) | struct block {
type affinity (line 52) | struct affinity
function main (line 134) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_stack/benchmark/latency.c
function main (line 50) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_stack/validate/pair.c
type entry (line 51) | struct entry {
type entry (line 61) | struct entry
type entry (line 70) | struct entry
type entry (line 76) | struct entry
type affinity (line 79) | struct affinity
type entry (line 90) | struct entry
function stack_assert (line 155) | static void
function main (line 167) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_stack/validate/pop.c
type entry (line 51) | struct entry {
type entry (line 61) | struct entry
type entry (line 71) | struct entry
type affinity (line 74) | struct affinity
type entry (line 85) | struct entry
function stack_assert (line 142) | static void
function push_stack (line 154) | static void
function main (line 187) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_stack/validate/push.c
type entry (line 49) | struct entry {
type entry (line 59) | struct entry
type entry (line 64) | struct entry
type entry (line 88) | struct entry
function stack_assert (line 134) | static void
function main (line 158) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_stack/validate/serial.c
type entry (line 37) | struct entry {
type entry (line 42) | struct entry
function serial (line 55) | static void
function main (line 77) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_swlock/benchmark/latency.c
function main (line 39) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_swlock/benchmark/throughput.c
type affinity (line 50) | struct affinity
function swlock_test (line 117) | static void
function main (line 152) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_swlock/validate/validate.c
type affinity (line 47) | struct affinity
type ck_elide_config (line 60) | struct ck_elide_config
type ck_elide_stat (line 61) | struct ck_elide_stat
function swlock_test (line 405) | static void
function main (line 425) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_tflock/benchmark/latency.c
function main (line 39) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_tflock/benchmark/throughput.c
type affinity (line 50) | struct affinity
function tflock_test (line 117) | static void
function main (line 152) | int
FILE: third_party/concurrency_kit/ck/regressions/ck_tflock/validate/validate.c
type affinity (line 47) | struct affinity
function tflock_ticket_test (line 114) | static void
function main (line 133) | int
FILE: third_party/concurrency_kit/ck/regressions/common.h
function CK_CC_INLINE (line 63) | CK_CC_INLINE static void
function CK_CC_INLINE (line 73) | CK_CC_INLINE static int
function CK_CC_INLINE (line 83) | CK_CC_INLINE static int
function CK_CC_INLINE (line 99) | CK_CC_INLINE static void
function common_lrand48 (line 109) | int
function CK_CC_INLINE (line 119) | CK_CC_INLINE static double
function CK_CC_INLINE (line 129) | CK_CC_INLINE static void
function CK_CC_INLINE (line 139) | CK_CC_INLINE static int
function common_alarm (line 181) | int
type affinity (line 262) | struct affinity {
function pid_t (line 271) | static pid_t
function CK_CC_UNUSED (line 278) | CK_CC_UNUSED static int
function CK_CC_UNUSED (line 291) | CK_CC_UNUSED static int
function CK_CC_UNUSED (line 303) | CK_CC_UNUSED static int
function CK_CC_UNUSED (line 317) | CK_CC_UNUSED static int
function CK_CC_UNUSED (line 330) | CK_CC_UNUSED static int
function CK_CC_UNUSED (line 343) | CK_CC_UNUSED static int
function CK_CC_UNUSED (line 355) | CK_CC_UNUSED static int
function CK_CC_UNUSED (line 362) | CK_CC_UNUSED static int
function CK_CC_INLINE (line 370) | CK_CC_INLINE static uint64_t
function CK_CC_USED (line 455) | CK_CC_USED static void
FILE: third_party/concurrency_kit/ck/src/ck_array.c
type _ck_array (line 34) | struct _ck_array
type ck_malloc (line 35) | struct ck_malloc
type _ck_array (line 37) | struct _ck_array
type _ck_array (line 39) | struct _ck_array
function ck_array_init (line 49) | bool
function ck_array_put (line 73) | bool
function ck_array_put_unique (line 128) | int
function ck_array_remove (line 149) | bool
function ck_array_commit (line 202) | bool
function ck_array_deinit (line 226) | void
FILE: third_party/concurrency_kit/ck/src/ck_barrier_centralized.c
function ck_barrier_centralized (line 31) | void
FILE: third_party/concurrency_kit/ck/src/ck_barrier_combining.c
type ck_barrier_combining_queue (line 33) | struct ck_barrier_combining_queue {
function ck_barrier_combining_group (line 38) | ck_barrier_combining_group *
function CK_CC_INLINE (line 51) | CK_CC_INLINE static void
function CK_CC_INLINE (line 75) | CK_CC_INLINE static void
function ck_barrier_combining_group_init (line 93) | void
function ck_barrier_combining_init (line 143) | void
function ck_barrier_combining_aux (line 157) | static void
function ck_barrier_combining (line 196) | void
FILE: third_party/concurrency_kit/ck/src/ck_barrier_dissemination.c
function ck_barrier_dissemination_init (line 35) | void
function ck_barrier_dissemination_subscribe (line 78) | void
function ck_barrier_dissemination_size (line 89) | unsigned int
function ck_barrier_dissemination (line 96) | void
FILE: third_party/concurrency_kit/ck/src/ck_barrier_mcs.c
function ck_barrier_mcs_init (line 33) | void
function ck_barrier_mcs_subscribe (line 75) | void
function CK_CC_INLINE (line 84) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 100) | CK_CC_INLINE static void
function ck_barrier_mcs (line 111) | void
FILE: third_party/concurrency_kit/ck/src/ck_barrier_tournament.c
function ck_barrier_tournament_subscribe (line 49) | void
function ck_barrier_tournament_init (line 59) | void
function ck_barrier_tournament_size (line 101) | unsigned int
function ck_barrier_tournament (line 108) | void
FILE: third_party/concurrency_kit/ck/src/ck_epoch.c
type ck_epoch_record (line 135) | struct ck_epoch_record
type ck_epoch_entry (line 137) | struct ck_epoch_entry
function _ck_epoch_delref (line 142) | bool
function _ck_epoch_addref (line 177) | void
function ck_epoch_init (line 220) | void
type ck_epoch_record (line 231) | struct ck_epoch_record
type ck_epoch (line 232) | struct ck_epoch
type ck_epoch_record (line 234) | struct ck_epoch_record
function ck_epoch_register (line 265) | void
function ck_epoch_unregister (line 289) | void
type ck_epoch_record (line 312) | struct ck_epoch_record
type ck_epoch (line 313) | struct ck_epoch
type ck_epoch_record (line 314) | struct ck_epoch_record
function ck_epoch_dispatch (line 351) | static void
function ck_epoch_reclaim (line 387) | void
function CK_CC_FORCE_INLINE (line 398) | CK_CC_FORCE_INLINE static void
function ck_epoch_synchronize_wait (line 412) | void
function ck_epoch_synchronize (line 516) | void
function ck_epoch_barrier (line 524) | void
function ck_epoch_barrier_wait (line 533) | void
function ck_epoch_poll (line 553) | bool
FILE: third_party/concurrency_kit/ck/src/ck_hp.c
function CK_STACK_CONTAINER (line 64) | CK_STACK_CONTAINER(struct ck_hp_record, global_entry, ck_hp_record_conta...
function ck_hp_set_threshold (line 85) | void
type ck_hp_record (line 93) | struct ck_hp_record
type ck_hp (line 94) | struct ck_hp
type ck_hp_record (line 96) | struct ck_hp_record
function ck_hp_unregister (line 119) | void
function ck_hp_register (line 133) | void
function hazard_compare (line 153) | static int
function CK_CC_INLINE (line 164) | CK_CC_INLINE static bool
function CK_CC_INLINE (line 189) | CK_CC_INLINE static void *
function ck_hp_reclaim (line 220) | void
function ck_hp_retire (line 270) | void
function ck_hp_free (line 288) | void
function ck_hp_purge (line 311) | void
FILE: third_party/concurrency_kit/ck/src/ck_hs.c
type ck_hs_probe_behavior (line 77) | enum ck_hs_probe_behavior {
type ck_hs_map (line 83) | struct ck_hs_map {
function ck_hs_map_signal (line 97) | static inline void
function _ck_hs_next (line 108) | static bool
function ck_hs_iterator_init (line 133) | void
function ck_hs_next (line 143) | bool
function ck_hs_next_spmc (line 149) | bool
function ck_hs_stat (line 159) | void
function ck_hs_count (line 170) | unsigned long
function ck_hs_map_destroy (line 177) | static void
function ck_hs_destroy (line 185) | void
type ck_hs_map (line 193) | struct ck_hs_map
type ck_hs (line 194) | struct ck_hs
type ck_hs_map (line 196) | struct ck_hs_map
type ck_hs_map (line 203) | struct ck_hs_map
function ck_hs_reset_size (line 249) | bool
function ck_hs_reset (line 264) | bool
function ck_hs_map_probe_next (line 273) | static inline unsigned long
function ck_hs_map_bound_set (line 289) | static inline void
function ck_hs_map_bound_get (line 310) | static inline unsigned int
function ck_hs_grow (line 327) | bool
function ck_hs_map_postinsert (line 400) | static void
function ck_hs_rebuild (line 411) | bool
type ck_hs (line 419) | struct ck_hs
type ck_hs_map (line 420) | struct ck_hs_map
type ck_hs_probe_behavior (line 427) | enum ck_hs_probe_behavior
function ck_hs_gc (line 550) | bool
function ck_hs_fas (line 639) | bool
function ck_hs_apply (line 683) | bool
function ck_hs_set (line 754) | bool
function CK_CC_INLINE (line 810) | CK_CC_INLINE static bool
function ck_hs_put (line 852) | bool
function ck_hs_put_unique (line 861) | bool
type ck_hs (line 871) | struct ck_hs
type ck_hs_map (line 876) | struct ck_hs_map
type ck_hs (line 898) | struct ck_hs
type ck_hs_map (line 903) | struct ck_hs_map
function ck_hs_move (line 917) | bool
function ck_hs_init (line 937) | bool
FILE: third_party/concurrency_kit/ck/src/ck_ht.c
type ck_ht_map (line 82) | struct ck_ht_map {
function ck_ht_stat (line 97) | void
function ck_ht_hash (line 108) | void
function ck_ht_hash_direct (line 119) | void
function ck_ht_hash_wrapper (line 129) | static void
type ck_ht_map (line 140) | struct ck_ht_map
type ck_ht (line 141) | struct ck_ht
type ck_ht_map (line 143) | struct ck_ht_map
type ck_ht_map (line 152) | struct ck_ht_map
type ck_ht_entry (line 153) | struct ck_ht_entry
type ck_ht_entry (line 177) | struct ck_ht_entry
type ck_ht_entry (line 187) | struct ck_ht_entry
function ck_ht_map_bound_set (line 192) | static inline void
function CK_HT_TYPE (line 213) | static inline CK_HT_TYPE
function ck_ht_map_destroy (line 230) | static void
function ck_ht_map_probe_next (line 238) | static inline size_t
function ck_ht_init (line 253) | bool
type ck_ht_entry (line 279) | struct ck_ht_entry
type ck_ht_map (line 280) | struct ck_ht_map
type ck_ht_entry (line 289) | struct ck_ht_entry
type ck_ht_entry (line 290) | struct ck_ht_entry
function ck_ht_gc (line 385) | bool
type ck_ht_entry (line 496) | struct ck_ht_entry
type ck_ht_map (line 497) | struct ck_ht_map
type ck_ht_entry (line 503) | struct ck_ht_entry
function CK_HT_TYPE (line 603) | CK_HT_TYPE
function ck_ht_next (line 611) | bool
function ck_ht_reset_size_spmc (line 635) | bool
function ck_ht_reset_spmc (line 650) | bool
function ck_ht_grow_spmc (line 658) | bool
function ck_ht_remove_spmc (line 746) | bool
function ck_ht_get_spmc (line 778) | bool
function ck_ht_set_spmc (line 821) | bool
function ck_ht_put_spmc (line 958) | bool
function ck_ht_destroy (line 1030) | void
FILE: third_party/concurrency_kit/ck/src/ck_ht_hash.h
function rotl32 (line 68) | static inline uint32_t rotl32 ( uint32_t x, int8_t r )
function rotl64 (line 73) | static inline uint64_t rotl64 ( uint64_t x, int8_t r )
function FORCE_INLINE (line 89) | FORCE_INLINE static uint32_t getblock ( const uint32_t * p, int i )
function FORCE_INLINE (line 105) | FORCE_INLINE static uint32_t fmix ( uint32_t h )
function MurmurHash3_x86_32 (line 118) | static inline void MurmurHash3_x86_32 ( const void * key, int len,
function MurmurHash64A (line 175) | static inline uint64_t MurmurHash64A ( const void * key, int len, uint64...
function MurmurHash64B (line 234) | static inline uint64_t MurmurHash64B ( const void * key, int len, uint64...
FILE: third_party/concurrency_kit/ck/src/ck_internal.h
function CK_CC_INLINE (line 38) | CK_CC_INLINE static uint32_t
function CK_CC_INLINE (line 50) | CK_CC_INLINE static uint32_t
function ck_internal_max (line 63) | long
function CK_CC_INLINE (line 70) | CK_CC_INLINE static uint64_t
function CK_CC_INLINE (line 77) | CK_CC_INLINE static uint32_t
function ck_internal_bsf (line 84) | long
function CK_CC_INLINE (line 102) | CK_CC_INLINE static uint64_t
FILE: third_party/concurrency_kit/ck/src/ck_rhs.c
type ck_rhs_probe_behavior (line 79) | enum ck_rhs_probe_behavior {
type ck_rhs_entry_desc (line 87) | struct ck_rhs_entry_desc {
type ck_rhs_no_entry_desc (line 95) | struct ck_rhs_no_entry_desc {
type ck_rhs (line 102) | struct ck_rhs
type ck_rhs_map (line 103) | struct ck_rhs_map
type ck_rhs_probe_behavior (line 110) | enum ck_rhs_probe_behavior
type ck_rhs_map (line 112) | struct ck_rhs_map {
function CK_CC_INLINE (line 134) | static CK_CC_INLINE const void *
function CK_CC_INLINE (line 144) | static CK_CC_INLINE const void **
function ck_rhs_entry_desc (line 154) | ck_rhs_entry_desc *
function CK_CC_INLINE (line 164) | static CK_CC_INLINE void
function ck_rhs_probes (line 174) | static CK_CC_INLINE unsigned int
function CK_CC_INLINE (line 184) | static CK_CC_INLINE void
function CK_CC_INLINE (line 194) | static CK_CC_INLINE CK_RHS_WORD
function CK_CC_INLINE (line 204) | static CK_CC_INLINE CK_RHS_WORD *
function CK_CC_INLINE (line 215) | static CK_CC_INLINE bool
function CK_CC_INLINE (line 225) | static CK_CC_INLINE void
function CK_CC_INLINE (line 235) | static CK_CC_INLINE void
function ck_rhs_set_load_factor (line 251) | bool
function ck_rhs_iterator_init (line 269) | void
function ck_rhs_next (line 278) | bool
function ck_rhs_stat (line 303) | void
function ck_rhs_count (line 313) | unsigned long
function ck_rhs_map_destroy (line 320) | static void
function ck_rhs_destroy (line 328) | void
type ck_rhs_map (line 336) | struct ck_rhs_map
type ck_rhs (line 337) | struct ck_rhs
type ck_rhs_map (line 339) | struct ck_rhs_map
type ck_rhs_map (line 347) | struct ck_rhs_map
type ck_rhs_no_entry_desc (line 349) | struct ck_rhs_no_entry_desc
type ck_rhs_map (line 352) | struct ck_rhs_map
type ck_rhs_entry_desc (line 353) | struct ck_rhs_entry_desc
type ck_rhs_no_entry_desc (line 382) | struct ck_rhs_no_entry_desc
type ck_rhs_entry_desc (line 389) | struct ck_rhs_entry_desc
type ck_rhs_entry_desc (line 390) | struct ck_rhs_entry_desc
function ck_rhs_reset_size (line 400) | bool
function ck_rhs_reset (line 415) | bool
function ck_rhs_map_probe_next (line 424) | static inline unsigned long
function ck_rhs_map_probe_prev (line 438) | static inline unsigned long
function ck_rhs_map_bound_set (line 452) | static inline void
function ck_rhs_map_bound_get (line 477) | static inline unsigned int
function ck_rhs_grow (line 493) | bool
function ck_rhs_rebuild (line 572) | bool
function ck_rhs_map_probe_rm (line 579) | static long
function ck_rhs_map_probe (line 691) | static long
function ck_rhs_gc (line 826) | bool
function ck_rhs_add_wanted (line 841) | static void
function ck_rhs_remove_wanted (line 868) | static unsigned long
function ck_rhs_get_first_offset (line 890) | static long
function ck_rhs_put_robin_hood (line 905) | static int
function ck_rhs_do_backward_shift_delete (line 988) | static void
function ck_rhs_fas (line 1068) | bool
function ck_rhs_apply (line 1130) | bool
function ck_rhs_set (line 1234) | bool
function ck_rhs_put_internal (line 1314) | static bool
function ck_rhs_put (line 1370) | bool
function ck_rhs_put_unique (line 1379) | bool
type ck_rhs (line 1389) | struct ck_rhs
type ck_rhs_map (line 1395) | struct ck_rhs_map
type ck_rhs (line 1418) | struct ck_rhs
type ck_rhs_map (line 1424) | struct ck_rhs_map
function ck_rhs_move (line 1437) | bool
function ck_rhs_init (line 1458) | bool
FILE: third_party/cram/cram/_cli.py
function _prompt (line 11) | def _prompt(question, answers, auto=None):
function _log (line 38) | def _log(msg=None, verbosemsg=None, verbose=False):
function _patch (line 52) | def _patch(cmd, diff):
function runcli (line 57) | def runcli(tests, quiet=False, verbose=False, patchcmd=None, answer=None,
FILE: third_party/cram/cram/_diff.py
function _regex (line 11) | def _regex(pattern, s):
function _glob (line 23) | def _glob(el, l):
function _matchannotation (line 49) | def _matchannotation(keyword, matchfunc, el, l):
function regex (line 54) | def regex(el, l):
function glob (line 58) | def glob(el, l):
function esc (line 62) | def esc(el, l):
class _SequenceMatcher (line 75) | class _SequenceMatcher(difflib.SequenceMatcher, object):
method __init__ (line 77) | def __init__(self, *args, **kwargs):
method _match (line 81) | def _match(self, el, l):
method find_longest_match (line 88) | def find_longest_match(self, alo, ahi, blo, bhi):
function unified_diff (line 109) | def unified_diff(l1, l2, fromfile=b(''), tofile=b(''), fromfiledate=b(''),
FILE: third_party/cram/cram/_encoding.py
function fsdecode (line 22) | def fsdecode(s):
function fsencode (line 32) | def fsencode(s):
function fsdecode (line 42) | def fsdecode(s):
function fsencode (line 48) | def fsencode(s):
function fsdecode (line 54) | def fsdecode(s):
function fsencode (line 58) | def fsencode(s):
function envencode (line 63) | def envencode(s):
function b (line 77) | def b(s):
function u (line 83) | def u(s):
function b (line 87) | def b(s):
function bchr (line 91) | def bchr(i):
function u (line 95) | def u(s):
function ul (line 104) | def ul(e):
FILE: third_party/cram/cram/_main.py
function _which (line 20) | def _which(cmd):
function _expandpath (line 29) | def _expandpath(path):
class _OptionParser (line 33) | class _OptionParser(optparse.OptionParser):
method __init__ (line 37) | def __init__(self, *args, **kwargs):
method add_option (line 41) | def add_option(self, *args, **kwargs):
method parse_args (line 48) | def parse_args(self, args=None, values=None):
function _parseopts (line 79) | def _parseopts(args):
function main (line 115) | def main(args):
FILE: third_party/cram/cram/_process.py
function _makeresetsigpipe (line 15) | def _makeresetsigpipe():
function execute (line 27) | def execute(args, stdin=None, stdout=None, stderr=None, cwd=None, env=No...
FILE: third_party/cram/cram/_run.py
function _walk (line 12) | def _walk(top):
function _findtests (line 21) | def _findtests(paths):
function runtests (line 34) | def runtests(paths, tmpdir, shell, indent=2, cleanenv=True, debug=False,
FILE: third_party/cram/cram/_test.py
function _escape (line 19) | def _escape(s):
function test (line 24) | def test(lines, shell='/bin/sh', indent=2, testname=None, env=None,
function testfile (line 186) | def testfile(path, shell='/bin/sh', indent=2, env=None, cleanenv=True,
FILE: third_party/cram/cram/_xunit.py
function _cdatareplace (line 32) | def _cdatareplace(m):
function _cdata (line 39) | def _cdata(s):
function _quoteattrreplace (line 49) | def _quoteattrreplace(m):
function _quoteattr (line 59) | def _quoteattr(s):
function _timestamp (line 69) | def _timestamp():
function runxunit (line 83) | def runxunit(tests, xmlpath):
FILE: third_party/cram/setup.py
function long_description (line 18) | def long_description():
FILE: third_party/cram/tests/run-doctests.py
function _getmodules (line 7) | def _getmodules(pkgdir):
function rundoctests (line 27) | def rundoctests(pkgdir):
FILE: third_party/luajit/luajit/dynasm/dasm_arm.h
type dasm_Section (line 56) | typedef struct dasm_Section {
type dasm_State (line 66) | struct dasm_State {
function dasm_init (line 86) | void dasm_init(Dst_DECL, int maxsection)
function dasm_free (line 110) | void dasm_free(Dst_DECL)
function dasm_setupglobal (line 123) | void dasm_setupglobal(Dst_DECL, void **gl, unsigned int maxgl)
function dasm_growpc (line 131) | void dasm_growpc(Dst_DECL, unsigned int maxpc)
function dasm_setup (line 140) | void dasm_setup(Dst_DECL, const void *actionlist)
function dasm_imm12 (line 168) | static int dasm_imm12(unsigned int n)
function dasm_put (line 177) | void dasm_put(Dst_DECL, int start, ...)
function dasm_link (line 279) | int dasm_link(Dst_DECL, size_t *szp)
function dasm_encode (line 345) | int dasm_encode(Dst_DECL, void *buffer)
function dasm_getpclabel (line 432) | int dasm_getpclabel(Dst_DECL, unsigned int pc)
function dasm_checkstep (line 445) | int dasm_checkstep(Dst_DECL, int secmatch)
FILE: third_party/luajit/luajit/dynasm/dasm_arm64.h
type dasm_Section (line 58) | typedef struct dasm_Section {
type dasm_State (line 68) | struct dasm_State {
function dasm_init (line 88) | void dasm_init(Dst_DECL, int maxsection)
function dasm_free (line 112) | void dasm_free(Dst_DECL)
function dasm_setupglobal (line 125) | void dasm_setupglobal(Dst_DECL, void **gl, unsigned int maxgl)
function dasm_growpc (line 133) | void dasm_growpc(Dst_DECL, unsigned int maxpc)
function dasm_setup (line 142) | void dasm_setup(Dst_DECL, const void *actionlist)
function dasm_imm12 (line 170) | static int dasm_imm12(unsigned int n)
function dasm_ffs (line 180) | static int dasm_ffs(unsigned long long x)
function dasm_imm13 (line 187) | static int dasm_imm13(int lo, int hi)
function dasm_put (line 221) | void dasm_put(Dst_DECL, int start, ...)
function dasm_link (line 350) | int dasm_link(Dst_DECL, size_t *szp)
function dasm_encode (line 417) | int dasm_encode(Dst_DECL, void *buffer)
function dasm_getpclabel (line 534) | int dasm_getpclabel(Dst_DECL, unsigned int pc)
function dasm_checkstep (line 547) | int dasm_checkstep(Dst_DECL, int secmatch)
FILE: third_party/luajit/luajit/dynasm/dasm_mips.h
type dasm_Section (line 55) | typedef struct dasm_Section {
type dasm_State (line 65) | struct dasm_State {
function dasm_init (line 85) | void dasm_init(Dst_DECL, int maxsection)
function dasm_free (line 109) | void dasm_free(Dst_DECL)
function dasm_setupglobal (line 122) | void dasm_setupglobal(Dst_DECL, void **gl, unsigned int maxgl)
function dasm_growpc (line 130) | void dasm_growpc(Dst_DECL, unsigned int maxpc)
function dasm_setup (line 139) | void dasm_setup(Dst_DECL, const void *actionlist)
function dasm_put (line 168) | void dasm_put(Dst_DECL, int start, ...)
function dasm_link (line 258) | int dasm_link(Dst_DECL, size_t *szp)
function dasm_encode (line 323) | int dasm_encode(Dst_DECL, void *buffer)
function dasm_getpclabel (line 395) | int dasm_getpclabel(Dst_DECL, unsigned int pc)
function dasm_checkstep (line 408) | int dasm_checkstep(Dst_DECL, int secmatch)
FILE: third_party/luajit/luajit/dynasm/dasm_ppc.h
type dasm_Section (line 55) | typedef struct dasm_Section {
type dasm_State (line 65) | struct dasm_State {
function dasm_init (line 85) | void dasm_init(Dst_DECL, int maxsection)
function dasm_free (line 109) | void dasm_free(Dst_DECL)
function dasm_setupglobal (line 122) | void dasm_setupglobal(Dst_DECL, void **gl, unsigned int maxgl)
function dasm_growpc (line 130) | void dasm_growpc(Dst_DECL, unsigned int maxpc)
function dasm_setup (line 139) | void dasm_setup(Dst_DECL, const void *actionlist)
function dasm_put (line 168) | void dasm_put(Dst_DECL, int start, ...)
function dasm_link (line 262) | int dasm_link(Dst_DECL, size_t *szp)
function dasm_encode (line 327) | int dasm_encode(Dst_DECL, void *buffer)
function dasm_getpclabel (line 394) | int dasm_getpclabel(Dst_DECL, unsigned int pc)
function dasm_checkstep (line 407) | int dasm_checkstep(Dst_DECL, int secmatch)
FILE: third_party/luajit/luajit/dynasm/dasm_proto.h
type dasm_State (line 47) | typedef struct dasm_State dasm_State;
FILE: third_party/luajit/luajit/dynasm/dasm_x86.h
type dasm_Section (line 54) | typedef struct dasm_Section {
type dasm_State (line 64) | struct dasm_State {
function dasm_init (line 84) | void dasm_init(Dst_DECL, int maxsection)
function dasm_free (line 108) | void dasm_free(Dst_DECL)
function dasm_setupglobal (line 121) | void dasm_setupglobal(Dst_DECL, void **gl, unsigned int maxgl)
function dasm_growpc (line 129) | void dasm_growpc(Dst_DECL, unsigned int maxpc)
function dasm_setup (line 138) | void dasm_setup(Dst_DECL, const void *actionlist)
function dasm_put (line 167) | void dasm_put(Dst_DECL, int start, ...)
function dasm_link (line 277) | int dasm_link(Dst_DECL, size_t *szp)
function dasm_encode (line 389) | int dasm_encode(Dst_DECL, void *buffer)
function dasm_getpclabel (line 499) | int dasm_getpclabel(Dst_DECL, unsigned int pc)
function dasm_checkstep (line 512) | int dasm_checkstep(Dst_DECL, int secmatch)
Condensed preview — 685 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,623K chars).
[
{
"path": ".github/workflows/ci.yml",
"chars": 1491,
"preview": "name: CI\non: [push, pull_request]\n\njobs:\n build:\n strategy:\n matrix:\n os: [ ubuntu-22.04, ubuntu-20.04 ]"
},
{
"path": ".gitignore",
"chars": 1700,
"preview": "*.o\n*.a\nMakefile\nMakefile.in\naclocal.m4\nautom4te.cache\n/config/config.h\n/config/ltmain.sh\n/config/stamp-h1\n/doc/manual.h"
},
{
"path": ".travis.yml",
"chars": 6483,
"preview": "# vim ft=yaml\n#\n# Travis CI configuration\n\narch:\n - amd64\n - arm64\n\ndist: trusty\nsudo: required\n\nservices:\n - docker\n"
},
{
"path": "COPYING",
"chars": 18092,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "ChangeLog",
"chars": 16755,
"preview": "2020-04-24 Alexey Kopytov <akopytov@gmail.com>\n\n\t* version 1.0.20\n\t* build/CI/packaging: Add arm64 to Travis CI matrix"
},
{
"path": "Dockerfile",
"chars": 471,
"preview": "FROM ubuntu:xenial\n\nRUN apt-get update\n\nRUN apt-get -y install make automake libtool pkg-config libaio-dev git\n\n# For My"
},
{
"path": "Makefile.am",
"chars": 1547,
"preview": "# Copyright (C) 2004 MySQL AB\n# Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free sof"
},
{
"path": "README.md",
"chars": 18950,
"preview": "[![Latest Release][release-badge]][release-url]\n[![Build Status][action-badge]][action-url]\n[![Debian Packages][deb-badg"
},
{
"path": "autogen.sh",
"chars": 26,
"preview": "#!/bin/sh\n\nautoreconf -vi\n"
},
{
"path": "config/config.rpath",
"chars": 18343,
"preview": "#! /bin/sh\n# Output a system dependent set of variables, describing how to set the\n# run time search path of shared libr"
},
{
"path": "configure.ac",
"chars": 11599,
"preview": "# Process this file with autoconf to produce a configure script.\n\nAC_PREREQ([2.63])\nAC_INIT([sysbench],[1.1.0],[https://"
},
{
"path": "debian/changelog",
"chars": 1524,
"preview": "sysbench (1.0.21-1) unstable; urgency=low\n\n * add libzstd-dev to build dependencies\n\n -- Alexey Kopytov <akopytov@gmail"
},
{
"path": "debian/compat",
"chars": 2,
"preview": "7\n"
},
{
"path": "debian/control",
"chars": 1024,
"preview": "Source: sysbench\nSection: misc\nPriority: extra\nMaintainer: Alexey Kopytov <akopytov@gmail.com>\nBuild-Depends: debhelper,"
},
{
"path": "debian/copyright",
"chars": 572,
"preview": "Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat\nUpstream-Name: sysbench\nUpstream-Maintainer: Alex"
},
{
"path": "debian/dirs",
"chars": 8,
"preview": "usr/bin\n"
},
{
"path": "debian/docs",
"chars": 28,
"preview": "README.md\nChangeLog\nCOPYING\n"
},
{
"path": "debian/install",
"chars": 0,
"preview": ""
},
{
"path": "debian/rules",
"chars": 198,
"preview": "#!/usr/bin/make -f\n\n%:\n\tdh $@\n\noverride_dh_auto_configure:\n\tdh_testdir\n\tautoreconf -vif\n\tdh_auto_configure -- --with-mys"
},
{
"path": "debian/source/format",
"chars": 12,
"preview": "3.0 (quilt)\n"
},
{
"path": "install-sh",
"chars": 7122,
"preview": "#!/bin/sh\n#\n# install - install a program, script, or datafile\n#\n# This originates from X11R5 (mit/util/scripts/install."
},
{
"path": "m4/ac_check_aio.m4",
"chars": 1259,
"preview": "dnl ---------------------------------------------------------------------------\ndnl Macro: AC_CHECK_AIO\ndnl Check for Li"
},
{
"path": "m4/ac_check_pgsql.m4",
"chars": 2513,
"preview": "dnl ---------------------------------------------------------------------------\ndnl Macro: AC_CHECK_PGSQL\ndnl First chec"
},
{
"path": "m4/acx_pthread.m4",
"chars": 10985,
"preview": "##### http://autoconf-archive.cryp.to/acx_pthread.html\n#\n# SYNOPSIS\n#\n# ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-F"
},
{
"path": "m4/ax_check_compile_flag.m4",
"chars": 3279,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autoconf-a"
},
{
"path": "m4/ax_compiler_vendor.m4",
"chars": 3606,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autoconf"
},
{
"path": "m4/ax_gcc_archflag.m4",
"chars": 13009,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autocon"
},
{
"path": "m4/ax_gcc_func_attribute.m4",
"chars": 8296,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autoconf-a"
},
{
"path": "m4/ax_gcc_x86_cpuid.m4",
"chars": 3703,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/autocon"
},
{
"path": "m4/ax_tls.m4",
"chars": 2984,
"preview": "# ===========================================================================\n# https://www.gnu.org/software/au"
},
{
"path": "m4/extensions.m4",
"chars": 1105,
"preview": "dnl Provide AC_USE_SYSTEM_EXTENSIONS for old autoconf machines.\nAC_DEFUN([ACX_USE_SYSTEM_EXTENSIONS],[\n ifdef([AC_USE_S"
},
{
"path": "m4/host-cpu-c-abi.m4",
"chars": 17194,
"preview": "# host-cpu-c-abi.m4\n# serial 18\ndnl Copyright (C) 2002-2024 Free Software Foundation, Inc.\ndnl This file is free softwar"
},
{
"path": "m4/lib-ld.m4",
"chars": 3417,
"preview": "# lib-ld.m4 serial 3 (gettext-0.13)\ndnl Copyright (C) 1996-2003 Free Software Foundation, Inc.\ndnl This file is free sof"
},
{
"path": "m4/lib-link.m4",
"chars": 29741,
"preview": "# lib-link.m4 serial 13 (gettext-0.17)\ndnl Copyright (C) 2001-2007 Free Software Foundation, Inc.\ndnl This file is free "
},
{
"path": "m4/lib-prefix.m4",
"chars": 12582,
"preview": "# lib-prefix.m4\n# serial 23\ndnl Copyright (C) 2001-2005, 2008-2024 Free Software Foundation, Inc.\ndnl This file is free "
},
{
"path": "m4/pkg.m4",
"chars": 13228,
"preview": "# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*-\n# serial 12 (pkg-config-0.29.2)\n\ndnl Copyright © 2004"
},
{
"path": "m4/sb_autoconf_compat.m4",
"chars": 672,
"preview": "# ---------------------------------------------------------------------------\n# Provide various compatibility macros for"
},
{
"path": "m4/sb_check_mysql.m4",
"chars": 4748,
"preview": "dnl ---------------------------------------------------------------------------\ndnl Macro: SB_CHECK_MYSQL\ndnl First chec"
},
{
"path": "m4/sb_concurrency_kit.m4",
"chars": 3365,
"preview": "# Copyright (C) 2016-2017 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free software; you can redistribute it"
},
{
"path": "m4/sb_luajit.m4",
"chars": 2553,
"preview": "# Copyright (C) 2016 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free software; you can redistribute it and/"
},
{
"path": "missing",
"chars": 10266,
"preview": "#! /bin/sh\n# Common stub for a few missing GNU programs while installing.\n# Copyright (C) 1996, 1997, 1999, 2000, 2002, "
},
{
"path": "mkinstalldirs",
"chars": 1988,
"preview": "#! /bin/sh\n# mkinstalldirs --- make directory hierarchy\n# Author: Noah Friedman <friedman@prep.ai.mit.edu>\n# Created: 19"
},
{
"path": "rpm/sysbench.spec",
"chars": 6019,
"preview": "Summary: Scriptable database and system performance benchmark\nName: sysbench\n# Version will be replaced b"
},
{
"path": "scripts/buildpack.sh",
"chars": 6140,
"preview": "#!/usr/bin/env bash\n#\n# Copyright (C) 2017-2019 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free software; y"
},
{
"path": "snap/snapcraft.yaml.in",
"chars": 923,
"preview": "name: sysbench\nversion: @PACKAGE_VERSION@\nsummary: Scriptable database and system performance benchmark\ndescription: |\n "
},
{
"path": "src/Makefile.am",
"chars": 1985,
"preview": "# Copyright (C) 2004 MySQL AB\n# Copyright (C) 2004-2017 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free sof"
},
{
"path": "src/db_driver.c",
"chars": 26771,
"preview": "/*\n Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is fre"
},
{
"path": "src/db_driver.h",
"chars": 11533,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2017 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/drivers/Makefile.am",
"chars": 912,
"preview": "# Copyright (C) 2004 MySQL AB\n# Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free sof"
},
{
"path": "src/drivers/mysql/Makefile.am",
"chars": 923,
"preview": "# Copyright (C) 2004 MySQL AB\n# Copyright (C) 2004-2008 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free sof"
},
{
"path": "src/drivers/mysql/drv_mysql.c",
"chars": 33043,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/drivers/pgsql/Makefile.am",
"chars": 926,
"preview": "# Copyright (C) 2005 MySQL AB\n# Copyright (C) 2005-2015 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free sof"
},
{
"path": "src/drivers/pgsql/drv_pgsql.c",
"chars": 19406,
"preview": "/* Copyright (C) 2005 MySQL AB\n Copyright (C) 2005-2017 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/lua/Makefile.am",
"chars": 1219,
"preview": "# Copyright (C) 2016 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free software; you can redistribute it and/"
},
{
"path": "src/lua/bulk_insert.lua",
"chars": 1446,
"preview": "#!/usr/bin/env sysbench\n-- -------------------------------------------------------------------------- --\n-- Bulk insert "
},
{
"path": "src/lua/empty-test.lua",
"chars": 1307,
"preview": "#!/usr/bin/env sysbench\n\n-- you can run this script like this:\n-- $ ./empty-test.lua --cpu-max-prime=20000 --threads=8 -"
},
{
"path": "src/lua/internal/Makefile.am",
"chars": 1317,
"preview": "# Copyright (C) 2016-2018 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free software; you can redistribute it"
},
{
"path": "src/lua/internal/sysbench.cmdline.lua",
"chars": 6310,
"preview": "-- Copyright (C) 2017-2018 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software; you can redistribute i"
},
{
"path": "src/lua/internal/sysbench.histogram.lua",
"chars": 2018,
"preview": "-- Copyright (C) 2017 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software; you can redistribute it and"
},
{
"path": "src/lua/internal/sysbench.lua",
"chars": 5463,
"preview": "-- Copyright (C) 2016-2018 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software; you can redistribute i"
},
{
"path": "src/lua/internal/sysbench.rand.lua",
"chars": 2542,
"preview": "-- Copyright (C) 2016-2017 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software; you can redistribute i"
},
{
"path": "src/lua/internal/sysbench.sql.lua",
"chars": 14704,
"preview": "-- Copyright (C) 2017 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software; you can redistribute it and"
},
{
"path": "src/lua/oltp_common.lua",
"chars": 14878,
"preview": "-- Copyright (C) 2006-2018 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software; you can redistribute i"
},
{
"path": "src/lua/oltp_delete.lua",
"chars": 1312,
"preview": "#!/usr/bin/env sysbench\n-- Copyright (C) 2006-2017 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software"
},
{
"path": "src/lua/oltp_insert.lua",
"chars": 2437,
"preview": "#!/usr/bin/env sysbench\n-- Copyright (C) 2006-2017 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software"
},
{
"path": "src/lua/oltp_point_select.lua",
"chars": 1287,
"preview": "#!/usr/bin/env sysbench\n-- Copyright (C) 2006-2017 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software"
},
{
"path": "src/lua/oltp_read_only.lua",
"chars": 1671,
"preview": "#!/usr/bin/env sysbench\n-- Copyright (C) 2006-2017 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software"
},
{
"path": "src/lua/oltp_read_write.lua",
"chars": 1846,
"preview": "#!/usr/bin/env sysbench\n-- Copyright (C) 2006-2017 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software"
},
{
"path": "src/lua/oltp_update_index.lua",
"chars": 1139,
"preview": "#!/usr/bin/env sysbench\n-- Copyright (C) 2006-2017 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software"
},
{
"path": "src/lua/oltp_update_non_index.lua",
"chars": 1149,
"preview": "#!/usr/bin/env sysbench\n-- Copyright (C) 2006-2017 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software"
},
{
"path": "src/lua/oltp_write_only.lua",
"chars": 1462,
"preview": "#!/usr/bin/env sysbench\n-- Copyright (C) 2006-2017 Alexey Kopytov <akopytov@gmail.com>\n\n-- This program is free software"
},
{
"path": "src/lua/prime-test.lua",
"chars": 1631,
"preview": "#!/usr/bin/env sysbench\n\n-- you can run this script like this:\n-- $ ./prime-test.lua --cpu-max-prime=20000 --threads=8 -"
},
{
"path": "src/lua/select_random_points.lua",
"chars": 1955,
"preview": "#!/usr/bin/env sysbench\n-- This test is designed for testing MariaDB's key_cache_segments for MyISAM,\n-- and should work"
},
{
"path": "src/lua/select_random_ranges.lua",
"chars": 2154,
"preview": "#!/usr/bin/env sysbench\n-- This test is designed for testing MariaDB's key_cache_segments for MyISAM,\n-- and should work"
},
{
"path": "src/sb_barrier.c",
"chars": 2669,
"preview": "/*\n Copyright (C) 2016-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribut"
},
{
"path": "src/sb_barrier.h",
"chars": 1534,
"preview": "/*\n Copyright (C) 2016-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribut"
},
{
"path": "src/sb_ck_pr.h",
"chars": 7899,
"preview": "/*\n Copyright (C) 2017 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribute it "
},
{
"path": "src/sb_counter.c",
"chars": 2543,
"preview": "/*\n Copyright (C) 2017 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribute it "
},
{
"path": "src/sb_counter.h",
"chars": 3471,
"preview": "/*\n Copyright (C) 2017 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribute it "
},
{
"path": "src/sb_global.h",
"chars": 935,
"preview": "/* Copyright (C) 2016 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribute it and"
},
{
"path": "src/sb_histogram.c",
"chars": 8551,
"preview": "/* Copyright (C) 2011-2018 Alexey Kopytov.\n\n This program is free software; you can redistribute it and/or modify\n i"
},
{
"path": "src/sb_histogram.h",
"chars": 4055,
"preview": "/* Copyright (C) 2011-2017 Alexey Kopytov.\n\n This program is free software; you can redistribute it and/or modify\n i"
},
{
"path": "src/sb_list.h",
"chars": 3692,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2014 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/sb_logger.c",
"chars": 10322,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/sb_logger.h",
"chars": 4124,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2016 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/sb_lua.c",
"chars": 25684,
"preview": "/* Copyright (C) 2006 MySQL AB\n Copyright (C) 2006-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/sb_lua.h",
"chars": 1274,
"preview": "/* Copyright (C) 2006 MySQL AB\n Copyright (C) 2006-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/sb_options.c",
"chars": 15152,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/sb_options.h",
"chars": 3857,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2017 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/sb_rand.c",
"chars": 14834,
"preview": "/*\n Copyright (C) 2016-2017 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribut"
},
{
"path": "src/sb_rand.h",
"chars": 2191,
"preview": "/*\n Copyright (C) 2016-2017 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribut"
},
{
"path": "src/sb_thread.c",
"chars": 4739,
"preview": "/*\n Copyright (C) 2016-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribut"
},
{
"path": "src/sb_thread.h",
"chars": 1588,
"preview": "/*\n Copyright (C) 2016-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribut"
},
{
"path": "src/sb_timer.c",
"chars": 3620,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2017 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/sb_timer.h",
"chars": 5104,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/sb_util.c",
"chars": 1704,
"preview": "/*\n Copyright (C) 2017-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribut"
},
{
"path": "src/sb_util.h",
"chars": 3251,
"preview": "/*\n Copyright (C) 2017 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free software; you can redistribute it "
},
{
"path": "src/sysbench.c",
"chars": 42505,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/sysbench.h",
"chars": 8647,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2017 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/tests/Makefile.am",
"chars": 842,
"preview": "# Copyright (C) 2004 MySQL AB\n# Copyright (C) 2004-2008 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free sof"
},
{
"path": "src/tests/cpu/Makefile.am",
"chars": 911,
"preview": "# Copyright (C) 2004 MySQL AB\n# Copyright (C) 2004-2008 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free sof"
},
{
"path": "src/tests/cpu/sb_cpu.c",
"chars": 3147,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/tests/fileio/Makefile.am",
"chars": 953,
"preview": "# Copyright (C) 2004 MySQL AB\n# Copyright (C) 2004-2008 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free sof"
},
{
"path": "src/tests/fileio/crc32.c",
"chars": 9519,
"preview": "/* crc32.c -- compute the CRC-32 of a data stream\n * Copyright (C) 1995-2003 Mark Adler\n * For conditions of distributio"
},
{
"path": "src/tests/fileio/crc32.h",
"chars": 178,
"preview": "#ifndef CRC32_H\n\n#ifdef HAVE_CONFIG_H\n#include <config.h>\n#endif\n\n#define CRC32_H\n\nextern unsigned long crc32(unsigned l"
},
{
"path": "src/tests/fileio/crc32tbl.h",
"chars": 30568,
"preview": "/* crc32.h -- tables for rapid CRC calculation\n * Generated automatically by crc32.c\n */\n\nlocal const unsigned long FAR "
},
{
"path": "src/tests/fileio/sb_fileio.c",
"chars": 46547,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/tests/memory/Makefile.am",
"chars": 926,
"preview": "# Copyright (C) 2004 MySQL AB\n# Copyright (C) 2004-2008 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free sof"
},
{
"path": "src/tests/memory/sb_memory.c",
"chars": 11424,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/tests/mutex/Makefile.am",
"chars": 921,
"preview": "# Copyright (C) 2004 MySQL AB\n# Copyright (C) 2004-2008 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free sof"
},
{
"path": "src/tests/mutex/sb_mutex.c",
"chars": 3922,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/tests/sb_cpu.h",
"chars": 890,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free softwa"
},
{
"path": "src/tests/sb_fileio.h",
"chars": 1225,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/tests/sb_memory.h",
"chars": 1141,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2008 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/tests/sb_mutex.h",
"chars": 1017,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free softwa"
},
{
"path": "src/tests/sb_threads.h",
"chars": 1004,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free softwa"
},
{
"path": "src/tests/threads/Makefile.am",
"chars": 931,
"preview": "# Copyright (C) 2004 MySQL AB\n# Copyright (C) 2004-2008 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free sof"
},
{
"path": "src/tests/threads/sb_threads.c",
"chars": 3839,
"preview": "/* Copyright (C) 2004 MySQL AB\n Copyright (C) 2004-2018 Alexey Kopytov <akopytov@gmail.com>\n\n This program is free s"
},
{
"path": "src/xoroshiro128plus.h",
"chars": 2666,
"preview": "/*\n Code below is based on the original work with the following copyright notice:\n*/\n\n/* Written in 2016 by David Blac"
},
{
"path": "tests/Makefile.am",
"chars": 1870,
"preview": "# Copyright (C) 2016-2018 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free software; you can redistribute it"
},
{
"path": "tests/README.md",
"chars": 1997,
"preview": "sysbench Test Suite\n===================\n\nsysbench uses the [Cram](https://bitheap.org/cram/) framework for\nfunctional an"
},
{
"path": "tests/include/api_sql_common.sh",
"chars": 6824,
"preview": "########################################################################\n# Common code for SQL API tests\n#\n# Expects the"
},
{
"path": "tests/include/config.sh.in",
"chars": 1023,
"preview": "#!/usr/bin/env bash\n\n# Configuration file used by the sysbench test suite.\n\n# Copyright (C) 2016 Alexey Kopytov <akopyto"
},
{
"path": "tests/include/drv_common.sh",
"chars": 518,
"preview": "#!/usr/bin/env bash\n#\n#########################################################################\n# Common code for DB dri"
},
{
"path": "tests/include/inspect.lua",
"chars": 9786,
"preview": "local inspect ={\n _VERSION = 'inspect.lua 3.1.0',\n _URL = 'http://github.com/kikito/inspect.lua',\n _DESCRIPTION ="
},
{
"path": "tests/include/mysql_common.sh",
"chars": 384,
"preview": "########################################################################\n# Common code for MySQL-specific tests\n########"
},
{
"path": "tests/include/pgsql_common.sh",
"chars": 1875,
"preview": "########################################################################\n# Common code for PostgreSQL-specific tests\n###"
},
{
"path": "tests/include/script_bulk_insert_common.sh",
"chars": 887,
"preview": "#!/usr/bin/env bash\n#\n################################################################################\n# Common code for"
},
{
"path": "tests/include/script_oltp_common.sh",
"chars": 2811,
"preview": "#!/usr/bin/env bash\n#\n################################################################################\n# Common code for"
},
{
"path": "tests/include/script_select_random_common.sh",
"chars": 1071,
"preview": "#!/usr/bin/env bash\n#\n################################################################################\n# Common code for"
},
{
"path": "tests/t/1st.t",
"chars": 99,
"preview": "# Ensure the sysbench binary exists in PATH and is executable\n\n $ sysbench --help >/dev/null 2>&1\n"
},
{
"path": "tests/t/api_basic.t",
"chars": 3620,
"preview": "########################################################################\nBasic Lua API tests\n###########################"
},
{
"path": "tests/t/api_histogram.t",
"chars": 697,
"preview": "########################################################################\nTests for histogram API\n#######################"
},
{
"path": "tests/t/api_rand.t",
"chars": 2644,
"preview": "########################################################################\nPRNG Lua API tests\n############################"
},
{
"path": "tests/t/api_reports.t",
"chars": 3320,
"preview": "########################################################################\nTests for custom report hooks\n#################"
},
{
"path": "tests/t/api_sql_mysql.t",
"chars": 5201,
"preview": "########################################################################\nSQL Lua API + MySQL tests\n#####################"
},
{
"path": "tests/t/api_sql_pgsql.t",
"chars": 3856,
"preview": "########################################################################\nSQL Lua API + PostgreSQL tests\n################"
},
{
"path": "tests/t/cmd_cleanup.t",
"chars": 316,
"preview": " $ sysbench cleanup\n sysbench * (glob)\n \n FATAL: Cannot find benchmark 'cleanup': no such built-in test, file or mod"
},
{
"path": "tests/t/cmd_help.t",
"chars": 292,
"preview": " $ sysbench help\n sysbench * (glob)\n \n FATAL: Cannot find benchmark 'help': no such built-in test, file or module\n "
},
{
"path": "tests/t/cmd_prepare.t",
"chars": 316,
"preview": " $ sysbench prepare\n sysbench * (glob)\n \n FATAL: Cannot find benchmark 'prepare': no such built-in test, file or mod"
},
{
"path": "tests/t/cmd_run.t",
"chars": 325,
"preview": " $ sysbench run\n sysbench * (glob)\n \n FATAL: Cannot find benchmark 'run': no such built-in test, file or module\n [1"
},
{
"path": "tests/t/cmdline.t",
"chars": 12024,
"preview": "########################################################################\n# Command line syntax tests\n###################"
},
{
"path": "tests/t/commands.t",
"chars": 238,
"preview": " $ commands=$(sysbench --help | grep 'Commands' | cut -d ' ' -f 6-)\n $ for cmd in $commands; do\n > if [ ! -r ${SBTEST"
},
{
"path": "tests/t/drivers.t",
"chars": 806,
"preview": "########################################################################\nMake sure all available DB drivers are covered\n"
},
{
"path": "tests/t/drv_mysql.t",
"chars": 1495,
"preview": "########################################################################\nMySQL driver tests\n############################"
},
{
"path": "tests/t/drv_pgsql.t",
"chars": 1500,
"preview": "########################################################################\nPostgreSQL driver tests\n#######################"
},
{
"path": "tests/t/help_drv_mysql.t",
"chars": 1570,
"preview": "Skip test if the MySQL driver is not available.\n\n $ if [ -z \"$SBTEST_HAS_MYSQL\" ]\n > then\n > exit 80\n > fi\n\n $ sy"
},
{
"path": "tests/t/help_drv_pgsql.t",
"chars": 595,
"preview": "Skip test if the PostgreSQL driver is not available.\n\n $ if [ -z \"$SBTEST_HAS_PGSQL\" ]\n > then\n > exit 80\n > fi\n\n "
},
{
"path": "tests/t/opt_help.t",
"chars": 4119,
"preview": "########################################################################\nSkip everything between \"Compiled-in database d"
},
{
"path": "tests/t/opt_histogram.t",
"chars": 1471,
"preview": "########################################################################\n--histogram tests\n#############################"
},
{
"path": "tests/t/opt_luajit_cmd.t",
"chars": 535,
"preview": "########################################################################\n--luajit-cmd tests\n############################"
},
{
"path": "tests/t/opt_rate.t",
"chars": 467,
"preview": "########################################################################\nTests for the --rate option (aka the limited ra"
},
{
"path": "tests/t/opt_report_checkpoints.t",
"chars": 698,
"preview": "########################################################################\n# --report-checkpoints tests\n##################"
},
{
"path": "tests/t/opt_report_interval.t",
"chars": 658,
"preview": "########################################################################\n# --report-interval tests\n#####################"
},
{
"path": "tests/t/opt_version.t",
"chars": 339,
"preview": "########################################################################\nTest for the --version option\n#################"
},
{
"path": "tests/t/opt_warmup_time.t",
"chars": 2123,
"preview": "########################################################################\n--warmup-time tests\n###########################"
},
{
"path": "tests/t/script_bulk_insert_mysql.t",
"chars": 2350,
"preview": "########################################################################\nbulk_insert.lua + MySQL tests\n#################"
},
{
"path": "tests/t/script_bulk_insert_pgsql.t",
"chars": 2677,
"preview": "########################################################################\nbulk_insert.lua + PostgreSQL tests\n############"
},
{
"path": "tests/t/script_oltp_delete_mysql.t",
"chars": 10832,
"preview": "########################################################################\noltp_delete.lua + MySQL tests \n################"
},
{
"path": "tests/t/script_oltp_delete_pgsql.t",
"chars": 18535,
"preview": "########################################################################\noltp_delete.lua + PostgreSQL tests \n###########"
},
{
"path": "tests/t/script_oltp_general_mysql.t",
"chars": 788,
"preview": " $ . $SBTEST_INCDIR/mysql_common.sh\n $ SB_EXTRA_ARGS=${SB_EXTRA_ARGS:-}\n $ ARGS=\"oltp_read_write ${DB_DRIVER_ARGS} --"
},
{
"path": "tests/t/script_oltp_help.t",
"chars": 2233,
"preview": "########################################################################\nOLTP usage information test\n###################"
},
{
"path": "tests/t/script_oltp_insert_mysql.t",
"chars": 10778,
"preview": "########################################################################\noltp_insert.lua + MySQL tests\n#################"
},
{
"path": "tests/t/script_oltp_insert_pgsql.t",
"chars": 18481,
"preview": "########################################################################\noltp_insert.lua + PostgreSQL tests\n############"
},
{
"path": "tests/t/script_oltp_point_select_mysql.t",
"chars": 10832,
"preview": "########################################################################\noltp_point_select.lua + MySQL tests \n##########"
},
{
"path": "tests/t/script_oltp_point_select_pgsql.t",
"chars": 18535,
"preview": "########################################################################\noltp_point_select.lua + PostgreSQL tests \n#####"
},
{
"path": "tests/t/script_oltp_read_write_mysql.t",
"chars": 21692,
"preview": "########################################################################\noltp_read_write.lua + MySQL tests \n############"
},
{
"path": "tests/t/script_oltp_read_write_pgsql.t",
"chars": 18663,
"preview": "########################################################################\noltp_read_write.lua + PostgreSQL tests \n#######"
},
{
"path": "tests/t/script_select_random_mysql.t",
"chars": 5959,
"preview": "########################################################################\nselect_random_*.lua + MySQL tests \n############"
},
{
"path": "tests/t/script_select_random_pgsql.t",
"chars": 6200,
"preview": "########################################################################\nselect_random_*.lua + PostgreSQL tests \n#######"
},
{
"path": "tests/t/test_cpu.t",
"chars": 1445,
"preview": "########################################################################\ncpu benchmark tests\n###########################"
},
{
"path": "tests/t/test_fileio.t",
"chars": 10999,
"preview": "########################################################################\nfileio benchmark tests\n########################"
},
{
"path": "tests/t/test_memory.t",
"chars": 6623,
"preview": "########################################################################\nmemory benchmark tests\n########################"
},
{
"path": "tests/t/test_mutex.t",
"chars": 1477,
"preview": "########################################################################\nmutex benchmark tests\n#########################"
},
{
"path": "tests/t/test_threads.t",
"chars": 1413,
"preview": "########################################################################\nthreads benchmark tests\n#######################"
},
{
"path": "tests/t/tests.t",
"chars": 471,
"preview": "########################################################################\nMake sure all built-in tests are covered\n######"
},
{
"path": "tests/test_run.sh",
"chars": 2825,
"preview": "#!/usr/bin/env bash\n\n# Copyright (C) 2016-2017 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free software; yo"
},
{
"path": "third_party/concurrency_kit/Makefile.am",
"chars": 1312,
"preview": "# Copyright (C) 2016 Alexey Kopytov <akopytov@gmail.com>\n#\n# This program is free software; you can redistribute it and/"
},
{
"path": "third_party/concurrency_kit/ck/.gitignore",
"chars": 7325,
"preview": "/Makefile\nbuild/ck.build\nbuild/ck.pc\nbuild/regressions.build\nbuild/ck.spec\ninclude/ck_md.h\nsrc/Makefile\ndoc/Makefile\ndoc"
},
{
"path": "third_party/concurrency_kit/ck/LICENSE",
"chars": 2607,
"preview": "Copyright 2010-2014 Samy Al Bahra.\nCopyright 2011-2013 AppNexus, Inc.\nAll rights reserved.\n\nRedistribution and use in so"
},
{
"path": "third_party/concurrency_kit/ck/README",
"chars": 785,
"preview": " ____ _ ___ _\n / ___|___ _ __ ___ _ _ _ __ _ __ ___ _ __ "
},
{
"path": "third_party/concurrency_kit/ck/build/ck.build.aarch64",
"chars": 1,
"preview": "\n"
},
{
"path": "third_party/concurrency_kit/ck/build/ck.build.arm",
"chars": 18,
"preview": "CFLAGS+=-D__arm__\n"
},
{
"path": "third_party/concurrency_kit/ck/build/ck.build.in",
"chars": 213,
"preview": "CC=@CC@\nMAKE=make\nSRC_DIR=@SRC_DIR@\nBUILD_DIR=@BUILD_DIR@\nCFLAGS+=@CFLAGS@ -I$(SRC_DIR)/include -I$(BUILD_DIR)/include\nL"
},
{
"path": "third_party/concurrency_kit/ck/build/ck.build.ppc",
"chars": 23,
"preview": "CFLAGS+=-m32 -D__ppc__\n"
},
{
"path": "third_party/concurrency_kit/ck/build/ck.build.ppc64",
"chars": 39,
"preview": "CFLAGS+=-m64 -D__ppc64__\nLDFLAGS+=-m64\n"
},
{
"path": "third_party/concurrency_kit/ck/build/ck.build.s390x",
"chars": 24,
"preview": "CFLAGS+=-O2 -D__s390x__\n"
},
{
"path": "third_party/concurrency_kit/ck/build/ck.build.sparcv9",
"chars": 27,
"preview": "CFLAGS+=-m64 -D__sparcv9__\n"
},
{
"path": "third_party/concurrency_kit/ck/build/ck.build.x86",
"chars": 50,
"preview": "CFLAGS+=-m32 -D__x86__ -msse -msse2\nLDFLAGS+=-m32\n"
},
{
"path": "third_party/concurrency_kit/ck/build/ck.build.x86_64",
"chars": 40,
"preview": "CFLAGS+=-m64 -D__x86_64__\nLDFLAGS+=-m64\n"
},
{
"path": "third_party/concurrency_kit/ck/build/ck.pc.in",
"chars": 291,
"preview": "prefix=@PREFIX@\nincludedir=@HEADERS@\nlibdir=@LIBRARY@\n\nName: Concurrency Kit\nDescription: Toolkit for well-specified des"
},
{
"path": "third_party/concurrency_kit/ck/build/ck.spec.in",
"chars": 2122,
"preview": "Name: ck\nVersion: @VERSION@\nRelease: 1%{?dist}\nGroup: Development/Libraries\nSummary: Concurrency Kit\nLicense: Simplified"
},
{
"path": "third_party/concurrency_kit/ck/build/regressions.build.in",
"chars": 210,
"preview": "CC=@CC@\nMAKE=make\nCORES=@CORES@\nCFLAGS=@CFLAGS@ -I../../../include -DCORES=@CORES@\nLD=@LD@\nLDFLAGS=@LDFLAGS@\nPTHREAD_CFL"
},
{
"path": "third_party/concurrency_kit/ck/configure",
"chars": 19952,
"preview": "#!/bin/sh\n#\n# Copyright © 2009-2013 Samy Al Bahra.\n# Copyright © 2011 Devon H. O'Dell <devon.odell@gmail.com>\n# All righ"
},
{
"path": "third_party/concurrency_kit/ck/doc/CK_ARRAY_FOREACH",
"chars": 2490,
"preview": ".\\\"\n.\\\" Copyright 2013 Samy Al Bahra.\n.\\\" All rights reserved.\n.\\\"\n.\\\" Redistribution and use in source and binary forms"
},
{
"path": "third_party/concurrency_kit/ck/doc/CK_COHORT_INIT",
"chars": 2647,
"preview": ".\\\"\n.\\\" Copyright 2013 Brendon Scheinman.\n.\\\" All rights reserved.\n.\\\"\n.\\\" Redistribution and use in source and binary f"
},
{
"path": "third_party/concurrency_kit/ck/doc/CK_COHORT_INSTANCE",
"chars": 2448,
"preview": ".\\\"\n.\\\" Copyright 2013 Brendon Scheinman.\n.\\\" All rights reserved.\n.\\\"\n.\\\" Redistribution and use in source and binary f"
},
{
"path": "third_party/concurrency_kit/ck/doc/CK_COHORT_LOCK",
"chars": 2417,
"preview": ".\\\"\n.\\\" Copyright 2013 Brendon Scheinman.\n.\\\" All rights reserved.\n.\\\"\n.\\\" Redistribution and use in source and binary f"
},
{
"path": "third_party/concurrency_kit/ck/doc/CK_COHORT_PROTOTYPE",
"chars": 3051,
"preview": ".\\\"\n.\\\" Copyright 2013 Brendon Scheinman.\n.\\\" All rights reserved.\n.\\\"\n.\\\" Redistribution and use in source and binary f"
},
{
"path": "third_party/concurrency_kit/ck/doc/CK_COHORT_TRYLOCK",
"chars": 2891,
"preview": ".\\\"\n.\\\" Copyright 2013 Brendon Scheinman.\n.\\\" All rights reserved.\n.\\\"\n.\\\" Redistribution and use in source and binary f"
}
]
// ... and 485 more files (download for full content)
About this extraction
This page contains the full source code of the akopytov/sysbench GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 685 files (3.2 MB), approximately 875.3k tokens, and a symbol index with 1733 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.