The timing_info benchmark on qemu_x86 shows this is a bit faster. Before: START - Time Measurement Timing results: Clock frequency: 1000 MHz Context switch : 896 cycles , 895 ns Interrupt latency : 768 cycles , 767 ns Tick overhead :14912 cycles , 14911 ns Thread creation :18688 cycles , 18687 ns Thread abort (non-running) :49216 cycles , 49215 ns Thread abort (_current) :55616 cycles , 55615 ns Thread suspend :11072 cycles , 11071 ns Thread resume :10272 cycles , 10271 ns Thread yield :12213 cycles , 12212 ns Thread sleep :17984 cycles , 17983 ns Heap malloc :21702 cycles , 21701 ns Heap free :15176 cycles , 15175 ns Semaphore take with context switch :19168 cycles , 19167 ns Semaphore give with context switch :18400 cycles , 18399 ns Semaphore take without context switch :2208 cycles , 2207 ns Semaphore give without context switch :4704 cycles , 4703 ns Mutex lock :1952 cycles , 1951 ns Mutex unlock :7936 cycles , 7935 ns Message queue put with context switch :20320 cycles , 20319 ns Message queue put without context switch :5792 cycles , 5791 ns Message queue get with context switch :22112 cycles , 22111 ns Message queue get without context switch :5312 cycles , 5311 ns Mailbox synchronous put :27936 cycles , 27935 ns Mailbox synchronous get :23392 cycles , 23391 ns Mailbox asynchronous put :11808 cycles , 11807 ns Mailbox get without context switch :20416 cycles , 20415 ns Drop to user mode :643712 cycles , 643711 ns User thread creation :652096 cycles , 652095 ns Syscall overhead :2720 cycles , 2719 ns Validation overhead k_object init :4256 cycles , 4255 ns Validation overhead k_object permission :4224 cycles , 4223 ns Time Measurement finished After: START - Time Measurement Timing results: Clock frequency: 1000 MHz Context switch : 896 cycles , 895 ns Interrupt latency : 768 cycles , 767 ns Tick overhead :14752 cycles , 14751 ns Thread creation :18464 cycles , 18463 ns Thread abort (non-running) :48992 cycles , 48991 ns Thread abort (_current) :55552 cycles , 55551 ns Thread suspend :10848 cycles , 10847 ns Thread resume :10048 cycles , 10047 ns Thread yield :12213 cycles , 12212 ns Thread sleep :17984 cycles , 17983 ns Heap malloc :21702 cycles , 21701 ns Heap free :15176 cycles , 15175 ns Semaphore take with context switch :19104 cycles , 19103 ns Semaphore give with context switch :18368 cycles , 18367 ns Semaphore take without context switch :1984 cycles , 1983 ns Semaphore give without context switch :4480 cycles , 4479 ns Mutex lock :1728 cycles , 1727 ns Mutex unlock :7712 cycles , 7711 ns Message queue put with context switch :20224 cycles , 20223 ns Message queue put without context switch :5568 cycles , 5567 ns Message queue get with context switch :22016 cycles , 22015 ns Message queue get without context switch :5088 cycles , 5087 ns Mailbox synchronous put :27840 cycles , 27839 ns Mailbox synchronous get :23296 cycles , 23295 ns Mailbox asynchronous put :11584 cycles , 11583 ns Mailbox get without context switch :20192 cycles , 20191 ns Drop to user mode :643616 cycles , 643615 ns User thread creation :651872 cycles , 651871 ns Syscall overhead :2464 cycles , 2463 ns Validation overhead k_object init :4032 cycles , 4031 ns Validation overhead k_object permission :4000 cycles , 3999 ns Time Measurement finished Signed-off-by: Daniel Leung <daniel.leung@intel.com> |
||
|---|---|---|
| .buildkite | ||
| .github | ||
| .known-issues | ||
| arch | ||
| boards | ||
| cmake | ||
| doc | ||
| drivers | ||
| dts | ||
| include | ||
| kernel | ||
| lib | ||
| misc | ||
| modules | ||
| samples | ||
| scripts | ||
| share | ||
| soc | ||
| subsys | ||
| tests | ||
| .checkpatch.conf | ||
| .clang-format | ||
| .codecov.yml | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlint | ||
| .mailmap | ||
| .uncrustify.cfg | ||
| CMakeLists.txt | ||
| CODE_OF_CONDUCT.md | ||
| CODEOWNERS | ||
| CONTRIBUTING.rst | ||
| Kconfig | ||
| Kconfig.zephyr | ||
| LICENSE | ||
| MAINTAINERS.yml | ||
| Makefile | ||
| README.rst | ||
| VERSION | ||
| version.h.in | ||
| west.yml | ||
| zephyr-env.cmd | ||
| zephyr-env.sh | ||
.. raw:: html
<a href="https://www.zephyrproject.org">
<p align="center">
<img src="doc/images/Zephyr-Project.png">
</p>
</a>
<a href="https://bestpractices.coreinfrastructure.org/projects/74"><img
src="https://bestpractices.coreinfrastructure.org/projects/74/badge"></a>
<a href="https://buildkite.com/zephyr/zephyr">
<img
src="https://badge.buildkite.com/f5bd0dc88306cee17c9b38e78d11bb74a6291e3f40e7d13f31.svg?branch=master"></a>
The Zephyr Project is a scalable real-time operating system (RTOS) supporting
multiple hardware architectures, optimized for resource constrained devices,
and built with security in mind.
The Zephyr OS is based on a small-footprint kernel designed for use on
resource-constrained systems: from simple embedded environmental sensors and
LED wearables to sophisticated smart watches and IoT wireless gateways.
The Zephyr kernel supports multiple architectures, including ARM Cortex-M,
Intel x86, ARC, Nios II, Tensilica Xtensa, and RISC-V, and a large number of
`supported boards`_.
.. below included in doc/introduction/introduction.rst
.. start_include_here
Getting Started
***************
Welcome to Zephyr! See the `Introduction to Zephyr`_ for a high-level overview,
and the documentation's `Getting Started Guide`_ to start developing.
Community Support
*****************
Community support is provided via mailing lists and Slack; see the Resources
below for details.
.. _project-resources:
Resources
*********
Here's a quick summary of resources to help you find your way around:
* **Help**: `Asking for Help Tips`_
* **Documentation**: http://docs.zephyrproject.org (`Getting Started Guide`_)
* **Source Code**: https://github.com/zephyrproject-rtos/zephyr is the main
repository; https://elixir.bootlin.com/zephyr/latest/source contains a
searchable index
* **Releases**: https://github.com/zephyrproject-rtos/zephyr/releases
* **Samples and example code**: see `Sample and Demo Code Examples`_
* **Mailing Lists**: users@lists.zephyrproject.org and
devel@lists.zephyrproject.org are the main user and developer mailing lists,
respectively. You can join the developer's list and search its archives at
`Zephyr Development mailing list`_. The other `Zephyr mailing list
subgroups`_ have their own archives and sign-up pages.
* **Nightly CI Build Status**: https://lists.zephyrproject.org/g/builds
The builds@lists.zephyrproject.org mailing list archives the CI
(shippable) nightly build results.
* **Chat**: Zephyr's Slack workspace is https://zephyrproject.slack.com. Use
this `Slack Invite`_ to register.
* **Contributing**: see the `Contribution Guide`_
* **Wiki**: `Zephyr GitHub wiki`_
* **Issues**: https://github.com/zephyrproject-rtos/zephyr/issues
* **Security Issues**: Email vulnerabilities@zephyrproject.org to report
security issues; also see our `Security`_ documentation. Security issues are
tracked separately at https://zephyrprojectsec.atlassian.net.
* **Zephyr Project Website**: https://zephyrproject.org
.. _Slack Invite: https://tinyurl.com/y5glwylp
.. _supported boards: http://docs.zephyrproject.org/latest/boards/index.html
.. _Zephyr Documentation: http://docs.zephyrproject.org
.. _Introduction to Zephyr: http://docs.zephyrproject.org/latest/introduction/index.html
.. _Getting Started Guide: http://docs.zephyrproject.org/latest/getting_started/index.html
.. _Contribution Guide: http://docs.zephyrproject.org/latest/contribute/index.html
.. _Zephyr GitHub wiki: https://github.com/zephyrproject-rtos/zephyr/wiki
.. _Zephyr Development mailing list: https://lists.zephyrproject.org/g/devel
.. _Zephyr mailing list subgroups: https://lists.zephyrproject.org/g/main/subgroups
.. _Sample and Demo Code Examples: http://docs.zephyrproject.org/latest/samples/index.html
.. _Security: http://docs.zephyrproject.org/latest/security/index.html
.. _Asking for Help Tips: https://docs.zephyrproject.org/latest/guides/getting-help.html