[
https://issues.apache.org/jira/browse/MYNEWT-879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16297786#comment-16297786
]
ASF subversion and git services commented on MYNEWT-879:
--------------------------------------------------------
Commit 9b463f6c5ae4d09f921a0ea73e1642484f0b9aa6 in mynewt-core's branch
refs/heads/master from [~wes3]
[ https://gitbox.apache.org/repos/asf?p=mynewt-core.git;h=9b463f6 ]
MYNEWT-879: OS scheduler issues with TAILQ_INSERT_TAIL
kernel/os: fix errors in os_sched.c related to TAILQ_INSERT_TAIL
The code needs to check if the list is empty before calling TAILQ_INSERT_TAIL
as that macro does not set the first element in the list if the list is empty.
> os_sched_sleep and os_sched_insert could insert into sleep or run list
> incorrectly
> ----------------------------------------------------------------------------------
>
> Key: MYNEWT-879
> URL: https://issues.apache.org/jira/browse/MYNEWT-879
> Project: Mynewt
> Issue Type: Bug
> Security Level: Public(Viewable by anyone)
> Components: OS
> Affects Versions: v1_3_0_rel
> Reporter: William San Filippo
> Assignee: William San Filippo
>
> The queue.h macros TAILQ_INSERT_TAIL will not set the first element in the
> head of the list if the list is empty. This is by design. Unfortunately, the
> OS code does not check in two places when inserting into the sleep list
> (os_sched_sleep) or the run list (os_sched_insert) if the list is empty. The
> code has to specifically check if the list is empty, and if so, call
> TAILQ_INSERT_HEAD (rather than insert tail).
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)