vxWorks 6.8 deprecates the use of taskVarLib

Bug #608956 reported by Andrew Johnson
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
EPICS Base
Triaged
Wishlist
Andrew Johnson

Bug Description

The release notes say the taskVarLib facilities will be removed in a future release, and they don't work on SMP systems anyway.

The __thread storage class replaces taskVarLib. It's not clear if any vxWorks releases before 6.8 support __thread variables though.

Someone will have to modify src/libCom/osi/os/vxWorks/osdThread.c to comply with this.

Tags: vxworks-smp
Changed in epics-base:
assignee: nobody → Andrew Johnson (anj)
status: New → Triaged
Revision history for this message
mdavidsaver (mdavidsaver) wrote :

Have the past 9 years yielded any clarify on support for '__thread'? I believe vxworks is the only blocker to use of '__thread', aka. '__declspec(thread)' aka. 'thread_local'.

Revision history for this message
Andrew Johnson (anj) wrote :

I confirmed that support for __thread is only available for VxWorks 6.8 and above, and has to be configured into the VxWorks OS image (define INCLUDE_TLS for those that understand that). None of the APS OS images have this turned on but it's trivial to do, I would just need to build and publish a new set of OS images for my users.

The VxWorks taskVarLib is still available and supported, but only for UP targets. We don't support any VxWorks SMP targets yet though, and adding them would require changes somewhat similar to those that Heinz developed for RTEMS, thus any rewrite of the epicsThreadPrivate implementation should happen at the same time as that.

This bug isn't quite the right place to decide when we could start to use __thread though, fixing the bug requires __thread, but using __thread doesn't require that it be fixed.

Dirk was building EPICS 7.0.1 without PVA for VxWorks 6.2, but needed newer versions to build the PVA modules (see https://epics.anl.gov/core-talk/2017/msg00691.php for discussion). The EPICS 7.0 page on the APS website does say that VxWorks 6.8 is required, but my guess is that as long as we don't use __thread in the core IOC modules he might not object. We should ask him ...

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.