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 test: move to app directory 2019-02-26 15:29:27 +01:00
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 app/test: remove meson dependency on file in /sys 2020-01-20 16:37:27 +01:00
has-hugepage.sh test: remove meson dependency on /proc file 2020-04-15 15:45:24 +02:00
meson.build pflock: add phase-fair reader writer locks 2021-04-14 21:59:47 +02:00
packet_burst_generator.c net: use IPV4 VHL constant 2019-11-20 17:36:06 +01:00
packet_burst_generator.h net: add rte prefix to UDP structure 2019-05-24 13:34:46 +02:00
process.h build: replace use of old build macros 2020-10-19 22:15:44 +02:00
resource.c test: move to app directory 2019-02-26 15:29:27 +01:00
resource.h use appropriate EAL macro for constructors 2019-03-27 23:10:57 +01:00
sample_packet_forward.c test: move to app directory 2019-02-26 15:29:27 +01:00
sample_packet_forward.h test: move to app directory 2019-02-26 15:29:27 +01:00
test_acl.c acl: add 512-bit AVX512 classify method 2020-10-14 14:23:01 +02:00
test_acl.h test/acl: add 32-bit range test case 2020-02-13 14:43:56 +01:00
test_alarm.c build/freebsd: rename macro BSDPAPP to FREEBSD 2019-03-12 23:01:14 +01:00
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/bitops: add bit operations test case 2020-06-16 14:34:39 +02:00
test_bitratestats.c bitrate: add free function 2020-10-19 16:08:36 +02:00
test_bpf.c bpf: support packet data load instructions 2020-06-24 23:42:04 +02:00
test_byteorder.c test: move to app directory 2019-02-26 15:29:27 +01:00
test_cfgfile.c test/cfgfile: replace license text with SPDX tag 2019-11-28 03:12:55 +01:00
test_cmdline_cirbuf.c test: move to app directory 2019-02-26 15:29:27 +01:00
test_cmdline_etheraddr.c app: use common macro RTE_DIM 2020-02-05 14:37:41 +01:00
test_cmdline_ipaddr.c app: use common macro RTE_DIM 2020-02-05 14:37:41 +01:00
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 app: use common macro RTE_DIM 2020-02-05 14:37:41 +01:00
test_cmdline_string.c app: use common macro RTE_DIM 2020-02-05 14:37:41 +01:00
test_cmdline.c test: move to app directory 2019-02-26 15:29:27 +01:00
test_cmdline.h test: move to app directory 2019-02-26 15:29:27 +01:00
test_common.c test/common: fix log2 check 2019-12-20 15:05:41 +01:00
test_compressdev_test_buffer.h eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_compressdev.c test/compress: check IM buffer too small 2020-04-19 17:15:14 +02:00
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/crypto: add ECPM cases 2020-01-15 15:01:55 +01:00
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/crypto: do not check for PMD 2020-04-19 22:45:40 +02:00
test_cryptodev_des_test_vectors.h test/crypto: do not check for PMD 2020-04-19 22:45:40 +02:00
test_cryptodev_dh_test_vectors.h test: move to app directory 2019-02-26 15:29:27 +01:00
test_cryptodev_dsa_test_vectors.h test: move to app directory 2019-02-26 15:29:27 +01:00
test_cryptodev_ecdsa_test_vectors.h test/crypto: add ECDSA sign/verify cases 2020-01-15 15:01:55 +01:00
test_cryptodev_ecpm_test_vectors.h test/crypto: add ECPM cases 2020-01-15 15:01:55 +01:00
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: move to app directory 2019-02-26 15:29:27 +01:00
test_cryptodev_kasumi_hash_test_vectors.h test: move to app directory 2019-02-26 15:29:27 +01:00
test_cryptodev_kasumi_test_vectors.h test/crypto: add KASUMI test cases for auth-cipher 2019-07-05 15:28:14 +02:00
test_cryptodev_mixed_test_vectors.h test/crypto: add mixed encypted-digest 2020-01-15 16:45:04 +01:00
test_cryptodev_mod_test_vectors.h test/crypto: check asymmetric crypto 2019-04-02 16:50:24 +02:00
test_cryptodev_rsa_test_vectors.h test/crypto: add RSA cases in QAT and openssl 2019-10-23 16:57:06 +02:00
test_cryptodev_security_docsis_test_vectors.h test/crypto: add DOCSIS security cases 2020-07-08 18:16:16 +02:00
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/crypto: add PDCP U-Plane decap cases 2019-10-09 11:50:12 +02:00
test_cryptodev_security_pdcp_test_vectors.h test/crypto: add PDCP U-Plane encap with integrity cases 2019-10-09 11:50:12 +02:00
test_cryptodev_security_pdcp.c test/crypto: add PDCP U-Plane decap cases 2019-10-09 11:50:12 +02:00
test_cryptodev_snow3g_hash_test_vectors.h test: move to app directory 2019-02-26 15:29:27 +01:00
test_cryptodev_snow3g_test_vectors.h test/crypto: add scatter-gather tests for IP and OOP 2019-07-05 15:28:14 +02:00
test_cryptodev_zuc_test_vectors.h test/crypto: add ZUC test cases for auth-cipher 2019-07-05 15:28:14 +02:00
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/cycles: restore default delay callback 2020-07-27 16:42:19 +02:00
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 build/freebsd: rename macro BSDPAPP to FREEBSD 2019-03-12 23:01:14 +01:00
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 app: use common macro RTE_DIM 2020-02-05 14:37:41 +01:00
test_ethdev_link.c ethdev: format link status text 2020-09-21 18:05:37 +02:00
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: move to app directory 2019-02-26 15:29:27 +01:00
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 eal: hide shared memory config 2019-07-06 10:32:34 +02:00
test_fib6_perf.c test/fib: add IPv6 performance autotests 2019-11-06 00:11:55 +01:00
test_fib6.c fib: remove maximum type enums 2020-10-28 21:23:11 +01:00
test_fib_perf.c test: fix build with gcc 10 2020-03-04 10:11:07 +01:00
test_fib.c fib: remove maximum type enums 2020-10-28 21:23:11 +01:00
test_flow_classify.c test/flow_classify: enable multi-sockets system 2020-05-11 23:51:22 +02:00
test_flow_classify.h test: move to app directory 2019-02-26 15:29:27 +01:00
test_func_reentrancy.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_graph_perf.c test/graph: fix memory leaks in performance tests 2020-05-15 11:00:55 +02:00
test_graph.c test/graph: switch user data to dynamic mbuf field 2020-10-31 16:13:11 +01:00
test_hash_functions.c app: use common macro RTE_DIM 2020-02-05 14:37:41 +01:00
test_hash_multiwriter.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_hash_perf.c hash: add bulk lookup with signatures array 2020-04-25 19:26:47 +02:00
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/interrupt: account for race with callback 2019-09-13 17:00:19 +02:00
test_ipfrag.c test/ipfrag: add unit test case 2020-04-25 15:15:30 +02:00
test_ipsec_perf.c test/ipsec: add performance cases 2020-05-11 13:17:43 +02:00
test_ipsec_sad.c test/ipsec: add SAD autotests 2019-10-23 16:57:06 +02:00
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: cleanup when leaving bitrate and latency tests 2020-05-19 14:13:19 +02:00
test_lcores.c eal: add lcore iterators 2020-07-08 14:41:06 +02:00
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 app: use common macro RTE_DIM 2020-02-05 14:37:41 +01:00
test_lpm6_perf.c test: move to app directory 2019-02-26 15:29:27 +01:00
test_lpm6.c app: use common macro RTE_DIM 2020-02-05 14:37:41 +01:00
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: fix global variable multiple definitions 2019-10-25 23:16:23 +02:00
test_member.c replace packed attributes 2020-04-16 18:16:46 +02:00
test_memcpy_perf.c build: remove deprecated cpuflag macros 2020-09-25 11:13:57 +02:00
test_memcpy.c app: use common macro RTE_DIM 2020-02-05 14:37:41 +01:00
test_memory.c remove useless include of EAL memory config header 2019-10-09 10:22:24 +02:00
test_mempool_perf.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_mempool.c replace unused attributes 2020-04-16 18:30:58 +02:00
test_memzone.c test: clean LTO warnings 2019-11-08 15:23:37 +01:00
test_meter.c meter: replace color definitions 2019-04-11 14:27:32 +02:00
test_metrics.c test: use common macro RTE_DIM 2019-10-27 14:40:55 +01:00
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: move to app directory 2019-02-26 15:29:27 +01:00
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 eal: introduce random generator with upper bound 2019-06-28 15:23:55 +02:00
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: move to app directory 2019-02-26 15:29:27 +01:00
test_reciprocal_division.c test: move to app directory 2019-02-26 15:29:27 +01:00
test_red.c test: move to app directory 2019-02-26 15:29:27 +01:00
test_reorder.c reorder: switch sequence number to dynamic mbuf field 2020-10-31 22:14:30 +01:00
test_resource.c test: move to app directory 2019-02-26 15:29:27 +01:00
test_rib6.c remove blank lines at end of file 2019-11-26 00:12:08 +01:00
test_rib.c test/rib: speed up rib autotests 2019-11-07 17:46:43 +01:00
test_ring_hts_stress.c test/ring: add contention stress test for HTS ring 2020-04-21 12:52:55 +02:00
test_ring_mpmc_stress.c test/ring: add contention stress test 2020-04-21 11:34:09 +02:00
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: rename stress test for MT peek API 2020-07-03 12:36:04 +02:00
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: add contention stress test for RTS ring 2020-04-21 12:52:55 +02:00
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: add stress test for ST peek API 2020-07-03 12:05:25 +02:00
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: move to app directory 2019-02-26 15:29:27 +01:00
test_table_acl.c net: replace IPv4/v6 constants with uppercase name 2019-06-03 16:54:54 +02:00
test_table_acl.h test: move to app directory 2019-02-26 15:29:27 +01:00
test_table_combined.c remove extra blank lines at end of files 2019-08-05 15:19:32 +02:00
test_table_combined.h build: replace use of old build macros 2020-10-19 22:15:44 +02:00
test_table_pipeline.c replace unused attributes 2020-04-16 18:30:58 +02:00
test_table_pipeline.h test: move to app directory 2019-02-26 15:29:27 +01:00
test_table_ports.c test: move to app directory 2019-02-26 15:29:27 +01:00
test_table_ports.h test: move to app directory 2019-02-26 15:29:27 +01:00
test_table_tables.c remove extra blank lines at end of files 2019-08-05 15:19:32 +02:00
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 remove useless include of EAL memory config header 2019-10-09 10:22:24 +02:00
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/thash: replace license text with SPDX tag 2019-11-28 03:02:51 +01:00
test_ticketlock.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
test_timer_perf.c build/linux: rename macro from LINUXAPP to LINUX 2019-03-12 17:31:22 +01:00
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 trace: simplify trace point registration 2020-07-05 21:34:21 +02:00
test_trace.c trace: add size_t as generic trace point 2020-10-07 14:44:03 +02:00
test_trace.h test/trace: add functional test cases 2020-04-23 15:40:03 +02:00
test_version.c test: move to app directory 2019-02-26 15:29:27 +01:00
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 net: add rte prefix to ether structures 2019-05-24 13:34:45 +02:00