c++vxworksrtoswind-river-workbench

Can't use sysAuxClkRateSet( int ticksPerSecond ) in VxWorks RTP application


I am able to use the aux clock API's from Kernel Image project, but when tried to use the same API's for example sysAuxClkRateSet( int ticksPerSecond ) in the RTP Project, i am getting undefined reference to the sysAuxClkRateSet error. I'm working on Vxworks 7.0. I added the API to the custom system call list and tried it, the compiler errors are getting resolved, but when the control hits that API, it is failing to work and the board is rebooting. I'm using TI Sitara a9, 4377 board. Any inputs on how to get it worked would really help. Thanks in advance !!


Solution

  • sysAuxClkRateSet is a Kernel Space API, and is not present in the user mode header files.

    In order to use this functionality from an RTP you can either use a mechanism such as a msgQ, to send commands from an RTP to a kernel space task, or write a custom system call to expose this function.

    For this particular use case, you would probably want to create a static system call, which means you can call sysAuxClkRateSet directly from the RTP. This would require modifications to, and rebuild of, the VxWorks libraries, so you will probably want to base your kernel on a VSB project rather than the default libraries - although if you are using VxWorks 7 you will already have a VSB.