UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 64921

Xilkernel - Changing the scheduling to SCHED_PRIO exposes a race condition/corruption

Description

When using the Xilkernel, changing the scheduling to SCHED_PRIO might expose a race condition/corruption.

Solution

If you select priority scheduling and have multiple threads with the same priority, then scheduling between the same priority threads should be round robin time-sliced.

This means that if we have 2 threads with priority 2 and the Xilkernel is set up with the priority scheduling option, we expect each thread to execute for 1 tick each in a round robin manner.

The cause of the issue was that when a thread was releasing semaphore that the other thread with the same priority was waiting for, the other thread was getting activated. That is against the scheduling policy.


To work around this issue, Use the patched version of the Xilkernel attached to this Answer Record.

To use this version, download the Xilkernel locally into a "bsp" folder. In SDK, go to Xilinx Tools -> Repositories -> New.


Browse to the folder containing the bsp folder, as there must be two levels of hierarchy to the Xilkernel.

For example: folder/bsp/xilkernel_v6_2


Attachments

Associated Attachments

Name File Size File Type
ar64921.zip 679 KB ZIP
AR# 64921
Date Created 07/06/2015
Last Updated 12/03/2015
Status Active
Type General Article
Tools
  • Vivado Design Suite - 2015.1
  • Vivado Design Suite - 2014.4.1