Message ID | 5830ADDC.2020902@linaro.org |
---|---|
State | New |
Headers | show |
On 2016-11-19 22:54, Maxim Uvarov wrote: > Anders, > > can you please send proposal patch for changing versions? I think it will be > more easy to discuss it if we will have some working patch. > > I also looked to numbering issue one more time and think that it will be > good to have version in both abi and not abi compact library. > > Our original version numbers in shipped files are: > dynamic: > libodp-linux.so -> libodp-linux.so.111.0.0 > libodp-linux.so.111 -> libodp-linux.so.111.0.0 > libodp-linux.so.111.0.0 > static: > libodp-linux.a > > > After reset it will be: > dynamic: > libodp-linux.so -> libodp-linux.so.0.0.0 > libodp-linux.so.0 -> libodp-linux.so.0.0.0 > libodp-linux.so.0.0.0 > static: > libodphelper-linux.a > > Reset I think you asked for such change: > --- a/configure.ac > +++ b/configure.ac > @@ -245,6 +245,12 @@ AC_ARG_ENABLE([abi-compat], > [if test "x$enableval" = "xyes"; then > ODP_ABI_COMPAT=1 > abi_compat=yes > + > + # Reset library versions > + ODP_LIBSO_VERSION=0:0:0 > + AC_SUBST(ODP_LIBSO_VERSION) > + ODPHELPER_LIBSO_VERSION=0:0:0 > + AC_SUBST(ODPHELPER_LIBSO_VERSION) This should be after else if we want this. > else > ODP_ABI_COMPAT=0 > abi_compat=no Instead of resetting the SO-version to 0:0:0 maybe we should just not produce the shared libs? Something like this: AC_ENABLE_SHARED(no) Cheers, Anders > > For both static and dynamic libraries API version will be reported as > previous but .so version will be different. > > I think that it might be useful for debugging to see from which exactly > version is used in file system. And more > logically abi compat so should have name libodp-linux.so and non abi compat > libodp-linux-generic.so. And keep > all their numbers. In that case Cavium, Freescale, Odp-dpdk also sheep > libodp-linux.so in abi compat mode and > some other library name is non compat mode. (I.e. abi compat application > uses libodp-linux.so on any platforms, > and non abi application uses libodp-linux-plat.so only on platform where it > was compiled.). > > What do you think? > > Thank you, > Maxim. > > > On 11/18/16 22:52, Anders Roxell wrote: > >On 18 November 2016 at 01:34, Bill Fischofer <bill.fischofer@linaro.org> wrote:libodp-linux.so.111.0.0 > >>Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org> > >>--- > >>Changes for v2: > >>- Changed release level to v1.11.1.0 per Mike > >> > >> CHANGELOG | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > >> 1 file changed, 211 insertions(+) > >> > >>diff --git a/CHANGELOG b/CHANGELOG > >>index d8230cd..66488e5 100644 > >>--- a/CHANGELOG > >>+++ b/CHANGELOG > >>@@ -1,3 +1,214 @@ > >>+== OpenDataPlane (1.11.1.0) > >>+ > >>+=== New Features > >>+ > >>+==== APIs > >>+ODP v1.11.1.0 is a minor API revision level beyond the Monarch Long Term > >>+Support (LTS) release and introduces a small change to the Traffic Manager API > >>+as well as some documentation clarification surrounding other APIs. > >>+ > >>+==== Traffic Manager Egress Function > >>+The `odp_tm_egress_t` struct has been changed to add an explicit Boolean > >>+(`egress_fcn_supported`) that indicates whether the TM system supports > >>+a user-provided egress function. When specified this function is called to > >>+"output" a packet rather than having TM transmit it directly to a PktIO > >>+interface. > >>+ > >>+==== Traffic Manager Coupling Change > >>+The `odp_tm_egress_t` struct has been changed to associate a TM system with an > >>+output `odp_pktio_t` rather than the previous `odp_pktout_queue_t`. This makes > >>+an explicit 1-to-1 map between a TM system and a PktIO interface. > >This means that we should bump the ODP's SO-version as well, since > >we changed the struct that you mention + that we added "odp_bool_t > >egress_fcn_supported;" to the same struct. > > > >>+ > >>+==== Default huge page size clarification > >>+The documentation for the `odp_sys_huge_page_size()` API has been reworded to > >>+clarify that this API refers to default huge page size. > >>+ > >>+==== Strict Priority (SP) Scheduler > >>+Building on the modular scheduler framework added in v1.10.1.0, an alternate > >>+Strict Priority (SP) Scheduler is now available for latency-sensitive > >>+workloads. Applications wishing to use the SP scheduler should specify > >>+the `./configure` option `--enable-schedule-sp`. This scheduler emphasizes low > >>+latency processing of high priority events at the expense of throughput. This > >>+alternate scheduler is considered experimental and should not be used for > >>+production at this time. > >>+ > >>+==== Application Binary Interface (ABI) Support > >>+Support is added to enable ODP applications to be binary compatible across > >>+different implementations of ODP sharing the same Instruction Set Architecture > >>+(ISA). This support introduces a new `configure` option: > >>+ > >>+`--enable-abi-compat=yes`:: > >>+This is the default and specifies that the ODP library is to be built to > >>+support ABI compatibility mode. In this mode ODP APIs are never inlined. ABI > >>+compatibility ensures maximum application portability in cloud environments. > >>+ > >>+`--enable-abi-compat=no`:: > >>+Specify this option to enable the inlining of ODP APIs. This may result in > >>+improved performance at the cost of ABI compatibility and is suitable for > >>+applications running in embedded environments. > >before we do a new release I think we need to resolve what we > >talked about in this thread [1]. > >Basically, if we disable ABI compat mode I think we should set the > >SO-version to 0:0:0, to make it clear that we don't try to be ABI > >compatible. > > > >Cheers, > >Anders > >[1] https://lists.linaro.org/pipermail/lng-odp/2016-September/025734.html > > > >>+ > >>+Note that ODP applications retain source code portability between ODP > >>+implementations regardless of the ABI mode chosen. To move to a different ODP > >>+application running on a different ISA, code need simply be recompiled against > >>+that target ODP implementation. > >>+ > >>+==== SCTP Parsing Support > >>+The ODP classifier adds support for recognizing Stream Control Transmission > >>+Protocol (SCTP) packets. The APIs for this were previously not implemented. > >>+ > >>+=== Packaging and Implementation Refinements > >>+ > >>+==== Remove dependency on Linux headers > >>+ODP no longer has a dependency on Linux headers. This will help make the > >>+odp-linux reference implementation more easily portable to non-Linux > >>+environments. > >>+ > >>+==== Remove dependency on helpers > >>+The odp-linux implementation has been made independent of the helper library > >>+to avoid circular dependency issues with packaging. Helper functions may use > >>+ODP APIs, however ODP implementations should not use helper functions. > >>+ > >>+==== Reorganization of `test` directory > >>+The `test` directory has been reorganized to better support a unified approach > >>+to ODP component testing. API tests now live in > >>+`test/common_plat/validation/api` instead of the former > >>+`test/validation`. With this change performance and validation tests, as well > >>+as common and platform-specific tests can all be part of a unified test > >>+hierarchy. > >>+ > >>+The resulting test tree now looks like: > >>+ > >>+.New `test` directory hierarchy > >>+----- > >>+test > >>+├── common_plat > >>+│ ├── common > >>+│ ├── m4 > >>+│ ├── miscellaneous > >>+│ ├── performance > >>+│ └── validation > >>+│ └── api > >>+│ ├── atomic > >>+│ ├── barrier > >>+│ ├── buffer > >>+│ ├── classification > >>+│ ├── cpumask > >>+│ ├── crypto > >>+│ ├── errno > >>+│ ├── hash > >>+│ ├── init > >>+│ ├── lock > >>+│ ├── packet > >>+│ ├── pktio > >>+│ ├── pool > >>+│ ├── queue > >>+│ ├── random > >>+│ ├── scheduler > >>+│ ├── shmem > >>+│ ├── std_clib > >>+│ ├── system > >>+│ ├── thread > >>+│ ├── time > >>+│ ├── timer > >>+│ └── traffic_mngr > >>+├── linux-generic > >>+│ ├── m4 > >>+│ ├── mmap_vlan_ins > >>+│ ├── performance > >>+│ ├── pktio_ipc > >>+│ ├── ring > >>+│ └── validation > >>+│ └── api > >>+│ ├── pktio > >>+│ └── shmem > >>+└── m4 > >>+----- > >>+ > >>+==== Pools > >>+The maximum number of pools that may be created in the odp-linux reference > >>+implementation has been raised from 16 to 64. > >>+ > >>+==== Upgrade to DPDK 16.07 > >>+The DPDK pktio support in odp-linux has been upgraded to work with DPDK 16.07. > >>+A number of miscellaneous fixes and performance improvements in this support > >>+are also present. > >>+ > >>+==== PktIO TAP Interface Classifier Support > >>+Packet I/O interfaces operating in TAP mode now can feed packets to the ODP > >>+classifier the same as other pktio modes can do. > >>+ > >>+=== Performance Improvements > >>+ > >>+==== Thread-local cache optimizations > >>+The thread-local buffer cache has been reorganized and optimized for burst-mode > >>+operation, yielding a measurable performance gain in almost all cases. > >>+ > >>+==== Burst-mode buffer allocation > >>+The scheduler and pktio components have been reworked to use burst-mode > >>+buffer allocation/deallocation, yielding a measurable performance gain in > >>+almost all cases. > >>+ > >>+==== Burst-mode queue operations > >>+ODP queues internally now attempt to use burst-mode enq/deq operations to > >>+accelerate performance where applicable. > >>+ > >>+==== Ring-based Scheduler Priority Queues > >>+The ODP scheduler has been enhanced to use ring-based priority queues, resulting > >>+in significantly better scalability in many core environments. > >>+ > >>+==== GitHub Automation Support > >>+ODP now supports the Travis framework needed to trigger CI automation in > >>+conjunction with GitHub. This support is considered experimental for now. > >>+ > >>+=== Examples > >>+ > >>+==== New `l3fwd` Example > >>+A new example application is provided that illustrates use > >>+of ODP for simple Layer 3 forwarding across multiple interfaces. > >>+ > >>+==== "Hello World" Example Application > >>+A basic "hello world" ODP application has been added to the `example` > >>+directory to illustrate the basic setup and control flow needed by ODP > >>+applications. > >>+ > >>+=== Documentation > >>+ > >>+==== Pure API Documentation > >>+ODP now generates "pure" (implementation independent) doxygen documentation in > >>+addition to the specific documentation for the odp-linux implementation. The > >>+pure version is applicable to any ODP implementation as it simply describes > >>+the ODP API specification. Implementation-specific versions of this > >>+documentation describe both the APIs as well as specifics concerning typedefs, > >>+enums, etc. This should help clarify what aspects of ODP are platform > >>+independent. > >>+ > >>+==== Clarify ODP Thread Definition > >>+The definition of an ODP thread in odp-linux has been clarified to specify that > >>+for this implementation ODP threads are Linux pthreads or Linux processes. > >>+Currently threads as processes is considered experimental in odp-linux. > >>+ > >>+=== Bug Fixes > >>+Numerous refinements have been incorporated to make > >>+validation tests more robust in API coverage as well as correcting corner > >>+cases in the implementation of many ODP APIs. Notable fixes include: > >>+ > >>+==== https://bugs.linaro.org/show_bug.cgi?id=2316[Bug 2316] > >>+`ODP_TIMEOUT_INVALID` is now defined consistently with other pool elements so > >>+the restriction on using Pool 0 as a timer pool is removed. > >>+ > >>+==== https://bugs.linaro.org/show_bug.cgi?id=2310[Bug 2310] > >>+The `odp_packet_copy()` API now correctly handles user areas between pools that > >>+are configured with different sized per-packet user area definitions. > >>+ > >>+==== https://bugs.linaro.org/show_bug.cgi?id=2571[Bug 2571] > >>+Corrects the implementation of AES GCM decryption in the ODP crypto API. > >>+ > >>+=== Known Issues > >>+ > >>+==== https://bugs.linaro.org/show_bug.cgi?id=2309[Bug 2309] > >>+The Timer validation test fails sporadically in environments with high core > >>+counts. > >>+ > >> == OpenDataPlane (1.10.1.0) > >> > >> === New Features > >>-- > >>2.7.4 > >> > -- Anders Roxell anders.roxell@linaro.org M: +46 709 71 42 85 | IRC: roxell
--- a/configure.ac +++ b/configure.ac @@ -245,6 +245,12 @@ AC_ARG_ENABLE([abi-compat], [if test "x$enableval" = "xyes"; then ODP_ABI_COMPAT=1 abi_compat=yes + + # Reset library versions + ODP_LIBSO_VERSION=0:0:0 + AC_SUBST(ODP_LIBSO_VERSION) + ODPHELPER_LIBSO_VERSION=0:0:0 + AC_SUBST(ODPHELPER_LIBSO_VERSION) else ODP_ABI_COMPAT=0 abi_compat=no