This helps with code complexity to some extent as there were few places where we would "mimic" vector via regular array with x2nrealloc() calls.
It can also help to minimize small sllocations in some cases, currently when there was array like structure of unknown size list would be passed around and each struct in that list would be allocated separately. That could to struct definitions that would hold a single pointer or other struct + the ovs_list struct. With vector the inner struct/pointer can be insterted dirrectly into vector without additional small allocations. The other side of the approach is cache consistenty, the vector is continous block of memory which is way more cache freindly during iteration. Ales Musil (9): vec: Add new data type called vector. utilities: Replace manual x2nrealloc with vector. northd: Replace manual x2nrealloc with vector. controller: Replace manual x2nrealloc with vector. ic: Replace manual x2nrealloc with vector. lib: Replace manual x2nrealloc with vector. mac-cache: Use vector instead of list. controller: Use vector instead of list. northd: Use vector instead of list. controller/binding.c | 74 +++--- controller/lflow.c | 17 +- controller/local_data.c | 62 +++-- controller/local_data.h | 15 +- controller/mac-cache.c | 190 ++++++-------- controller/mac-cache.h | 41 +-- controller/mirror.c | 60 ++--- controller/ofctrl-seqno.c | 193 +++++++------- controller/ofctrl-seqno.h | 11 +- controller/ovn-controller.c | 30 +-- controller/physical.c | 97 +++---- controller/pinctrl.c | 25 +- controller/route-exchange-netlink.c | 33 ++- controller/route-exchange-netlink.h | 6 +- controller/route-exchange.c | 10 +- controller/route.c | 8 +- controller/statctrl.c | 53 ++-- controller/test-lflow-cache.c | 27 +- controller/test-ofctrl-seqno.c | 27 +- ic/ovn-ic.c | 26 +- include/ovn/expr.h | 4 +- lib/actions.c | 115 ++++----- lib/automake.mk | 2 + lib/expr.c | 56 ++--- lib/inc-proc-eng.c | 120 ++++----- lib/lb.c | 49 ++-- lib/lb.h | 4 +- lib/vec.c | 195 +++++++++++++++ lib/vec.h | 175 +++++++++++++ northd/en-advertised-route-sync.c | 41 ++- northd/en-group-ecmp-route.c | 38 ++- northd/en-group-ecmp-route.h | 4 +- northd/en-lr-nat.c | 17 +- northd/en-multicast.c | 47 ++-- northd/en-multicast.h | 3 +- northd/lb.c | 7 +- northd/northd.c | 376 ++++++++++++++-------------- northd/northd.h | 19 +- tests/automake.mk | 1 + tests/ovn.at | 14 ++ tests/test-ovn.c | 3 +- tests/test-vector.c | 316 +++++++++++++++++++++++ utilities/ovn-nbctl.c | 105 +++----- utilities/ovn-sbctl.c | 52 ++-- utilities/ovn-trace.c | 23 +- 45 files changed, 1618 insertions(+), 1173 deletions(-) create mode 100644 lib/vec.c create mode 100644 lib/vec.h create mode 100644 tests/test-vector.c -- 2.49.0 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev