Find a file
Andy Ross 85bc0a3fe6 kernel: Cleanup, unify _add_thread_to_ready_q() and _ready_thread()
The scheduler exposed two APIs to do the same thing:
_add_thread_to_ready_q() was a low level primitive that in most cases
was wrapped by _ready_thread(), which also (1) checks that the thread
_is_ready() or exits, (2) flags the thread as "started" to handle the
case of a thread running for the first time out of a waitq timeout,
and (3) signals a logger event.

As it turns out, all existing usage was already checking case #1.
Case #2 can be better handled in the timeout resume path instead of on
every call.  And case #3 was probably wrong to have been skipping
anyway (there were paths that could make a thread runnable without
logging).

Now _add_thread_to_ready_q() is an internal scheduler API, as it
probably always should have been.

This also moves some asserts from the inline _ready_thread() wrapper
to the underlying true function for code size reasons, otherwise the
extra use of the inline added by this patch blows past code size
limits on Quark D2000.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2018-03-18 16:58:12 -04:00
.known-issues doc: add missing API content 2017-12-01 08:58:56 -05:00
arch xtensa, kernel/sched: Move next switch_handle selection to the scheduler 2018-03-18 16:58:12 -04:00
boards qemu_x86: enable CONFIG_DEBUG_INFO 2018-03-16 14:12:15 -07:00
cmake cmake: Find out earlier whether ccache is to be used or not 2018-03-02 07:13:21 +01:00
doc doc: Add 'apt-get install python3-wheel' to linux installation docs 2018-03-17 19:05:17 +01:00
drivers drivers: usb: nrf5: Fix ISO IN/OUT SOF handling 2018-03-17 18:58:06 +01:00
dts arch: arm: soc: stm32f0: add STM32F070XB SOC 2018-03-16 09:18:08 -05:00
ext mbedtls: Replace COAP-specific max len setting with generic 2018-03-18 09:38:22 -07:00
include arch: add Kconfig for stack growth direction 2018-03-16 16:25:22 -07:00
kernel kernel: Cleanup, unify _add_thread_to_ready_q() and _ready_thread() 2018-03-18 16:58:12 -04:00
lib crc: make crc8_ccitt() match the other CRC functions. 2018-03-10 21:49:07 -05:00
misc subsys: stats - Statistics support 2018-02-20 22:07:52 +01:00
samples mbedtls: Replace COAP-specific max len setting with generic 2018-03-18 09:38:22 -07:00
scripts uncrustify: add space before name of typedef 2018-03-16 08:40:53 -07:00
subsys kernel_event_logger: Ignore events before subsystem init 2018-03-18 16:58:12 -04:00
tests tests: kernel: Test for essential thread set/clear 2018-03-18 09:35:29 -07:00
.checkpatch.conf checkpatch: define typedefsfile to deal with a few false positives 2017-10-09 10:43:05 -04:00
.codecov.yml ci: add .codecov.yml for codecov.io configuration 2018-01-03 13:12:03 -05:00
.gitattributes First commit 2015-04-10 16:44:37 -07:00
.gitignore sample: net: RPL mesh sample over QEMU 2018-02-20 14:47:14 +02:00
.gitlint gitlint: use custom rule for line length violations 2018-02-07 15:28:36 -05:00
.mailmap mailmap: added axy (for Anas Nashif) 2016-12-21 13:49:59 +00:00
.shippable.yml build: deprecate ZEPHYR_GCC_VARIANT 2018-02-13 07:44:45 -08:00
CMakeLists.txt cmake: Find out earlier whether ccache is to be used or not 2018-03-02 07:13:21 +01:00
CODEOWNERS CODEOWNERS: Update entries for nxp soc families, boards, and drivers 2018-03-06 10:52:29 -05:00
CONTRIBUTING.rst doc: add test coverage and proposal policy 2018-03-11 05:11:58 -04:00
Kconfig license: Replace Apache boilerplate with SPDX tag 2017-01-19 03:50:58 +00:00
Kconfig.zephyr kconfig: Don't source the non-existing zephyr/net/Kconfig 2018-03-13 06:27:07 -07:00
LICENSE add top level Apache 2.0 license file 2016-02-05 20:24:37 -05:00
Makefile build: add top-level Makefile for docs 2017-11-08 20:00:22 -05:00
README.rst doc: update links to new zephyrproject.org site 2017-11-03 19:31:14 -04:00
VERSION release: Post-release patch level update 2018-03-09 20:18:38 -05:00
version.h.in Introduce cmake-based rewrite of KBuild 2017-11-08 20:00:22 -05:00
zephyr-env.cmd build: win: Add a new zephyr-env.cmd file 2018-02-12 19:22:22 -05:00
zephyr-env.sh env: Remove usage of -P in grep 2017-07-15 11:12:35 -07:00

