Files
epics-base/src/libCom/misc/cantProceed.c
2002-07-09 18:58:54 +00:00

52 lines
1.4 KiB
C

/* callocMustSucceed.c */
/* Author: Marty Kraimer Date: 04JAN99 */
/********************COPYRIGHT NOTIFICATION**********************************
This software was developed under a United States Government license
described on the COPYRIGHT_UniversityOfChicago file included as part
of this distribution.
****************************************************************************/
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include <stddef.h>
#include <stdio.h>
#define epicsExportSharedSymbols
#include "errlog.h"
#include "cantProceed.h"
#include "epicsThread.h"
epicsShareFunc void * epicsShareAPI callocMustSucceed(size_t count, size_t size, const char *errorMessage)
{
void *mem = calloc(count,size);
if(mem==0) {
errlogPrintf("%s callocMustSucceed failed count %d size %d\n",
errorMessage,count,size);
cantProceed(0);
}
return(mem);
}
epicsShareFunc void * epicsShareAPI mallocMustSucceed(size_t size, const char *errorMessage)
{
void *mem = malloc(size);
if(mem==0) {
errlogPrintf("%s mallocMustSucceed failed size %d\n",
errorMessage,size);
cantProceed(0);
}
return(mem);
}
epicsShareFunc void epicsShareAPI cantProceed(const char *errorMessage)
{
if(errorMessage) errlogPrintf("fatal error: %s\n",errorMessage);
else errlogPrintf("fatal error\n");
errlogFlush();
epicsThreadSleep(1.0);
epicsThreadSuspendSelf();
}