This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SysLink Linux kernel API



Hello,

In the release notes for at least two versions of Syslink (2.10.0.12 and 2.10.03.20) the following line is present in the "Known Issues" section (see http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/2_10_03_20/exports/syslink_2_10_03_20/syslink_2_10_03_20_ReleaseNotes.html#Known_Issues):

  • Kernel mode example apps are deprecated and not supported in this release. They are planned to be removed in a future release.

Why are kernel mode examples deprecated? Does this mean using the kernel mode API is discouraged? We are planning to write a Linux driver which will use Syslink's kernel API and would like to know if we may depend on it in the future. Thank you.

Kind Regards
--
Delio Brignoli
AudioScience Inc.

  • Yes, using the APIs from kernel mode is discouraged, unsupported, and may be removed in the future.  To reinforce that, we added the comment to the release notes (kudos for reading them!) and will be removing the kernel examples in a coming release.

    All that said, if you want to use those kernel APIs on your own, you can(!), just understand they're not tested/supported in that use case.  In a coming release, we may even be removing those fxn symbols as exports (so they're invisible to other kernel drivers).

    What device are you on, and what feature (Notify?  MessageQ?) in kernel mode are you looking for?  There may be other ways to achieve what you need to do.

    Chris

  • Hello Chris,

    Thank you for answering! We are using DM814x and we are looking at ways to move time critical tasks to a slave CPU. The task involves handling peripheral I/O, filter and process a subset of the data on the slave and exchange a subset of the data with the kernel directly rather than having to go through an user mode application. We have to move data (lots of it) not just notify the host of some event. I was thinking of using MessageQ to pass buffer descriptors (metadata + pointer to the data) and Notify. Obviously we cannot base our design on an API that is going away really-soon-now, but it's very likely we'll need to avoid the round trip through user-mode.

    Is there a subset of the kernel API that is "here to stay"? If there is an alternative approach I am happy to consider it, however it seems to me that SysLink should be exactly what we are looking for: interprocessor IPC supported by TI.

    Thanks!
    --
    Delio Brignoli
    AudioScience Inc

  • I don't have a full answer for you, but in the interest of not being a bottleneck, I'll post a reply anyway.  :)

    This article indirectly has some details about the "lower-case n" notify API that you could use:

    http://processors.wiki.ti.com/index.php/SysLink_Notify

    It's very similar to the 'upper-case N' Notify APIs in SysLink user mode.  The 'lower-case n' notify APIs are provided with the Linux PSP and will continue to be supported.  Linux kernel mode drivers can use 'notify' APIs to speak to other cores running BIOS - and those BIOS cores can use 'Notify' APIs on the BIOS side to chat back.

    Googling for "USE_SYSLINK_NOTIFY" will turn up other related articles.

    If you look at the SysLink implementation of Notify (packages/ti/syslink/ipc/hlos/knl/Notify.c), you'll see pre-processor-conditional calls to the lower-case notify scattered throughout - that might help demonstrate usage of that lower-case notify API.

    Might that work for you?

    Chris

  • Hello Chris,

    I gave a quick look to the 'lower-case n' notify API and I believe it could work for us. The VPSS driver (drivers/video/ti81xx/vpss/) looks like the best place to get an idea on how to use it.

    Thank you!
    --
    Delio Brignoli
    AudioScience Inc