From b0a654b4c1accb90bba0744b70e763cf84c787fb Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Thu, 7 Oct 2004 13:21:40 +0000 Subject: [PATCH] epicsMaxThreads is new --- src/libCom/test/Makefile | 4 ++ src/libCom/test/epicsMaxThreads.c | 53 +++++++++++++++++++++++++ src/libCom/test/epicsMaxThreadsMain.cpp | 29 ++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 src/libCom/test/epicsMaxThreads.c create mode 100644 src/libCom/test/epicsMaxThreadsMain.cpp diff --git a/src/libCom/test/Makefile b/src/libCom/test/Makefile index ee686a682..a52b61847 100644 --- a/src/libCom/test/Makefile +++ b/src/libCom/test/Makefile @@ -47,6 +47,10 @@ epicsThreadPrivateTestHost_SRCS += epicsThreadPrivateTestMain.cpp epicsThreadPri PROD_HOST += epicsThreadPrivateTestHost OBJS_IOC_vxWorks += epicsThreadPrivateTest +epicsMaxThreadsHost_SRCS += epicsMaxThreadsMain.cpp epicsMaxThreads.c +PROD_HOST += epicsMaxThreadsHost +OBJS_IOC_vxWorks += epicsMaxThreads + epicsOkToBlockTestHost_SRCS += epicsOkToBlockTestMain.cpp epicsOkToBlockTest.cpp PROD_HOST += epicsOkToBlockTestHost OBJS_IOC_vxWorks += epicsOkToBlockTest diff --git a/src/libCom/test/epicsMaxThreads.c b/src/libCom/test/epicsMaxThreads.c new file mode 100644 index 000000000..08569d2d1 --- /dev/null +++ b/src/libCom/test/epicsMaxThreads.c @@ -0,0 +1,53 @@ +/*************************************************************************\ +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* National Laboratory. +* Copyright (c) 2002 The Regents of the University of California, as +* Operator of Los Alamos National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ +/* epicsMaxThreads.cpp */ + +/* Author: Marty Kraimer Date: 09JUL2004*/ + +#include +#include +#include +#include +#include +#include + +#include "epicsThread.h" +#include "epicsEvent.h" +#include "epicsExit.h" +#include "errlog.h" + +static epicsEventId started; + +static void thread(void *arg) +{ + epicsEventSignal(started); + epicsThreadSuspendSelf(); +} + +void epicsMaxThreads(void) +{ + unsigned int stackSize; + epicsThreadId id; + int i = 0; + + stackSize = epicsThreadGetStackSize(epicsThreadStackSmall); + errlogPrintf("stackSize %d\n",stackSize); + errlogFlush(); + started = epicsEventMustCreate(epicsEventEmpty); + + while(1) { + id = epicsThreadCreate("thread",50,stackSize,thread,0); + if(!id) break; + i++; + epicsEventMustWait(started); + } + fprintf(stdout,"number threads %d\n",i); + epicsExitCallAtExits(); +} diff --git a/src/libCom/test/epicsMaxThreadsMain.cpp b/src/libCom/test/epicsMaxThreadsMain.cpp new file mode 100644 index 000000000..85c06d43b --- /dev/null +++ b/src/libCom/test/epicsMaxThreadsMain.cpp @@ -0,0 +1,29 @@ +/*************************************************************************\ +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* National Laboratory. +* Copyright (c) 2002 The Regents of the University of California, as +* Operator of Los Alamos National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ +/* epicsMaxThreadsMain.cpp */ + +/* Author: Marty Kraimer Date: 26JAN2000 */ + +#include +#include +#include +#include +#include +#include + +extern "C" void epicsMaxThreads(void); + + +int main(int argc,char *argv[]) +{ + epicsMaxThreads(); + printf("main terminating\n"); + return(0); +}