Cache routines working with a processor set?

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Nov 14 06:21:34 UTC 2018


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.



More information about the users mailing list