Go to file
Andy Ross eda4c027da misc/dlist: Swap insertion API for a faster one
The sys_dlist_insert_*() functions had a behavior where a NULL
argument for the insertion position to sys_dlist_insert_after/before()
was interpreted as "the end of the list".  We never used that
convention (except in one spot internal to dlist.h which was not
itself used anywhere), and of course already have an API for appending
and prepending to a list.

In practice this was a performance disaster.  The NULL check is
virtually never provable statically by the compiler, so that test and
branch is present always.  And worse, the check and call to another
function was pushing this beyond the complexity limit for gcc to
inline a function (at -Os optimization anyway), forcing us to use
function calls for what should be a ~8 instruction sequence.  The
upshot is that dlist insertions were 2-3x slower than they needed to
be.

Deprecate these older APIs and introduce a new sys_dlist_insert() call
which can be much better optimized.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2019-02-01 15:57:21 -05:00
.github/ISSUE_TEMPLATE templates: Update issue templates 2018-12-07 08:27:20 -05:00
.known-issues doc: add peripherals reference 2019-01-30 18:38:48 -05:00
arch arch: xtensa: dts: Move HAS_DTS to arch level 2019-02-01 12:45:29 -06:00
boards arch: xtensa: dts: Move HAS_DTS to arch level 2019-02-01 12:45:29 -06:00
cmake cmake: Run dts before kconfig 2019-02-01 10:16:06 -06:00
doc doc: Add docs about kconfigfunctions 2019-02-01 10:16:06 -06:00
drivers drivers: watchdog: remove deprecated apis 2019-02-01 10:37:49 -06:00
dts dts: Remove mcuboot.overlay 2019-02-01 10:16:06 -06:00
ext debug: CTF Tracing with POSIX backend 2019-02-01 08:56:02 -05:00
include misc/dlist: Swap insertion API for a faster one 2019-02-01 15:57:21 -05:00
kernel misc/dlist: Swap insertion API for a faster one 2019-02-01 15:57:21 -05:00
lib printk: move into lib/os 2019-01-22 07:45:22 -05:00
misc printk: move into lib/os 2019-01-22 07:45:22 -05:00
samples dts: Remove mcuboot.overlay 2019-02-01 10:16:06 -06:00
scripts dts: Move CONFIG_SRAM_* & CONFIG_FLASH_* back to Kconfig 2019-02-01 10:16:06 -06:00
soc soc: riscv32: openisa_rv32m1: Remove duplicated HAS_DTS 2019-02-01 12:44:21 -06:00
subsys power: Implement weak notification functions. 2019-02-01 15:08:33 +01:00
tests misc/dlist: Swap insertion API for a faster one 2019-02-01 15:57:21 -05:00
.checkpatch.conf
.clang-format clang-format: add support for clang-format 2018-11-19 09:31:44 -05:00
.codecov.yml
.gitattributes
.gitignore gitignore: ignore IDE files 2018-11-21 15:05:07 +01:00
.gitlint gitlint: do not start with subsys: 2018-11-28 09:22:01 -08:00
.mailmap mailmap: add entry for ruuddw 2018-07-05 09:57:23 -04:00
.shippable.yml ci: install v0.6 docker image 2019-01-29 10:20:38 -05:00
.uncrustify.cfg uncrustify: Add a rule to remove space inside function argument 2018-10-16 09:50:03 -04:00
CMakeLists.txt CMakeLists: Introduce extra post build commands 2019-01-30 21:30:49 -05:00
CODE_OF_CONDUCT.md coc: move to markdown format 2019-01-24 15:37:15 -05:00
CODEOWNERS CODEOWNERS: Add @pfalcon for POSIX-related things 2019-02-01 05:28:55 -06:00
CONTRIBUTING.rst doc: Fix a typo 2018-10-25 09:10:44 +01:00
Kconfig
Kconfig.zephyr dts: stop generating CONFIG_FLASH_LOAD_{OFFSET,SIZE} 2019-02-01 10:16:06 -06:00
LICENSE
Makefile doc: turbo mode for kconfig options 2019-01-23 16:26:19 -05:00
README.rst doc: fix link to contribution guide 2019-01-30 18:38:48 -05:00
VERSION release: Post-release patch level update 2018-09-10 22:42:12 -04:00
version.h.in
west.yml west: add west.yml 2019-01-29 10:15:01 +01:00
zephyr-env.cmd scripts: remove west from scripts/ 2019-01-29 10:15:01 +01:00
zephyr-env.sh shell: Piped output of cd to /dev/null when setting ZEPHYR_BASE. 2018-12-06 19:14:50 -05:00

.. 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>
   <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

Getting Started
***************

To start developing Zephyr applications refer to the `Getting Started Guide`_
in the `Zephyr Documentation`_ pages.
A brief introduction to Zephyr can be found in the  `Zephyr Introduction`_
page.

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.

* **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
  http://docs.zephyrproject.org.  Additional documentation is maintained in
  the `Zephyr GitHub wiki`_.

* **Cross-reference**: Source code cross-reference for the Zephyr
  kernel and samples code is available at
  https://elixir.bootlin.com/zephyr/latest/source.

* **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 Development mailing list`_ is perhaps the most convenient
  way to track developer discussions and to ask your own support questions to
  the Zephyr project community.  There are also specific `Zephyr mailing list
  subgroups`_ for announcements, builds, marketing, and Technical
  Steering Committee notes, for example.
  You can read through the message archives to follow
  past posts and discussions, a good thing to do to discover more about the
  Zephyr project.

* **Chatting**: You can chat online with the Zephyr project developer
  community and other users in two ways:

  * On `Slack`_: Zephyr has dedicated channels on Slack. To register, use the
    following `Slack Invite`_.

  * 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 (Note that all discussions have moved to Slack, although we still
    have many developers still available on the IRC channel).

.. _Slack Invite: https://tinyurl.com/yarkuemx
.. _Slack: https://zephyrproject.slack.com
.. _supported boards: http://docs.zephyrproject.org/latest/boards/boards.html
.. _Zephyr Documentation: http://docs.zephyrproject.org
.. _Zephyr Introduction: http://docs.zephyrproject.org/latest/introduction/introducing_zephyr.html
.. _Getting Started Guide: http://docs.zephyrproject.org/latest/getting_started/getting_started.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/samples.html
.. _Security Overview: http://docs.zephyrproject.org/latest/security/security-overview.html