numam-dpdk/app/test
Stephen Hemminger 9667d97c25 pflock: add phase-fair reader writer locks
This is a new type of reader-writer lock that provides better fairness
guarantees which better suited for typical DPDK applications.
A pflock has two ticket pools, one for readers and one
for writers.

Phase-fair reader writer locks ensure that neither reader nor writer will
be starved.
Neither reader or writer are preferred, they execute in alternating
phases.
All operations of the same type (reader or writer) that acquire the lock
are handled in FIFO order.
Write operations are exclusive, and multiple read operations can be run
together (until a write arrives).

A similar implementation is in Concurrency Kit package in FreeBSD.
For more information see:
   "Reader-Writer Synchronization for Shared-Memory Multiprocessor
    Real-Time Systems",
    http://www.cs.unc.edu/~anderson/papers/ecrts09b.pdf

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2021-04-14 21:59:47 +02:00
..
test_cfgfiles/etc
autotest_data.py support python 3 only 2020-10-02 13:51:00 +02:00
autotest_runner.py test: rename blacklist/whitelist in autotest scripts 2020-11-16 00:11:22 +01:00
autotest_test_funcs.py test: fix autotest handling of skipped tests 2021-03-25 16:24:27 +01:00
autotest.py test: rename blacklist/whitelist in autotest scripts 2020-11-16 00:11:22 +01:00
commands.c test: take test names from command line 2021-04-14 15:14:56 +02:00
get-coremask.sh
has-hugepage.sh
meson.build pflock: add phase-fair reader writer locks 2021-04-14 21:59:47 +02:00
packet_burst_generator.c
packet_burst_generator.h
process.h build: replace use of old build macros 2020-10-19 22:15:44 +02:00
resource.c
resource.h
sample_packet_forward.c
sample_packet_forward.h
test_acl.c acl: add 512-bit AVX512 classify method 2020-10-14 14:23:01 +02:00
test_acl.h
test_alarm.c
test_atomic.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_barrier.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_bitmap.c test/bitmap: test scan after half cacheline is cleared 2021-01-17 22:37:28 +01:00
test_bitops.c
test_bitratestats.c bitrate: add free function 2020-10-19 16:08:36 +02:00
test_bpf.c
test_byteorder.c
test_cfgfile.c
test_cmdline_cirbuf.c
test_cmdline_etheraddr.c
test_cmdline_ipaddr.c
test_cmdline_lib.c cmdline: make implementation logically opaque 2020-10-15 00:39:10 +02:00
test_cmdline_num.c cmdline: avoid name clash with Windows system types 2020-11-05 17:49:00 +01:00
test_cmdline_portlist.c
test_cmdline_string.c
test_cmdline.c
test_cmdline.h
test_common.c
test_compressdev_test_buffer.h eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_compressdev.c
test_cpuflags.c test/cpuflags: add new Arm flags 2020-10-13 17:57:52 +02:00
test_crc.c net: add CRC AVX512 implementation 2020-10-13 19:26:15 +02:00
test_cryptodev_aead_test_vectors.h test/crypto: add GMAC SGL 2020-10-14 22:22:06 +02:00
test_cryptodev_aes_test_vectors.h crypto/aesni_mb: support AES-ECB 2020-10-14 21:34:02 +02:00
test_cryptodev_asym_util.h
test_cryptodev_asym.c app: remove references to make-based config 2020-10-01 16:41:20 +02:00
test_cryptodev_blockcipher.c test/crypto: fix typo in block cipher output 2020-11-12 22:08:51 +01:00
test_cryptodev_blockcipher.h
test_cryptodev_des_test_vectors.h
test_cryptodev_dh_test_vectors.h
test_cryptodev_dsa_test_vectors.h
test_cryptodev_ecdsa_test_vectors.h
test_cryptodev_ecpm_test_vectors.h
test_cryptodev_hash_test_vectors.h test/crypto: add AES-XCBC hash only test case 2021-01-19 18:05:45 +01:00
test_cryptodev_hmac_test_vectors.h
test_cryptodev_kasumi_hash_test_vectors.h
test_cryptodev_kasumi_test_vectors.h
test_cryptodev_mixed_test_vectors.h
test_cryptodev_mod_test_vectors.h
test_cryptodev_rsa_test_vectors.h
test_cryptodev_security_docsis_test_vectors.h
test_cryptodev_security_pdcp_sdap_test_vectors.h test/crypto: add test vectors for PDCP-SDAP 2020-10-14 22:24:41 +02:00
test_cryptodev_security_pdcp_test_func.h
test_cryptodev_security_pdcp_test_vectors.h
test_cryptodev_security_pdcp.c
test_cryptodev_snow3g_hash_test_vectors.h
test_cryptodev_snow3g_test_vectors.h
test_cryptodev_zuc_test_vectors.h
test_cryptodev.c test/crypto: add check in decryption with digest case 2021-02-04 19:06:25 +01:00
test_cryptodev.h test/crypto: add cases for raw datapath API 2020-10-14 22:22:06 +02:00
test_cycles.c
test_debug.c ci: catch coredumps 2021-03-03 10:05:23 +01:00
test_distributor_perf.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_distributor.c test/distributor: fix return buffer queue overload 2021-01-29 08:48:45 +01:00
test_eal_flags.c test/eal: remove unneeded command 2020-11-20 09:58:55 +01:00
test_eal_fs.c
test_efd_perf.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_efd.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_errno.c
test_ethdev_link.c
test_event_crypto_adapter.c test/event_crypto: set cipher operation in transform 2021-01-26 20:30:41 +01:00
test_event_eth_rx_adapter.c test: check stop call status 2020-10-16 22:26:41 +02:00
test_event_eth_tx_adapter.c app: fix ethdev port id size 2020-09-30 19:19:15 +02:00
test_event_ring.c
test_event_timer_adapter.c test/event: add unit tests for periodic timer 2021-04-12 09:23:34 +02:00
test_eventdev.c event/dlb: remove driver 2021-04-12 09:21:30 +02:00
test_external_mem.c test/mem: fix page size for external memory 2021-03-01 11:58:28 +01:00
test_fbarray.c
test_fib6_perf.c
test_fib6.c fib: remove maximum type enums 2020-10-28 21:23:11 +01:00
test_fib_perf.c
test_fib.c fib: remove maximum type enums 2020-10-28 21:23:11 +01:00
test_flow_classify.c
test_flow_classify.h
test_func_reentrancy.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_graph_perf.c
test_graph.c test/graph: switch user data to dynamic mbuf field 2020-10-31 16:13:11 +01:00
test_hash_functions.c
test_hash_multiwriter.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_hash_perf.c
test_hash_readwrite_lf_perf.c test/hash: add RCU tests 2020-10-24 11:11:46 +02:00
test_hash_readwrite.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_hash.c test/hash: add RCU tests 2020-10-24 11:11:46 +02:00
test_interrupts.c
test_ipfrag.c
test_ipsec_perf.c
test_ipsec_sad.c
test_ipsec.c test/ipsec: fix result code for not supported 2021-01-27 20:58:14 +01:00
test_kni.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_kvargs.c kvargs: support multiple lists 2021-03-16 20:15:29 +01:00
test_latencystats.c
test_lcores.c
test_link_bonding_mode4.c test: check stop call status 2020-10-16 22:26:41 +02:00
test_link_bonding_rssconf.c test: check stop call status 2020-10-16 22:26:41 +02:00
test_link_bonding.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
test_logs.c test/log: check levels 2021-04-09 14:01:07 +02:00
test_lpm6_data.h
test_lpm6_perf.c
test_lpm6.c
test_lpm_perf.c test/lpm: avoid code duplication in RCU perf tests 2020-11-05 16:01:16 +01:00
test_lpm.c test: improve coverage on LPM tbl8 2021-01-14 16:41:40 +01:00
test_malloc.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_mbuf.c mbuf: rename outer IP checksum macro 2021-03-02 10:57:28 +01:00
test_mcslock.c test/mcslock: remove unneeded per lcore copy 2021-01-15 16:32:19 +01:00
test_member_perf.c
test_member.c
test_memcpy_perf.c build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
test_memcpy.c
test_memory.c
test_mempool_perf.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_mempool.c
test_memzone.c
test_meter.c
test_metrics.c
test_mp_secondary.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_pdump.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
test_pdump.h
test_per_lcore.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_pflock.c pflock: add phase-fair reader writer locks 2021-04-14 21:59:47 +02:00
test_pmd_perf.c test: fix buffer overflow in Tx burst 2021-01-19 11:03:14 +01:00
test_pmd_ring_perf.c test: check stop call status 2020-10-16 22:26:41 +02:00
test_pmd_ring.c test: check stop call status 2020-10-16 22:26:41 +02:00
test_power_cpufreq.c build: replace use of old build macros 2020-10-19 22:15:44 +02:00
test_power_kvm_vm.c build: replace use of old build macros 2020-10-19 22:15:44 +02:00
test_power.c build: replace use of old build macros 2020-10-19 22:15:44 +02:00
test_prefetch.c eal: add cache line demotion API 2020-10-16 14:11:45 +02:00
test_rand_perf.c
test_rawdev.c test/raw: remove ioat-specific autotest 2020-10-06 09:26:28 +02:00
test_rcu_qsbr_perf.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_rcu_qsbr.c test/rcu: fix build with low core count 2020-10-30 15:43:57 +01:00
test_reciprocal_division_perf.c
test_reciprocal_division.c
test_red.c
test_reorder.c reorder: switch sequence number to dynamic mbuf field 2020-10-31 22:14:30 +01:00
test_resource.c
test_rib6.c
test_rib.c
test_ring_hts_stress.c
test_ring_mpmc_stress.c
test_ring_mt_peek_stress_zc.c test/ring: fix build for O1 optimization 2020-11-15 16:45:48 +01:00
test_ring_mt_peek_stress.c
test_ring_perf.c test/ring: reduce duration of performance tests 2021-01-29 11:37:01 +01:00
test_ring_rts_stress.c
test_ring_st_peek_stress_zc.c test/ring: add stress tests for zero copy API 2020-10-29 14:13:31 +01:00
test_ring_st_peek_stress.c
test_ring_stress_impl.h test/ring: fix memory dump 2020-10-29 14:13:31 +01:00
test_ring_stress.c test/ring: add stress tests for zero copy API 2020-10-29 14:13:31 +01:00
test_ring_stress.h test/ring: add stress tests for zero copy API 2020-10-29 14:13:31 +01:00
test_ring.c test/ring: remove unused code 2020-11-15 16:45:48 +01:00
test_ring.h test/ring: add functional tests for zero copy API 2020-10-29 14:13:31 +01:00
test_rwlock.c test/rwlock: fix spelling and missing whitespace 2021-01-17 18:50:26 +01:00
test_sched.c test/sched: update subport rate dynamically 2020-10-15 02:14:21 +02:00
test_security.c security: update session create API 2020-10-19 09:54:54 +02:00
test_service_cores.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_spinlock.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_stack_perf.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_stack.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_string_fns.c
test_table_acl.c
test_table_acl.h
test_table_combined.c
test_table_combined.h build: replace use of old build macros 2020-10-19 22:15:44 +02:00
test_table_pipeline.c
test_table_pipeline.h
test_table_ports.c
test_table_ports.h
test_table_tables.c
test_table_tables.h build: replace use of old build macros 2020-10-19 22:15:44 +02:00
test_table.c build: replace use of old build macros 2020-10-19 22:15:44 +02:00
test_table.h build: replace use of old build macros 2020-10-19 22:15:44 +02:00
test_tailq.c
test_telemetry_data.c test/telemetry: fix socket resource leak 2020-10-19 17:01:58 +02:00
test_telemetry_json.c test/telemetry: fix typo at beginning of line 2020-11-04 22:07:43 +01:00
test_thash.c
test_ticketlock.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_timer_perf.c
test_timer_racecond.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_timer_secondary.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_timer.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_trace_perf.c test/trace: fix race on collected perf data 2021-04-14 16:12:44 +02:00
test_trace_register.c
test_trace.c trace: add size_t as generic trace point 2020-10-07 14:44:03 +02:00
test_trace.h
test_version.c
test_xmmt_ops.h config: remap flags used for Arm platforms 2020-10-13 16:35:48 +02:00
test.c test: take test names from command line 2021-04-14 15:14:56 +02:00
test.h test: take test names from command line 2021-04-14 15:14:56 +02:00
virtual_pmd.c ethdev: make driver-only headers private 2021-01-29 20:59:09 +01:00
virtual_pmd.h