From 1b8a1ebd072600389b9feef5d631ccf397c94767 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Tue, 17 Nov 2020 10:24:16 -0800 Subject: [PATCH] deprecate epicsThreadExitMain() --- modules/libcom/src/osi/epicsThread.h | 7 ++++++- modules/libcom/src/osi/os/RTEMS/osdThread.c | 2 ++ modules/libcom/src/osi/os/WIN32/osdThread.c | 3 ++- modules/libcom/src/osi/os/posix/osdThread.c | 4 ++++ modules/libcom/src/osi/os/vxWorks/osdThread.c | 3 ++- 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/modules/libcom/src/osi/epicsThread.h b/modules/libcom/src/osi/epicsThread.h index f294c1d75..a9ad476b3 100644 --- a/modules/libcom/src/osi/epicsThread.h +++ b/modules/libcom/src/osi/epicsThread.h @@ -59,6 +59,7 @@ #include #include "libComAPI.h" +#include "compilerDependencies.h" #ifdef __cplusplus extern "C" { @@ -142,8 +143,12 @@ LIBCOM_API void epicsThreadRealtimeLock(void); * call this routine. This should be the last call in main, except the * final return. On most systems epicsThreadExitMain never returns.This * must only be called by the main thread. + * + * @deprecated Deprecated for lack of use. Please report any usage. + * Recommended replacement is loop + epicsThreadSleep(), + * epicsEventMustWait(), or similar. **/ -LIBCOM_API void epicsStdCall epicsThreadExitMain(void); +LIBCOM_API void epicsStdCall epicsThreadExitMain(void) EPICS_DEPRECATED; /** For use with epicsThreadCreateOpt() */ typedef struct epicsThreadOpts { diff --git a/modules/libcom/src/osi/os/RTEMS/osdThread.c b/modules/libcom/src/osi/os/RTEMS/osdThread.c index dd65692c6..71a532e62 100644 --- a/modules/libcom/src/osi/os/RTEMS/osdThread.c +++ b/modules/libcom/src/osi/os/RTEMS/osdThread.c @@ -219,6 +219,8 @@ threadWrapper (rtems_task_argument arg) */ void epicsThreadExitMain (void) { + cantProceed("epicsThreadExitMain() has been deprecated for lack of usage." + " Please report if you see this message."); } static rtems_status_code diff --git a/modules/libcom/src/osi/os/WIN32/osdThread.c b/modules/libcom/src/osi/os/WIN32/osdThread.c index 462c03f8f..fa3791682 100644 --- a/modules/libcom/src/osi/os/WIN32/osdThread.c +++ b/modules/libcom/src/osi/os/WIN32/osdThread.c @@ -260,7 +260,8 @@ static void epicsParmCleanupWIN32 ( win32ThreadParam * pParm ) */ LIBCOM_API void epicsStdCall epicsThreadExitMain ( void ) { - _endthread (); + cantProceed("epicsThreadExitMain() has been deprecated for lack of usage." + " Please report if you see this message."); } /* diff --git a/modules/libcom/src/osi/os/posix/osdThread.c b/modules/libcom/src/osi/os/posix/osdThread.c index 0eb5f5fd2..4c8f0edea 100644 --- a/modules/libcom/src/osi/os/posix/osdThread.c +++ b/modules/libcom/src/osi/os/posix/osdThread.c @@ -687,6 +687,10 @@ LIBCOM_API void epicsStdCall epicsThreadExitMain(void) epicsThreadOSD *pthreadInfo; epicsThreadInit(); + + cantProceed("epicsThreadExitMain() has been deprecated for lack of usage." + " Please report if you see this message."); + pthreadInfo = (epicsThreadOSD *)pthread_getspecific(getpthreadInfo); if(pthreadInfo==NULL) pthreadInfo = createImplicit(); diff --git a/modules/libcom/src/osi/os/vxWorks/osdThread.c b/modules/libcom/src/osi/os/vxWorks/osdThread.c index 56a8183e8..d0e087108 100644 --- a/modules/libcom/src/osi/os/vxWorks/osdThread.c +++ b/modules/libcom/src/osi/os/vxWorks/osdThread.c @@ -353,7 +353,8 @@ void epicsThreadResume(epicsThreadId id) void epicsThreadExitMain(void) { - errlogPrintf("epicsThreadExitMain was called for vxWorks. Why?\n"); + cantProceed("epicsThreadExitMain() has been deprecated for lack of usage." + " Please report if you see this message."); } unsigned int epicsThreadGetPriority(epicsThreadId id)