r6.1.1:Upgrading Guide

From liblfds.org
Jump to navigation Jump to search

Introduction

Release 6.1.1 is a bug fix release. Compiler barriers for atomic operations were not brought over from 7.0.0 during backporting.

Upgrade Paths

Supported upgrade paths are from 6.0.1 to 6.1.1 and 6.1.0 to 6.1.1.

User-Visible Changes

liblfds

No user visible changes.

test

No user visible changes.

User-Invisible Changes

liblfds

  • Compiler barriers added to atomic operations.

test

  • volatile qualifier and store barrier added to counter in atomic increment abstraction tests.

Upgrading 6.0.1 to 6.1.1

Globally search and replace "lfds601" with "lfds601" and "LFDS611" with "LFDS611".

Replace all occurances of lfds601_slist_delete_element with lfds611_slist_logically_delete_element.

Replace all occurances of lfds601_slist_delete_all_elements with lfds611_slist_single_threaded_physically_delete_all_elements.

Ensure all threads before using a data structure instance they did not instantiate call lfds611_[data structure]_use on that instance.

If you are running on a third-party port;

  • that port must now specify compiler and processor barriers.
  • that port must now replace its implementation of lfds601_abstraction_aligned_malloc with lfds611_abstraction_malloc and replace its implementation of lfds601_abstraction_aligned_free with lfds611_abstraction_free.
  • that port may well need to change the value of LFDS601_INLINE, removing any use of "extern", as inlining is now static.

Modify your build system to take into account the changes in header file name, library name and library pathname.

Upgrading 6.1.0 to 6.1.1

Globally search and replace "lfds610" with "lfds610" and "LFDS611" with "LFDS611".

Modify your build system to take into account the changes in header file name, library name and library pathname.