History: util_hcc_mem


This page describes all changes made to the util_hcc_mem package, the HCC memory management utility, since its release.

Version

1.27 (2019-12-03, 16:39):

  • Eliminated static analysis issues.

1.26 (2019-09-13, 12:00):

  • Eliminated C++ compiler errors.

1.25 (2018-08-27, 16:30):

  • Eliminated static analysis issues.

1.24 (2018-09-24, 14:30):

  • Added boundary check to _hcc_set_lock_dsc().

1.23r2 (2018-08-29, 18:30):

  • Document HTML link added to the documentation folder.
  • History and document files renamed to the package name.

1.23 (2017-08-28, 12:55):

  • hcc_mem_alloc()/hcc_mem_lock() possibly returned incorrect address with corner case configurations.

1.22:

  • Buffer indexing error was fixed in hcc_mem_free().
  • Refactoring to comply with coding standard rules.

1.21:

  • Buffer overrun was fixed in hcc_mem_free() in case this function was called for a buffer that was not allocated earlier with hcc_mem_alloc().

1.20:

  • Crash could occur with some modules if HCC_MEM_ALLOW_DATA_CACHE  is enabled. Affected versions from 1.17.

1.19:

  • Compiler warnings were eliminated.

1.18:

  • psp_types.h used instead of stdint.h and stddef.h.

1.17:

  • Alloc area precedes lock are, this way less memory can be needed in case of aligned buffers.
  • hcc_mem_alloc() will correctly return a NULL pointer if no page could be allocated. In case of aligned allocation the function could return incorrect memory address.
  • Both default and uncached buffers are allocated in psp_hcc_mem.c.

1.16 r3:

  • Default buffer alignment changed to 32 in the configuration.

1.16:

  • Removed invalidate_cache function call from hcc_mem_unlock()/hcc_mem_unlock_int() functions.

1.15:

  • Corrected _hcc_get_buf_dsc mem_hdl handling to prevent overrunning.

1.14:

  • Resource (mutex) creation moved to hcc_mem_init() and resource deletion added to hcc_mem_delete().
  • Introduced hcc_mem_start() and hcc_mem_stop() for compatibility reasons.

1.13:

  • hcc_mem_flush_cache doesn't need to check for cache line alignment and for the buffer size to be multiple of cache lines but hcc_mem_flush_invalidate must. hcc_mem_lock changed accordingly.

1.12:

  • Force parameter added to hcc_mem_lock_tr.

1.11:

  • hcc_mem_lock_tr introduced.

1.10:

  • Quick lock blocks removed and lock mechanism optimized.

1.9:

  • HCC_MEM_LOCK_MAX_PAGES introduced.
  • No. quick lock pages can exceed 32.

1.8:

  • HCC mem is only compiled in if HCC_MEM_COUNT != 0, except the init and delete functions.

1.7:

  • Memory initialization bug fixed in case no. blocks in a buffer can be more than 32, as a consequence it could happen that freeing an allocated memory didn't freed it all and a consequent allocation failed.

1.6:

  • Memory initialization bug fixed in case no. blocks were < 32.

1.5:

Corrected typecasts to avoid warnings on 8/16 bit platforms.

1.4:

  • HCC_MEM_ALLOW_DEF_BUF_LOCK renamed to HCC_MEM_ALLOW_DEFAULT_BUF_LOCK.
  • HCC_MEM_ALLOW_UNCACHED_BUF_LOCK introduced.

1.3:

  • OAL resource initialization changed.

1.2:

  • If HCC_MEM_ALLOW_DATA_CACHE is set then when lock is called it will check if cache flush can be applied to the buffer by calling hcc_mem_flush_cache() function, at unlock if the buffer address is not in the range of memory handler then it will call hcc_mem_invalidate_cache(). These operations will be only applied on uncached memory area.

1.1:

  • HCC_MEM_PAGE_PER_BLOCK, HCC_MEM_LOCK_BLOCKS, HCC_MEM_QUICK_LOCK_BLOCKS, HCC_MEM_MAX_LOCK_COUNT and HCC_MEM_ALLOW_DEF_BUF_LOCK moved from hcc_mem.c to config_hcc_mem.h.