Zephyr Project
##############

.. raw:: html

   <a href="https://bestpractices.coreinfrastructure.org/projects/74"><img
   src="https://bestpractices.coreinfrastructure.org/projects/74/badge"></a>
   <img
   src="https://api.shippable.com/projects/58ffb2b8baa5e307002e1d79/badge?branch=master">


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

Community Support
*****************

The Zephyr Project Developer Community includes developers from member
organizations and the general community all joining in the development of
software within the Zephyr Project. Members contribute and discuss ideas,
submit bugs and bug fixes, and provide training. They also help those in need
through the community's forums such as mailing lists and IRC channels. Anyone
can join the developer community and the community is always willing to help
its members and the User Community to get the most out of the Zephyr Project.

Welcome to the Zephyr community!

Resources
*********

Here's a quick summary of resources to find your way around the Zephyr Project
support systems:

* **Zephyr Project Website**: The https://zephyrproject.org website is the
  central source of information about the Zephyr Project. On this site, you'll
  find background and current information about the project as well as all the
  relevant links to project material.  For a quick start, refer to the
  `Zephyr Introduction`_ and `Getting Started Guide`_.

* **Releases**: Source code for Zephyr kernel releases are available at
  https://zephyrproject.org/developers/#downloads. On this page,
  you'll find release information, and links to download or clone source
  code from our GitHub repository.  You'll also find links for the Zephyr
  SDK, a moderated collection of tools and libraries used to develop your
  applications.

* **Source Code in GitHub**: Zephyr Project source code is maintained on a
  public GitHub repository at https://github.com/zephyrproject-rtos/zephyr.
  You'll find information about getting access to the repository and how to
  contribute to the project in this `Contribution Guide`_ document.

* **Samples Code**: In addition to the kernel source code, there are also
  many documented `Sample and Demo Code Examples`_ that can help show you
  how to use Zephyr services and subsystems.

* **Documentation**: Extensive Project technical documentation is developed
  along with the Zephyr kernel itself, and can be found at
  https://zephyrproject.org/doc.  Additional documentation is maintained in
  the `Zephyr GitHub wiki`_.

* **Issue Reporting and Tracking**: Requirements and Issue tracking is done in
  the Github issues system: https://github.com/zephyrproject-rtos/zephyr/issues.
  You can browse through the reported issues and submit issues of your own.

* **Security-related Issue Reporting and Tracking**: For security-related
  inquiries or reporting suspected security-related bugs in the Zephyr OS,
  please send email to vulnerabilities@zephyrproject.org.  We will assess and
  fix flaws according to our security policy outlined in the Zephyr Project
  `Security Overview`_.

  Security related issue tracking is done in JIRA.  The location of this JIRA
  is https://zephyrprojectsec.atlassian.net.

* **Mailing List**: The `Zephyr Mailing Lists`_ are perhaps the most convenient
  way to track developer discussions and to ask your own support questions to
  the Zephyr project community.
  You can also read through message archives to follow
  past posts and discussions, a good thing to do to discover more about the
  Zephyr project.

* **IRC Chatting**: You can chat online with the Zephyr project developer
  community and other users in our IRC channel #zephyrproject on the
  freenode.net IRC server. You can use the http://webchat.freenode.net web
  client or use a client-side application such as pidgin.


.. _supported boards: https://www.zephyrproject.org/doc/boards/boards.html
.. _Zephyr Introduction: https://www.zephyrproject.org/doc/introduction/introducing_zephyr.html
.. _Getting Started Guide: https://www.zephyrproject.org/doc/getting_started/getting_started.html
.. _Contribution Guide: https://www.zephyrproject.org/doc/contribute/contribute_guidelines.html
.. _Zephyr GitHub wiki: https://github.com/zephyrproject-rtos/zephyr/wiki
.. _Zephyr Mailing Lists: https://lists.zephyrproject.org/
.. _Sample and Demo Code Examples: https://www.zephyrproject.org/doc/samples/samples.html
.. _Security Overview: https://www.zephyrproject.org/doc/security/security-overview.html