Cache routines working with a processor set?

Matthew J Fletcher amimjf at gmail.com
Wed Nov 14 08:05:19 UTC 2018


Hi Sebastian

None of the above, but we used to
use rtems_cache_invalidate_entire_instruction
/ rtems_cache_invalidate_multiple_data_lines but now use arch specific
methods instead.

On Wed, 14 Nov 2018 at 06:21, Sebastian Huber <
sebastian.huber at embedded-brains.de> wrote:

> Hello,
>
> are the following cache manager routines used in an application or
> device driver code?
>
> /**
>   * @brief Flushes multiple data cache lines for a set of processors
>   *
>   * Dirty cache lines covering the area are transferred to memory.
>   * Depending on the cache implementation this may mark the lines as
> invalid.
>   *
>   * This operation should not be called from interrupt context.
>   *
>   * @param[in] addr The start address of the area to flush.
>   * @param[in] size The size in bytes of the area to flush.
>   * @param[in] setsize The size of the processor set.
>   * @param[in] set The target processor set.
>   */
> void rtems_cache_flush_multiple_data_lines_processor_set(
>    const void *addr,
>    size_t size,
>    const size_t setsize,
>    const cpu_set_t *set
> );
>
> /**
>   * @brief Invalidates multiple data cache lines for a set of processors
>   *
>   * The cache lines covering the area are marked as invalid.  A later read
>   * access in the area will load the data from memory.
>   *
>   * In case the area is not aligned on cache line boundaries, then this
>   * operation may destroy unrelated data.
>   *
>   * This operation should not be called from interrupt context.
>   *
>   * @param[in] addr The start address of the area to invalidate.
>   * @param[in] size The size in bytes of the area to invalidate.
>   * @param[in] setsize The size of the processor set.
>   * @param[in] set The target processor set.
>   */
> void rtems_cache_invalidate_multiple_data_lines_processor_set(
>    const void *addr,
>    size_t size,
>    const size_t setsize,
>    const cpu_set_t *set
> );
>
> /**
>   * @brief Flushes the entire data cache for a set of processors
>   *
>   * This operation should not be called from interrupt context.
>   *
>   * @see rtems_cache_flush_multiple_data_lines().
>   *
>   * @param[in] setsize The size of the processor set.
>   * @param[in] set The target processor set.
>   */
> void rtems_cache_flush_entire_data_processor_set(
>    const size_t setsize,
>    const cpu_set_t *set
> );
>
> /**
>   * @brief Invalidates the entire cache for a set of processors
>   *
>   * This function is responsible for performing a data cache
>   * invalidate. It invalidates the entire cache for a set of
>   * processors.
>   *
>   * This operation should not be called from interrupt context.
>   *
>   * @param[in] setsize The size of the processor set.
>   * @param[in] set The target processor set.
>   */
> void rtems_cache_invalidate_entire_data_processor_set(
>    const size_t setsize,
>    const cpu_set_t *set
> );
>
> I would like to remove these exotic, complex and very hard to use
> correctly functions.
>
> --
> Sebastian Huber, embedded brains GmbH
>
> Address : Dornierstr. 4, D-82178 Puchheim, Germany
> Phone   : +49 89 189 47 41-16
> Fax     : +49 89 189 47 41-09
> E-Mail  : sebastian.huber at embedded-brains.de
> PGP     : Public key available on request.
>
> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
>
> _______________________________________________
> users mailing list
> users at rtems.org
> http://lists.rtems.org/mailman/listinfo/users



-- 

regards
---
Matthew J Fletcher
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20181114/be4323f2/attachment-0002.html>


More information about the users mailing list