zephyr/ext/hal/libmetal
Andy Ross 317178b88f sys_clock: Fix unsafe tick count usage
The system tick count is a 64 bit quantity that gets updated from
interrupt context, meaning that it's dangerously non-atomic and has to
be locked.  The core kernel clock code did this right.

But the value was also exposed to the rest of the universe as a global
variable, and virtually nothing else was doing this correctly.  Even
in the timer ISRs themselves, the interrupts may be themselves
preempted (most of our architectures support nested interrupts) by
code that wants to set timeouts and inspect system uptime.

Define a z_tick_{get,set}() API, eliminate the old variable, and make
sure everyone uses the right mechanism.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2018-10-16 15:03:10 -04:00
..
libmetal sys_clock: Fix unsafe tick count usage 2018-10-16 15:03:10 -04:00
CMakeLists.txt ext: hal: libmetal: Allow for libmetal source to be external 2018-05-24 11:22:05 -05:00
Kconfig Kconfig: Use a short, consistent style for prompts 2018-08-15 04:10:10 -07:00
README ext: libmetal: Update import of libmetal from b4b5bea to a4f7630 2018-09-28 07:57:28 +05:30

README

libmetal
#####################

Origin:
   https://github.com/OpenAMP/libmetal

Import instructions:
   When we import libmetal we remove the tests/ and examples/ dir to reduce
   the amount of code imported.

Purpose:
   HAL abstraction layer used by open-amp

Description:
   Libmetal provides common user APIs to access devices, handle device
   interrupts and request memory across the following operating environments:

   * Linux user space (based on UIO and VFIO support in the kernel)
   * RTOS (with and without virtual memory)
   * Bare-metal environments

Dependencies:
   Depends on Zephyr itself as it utilizes Zephyr's APIs to provide an
   abstraction to open-amp.

URL:
   https://github.com/OpenAMP/libmetal

commit:
   a4f763094cb26cd8f7abdff251f57a6a802c039d

Maintained-by:
   External

License:
   BSD-3-Clause

License Link:
   https://github.com/OpenAMP/libmetal/blob/master/LICENSE.md