Skip to content

Commit

Permalink
Merge Dirk's dynamicVxWorksVmeFunctionBinding branch into 7.0
Browse files Browse the repository at this point in the history
  • Loading branch information
anjohnson committed Oct 28, 2019
2 parents 171b330 + 251304e commit 220a27b
Showing 1 changed file with 31 additions and 17 deletions.
48 changes: 31 additions & 17 deletions modules/libcom/src/osi/os/vxWorks/devLibVMEOSD.c
Expand Up @@ -110,7 +110,21 @@ static long vxDevWriteProbe (unsigned wordSize, volatile void *ptr, const void *

static void *devA24Malloc(size_t size);
static void devA24Free(void *pBlock);
static long devInit(void) { return 0;}

/* We don't know which functions are implemented in the BSP */
static int (*sysIntEnableFunc)(int) = NULL;
static int (*sysIntDisableFunc)(int) = NULL;
static int (*sysIntEnablePICFunc)(int) = NULL;
static int (*sysIntDisablePICFunc)(int) = NULL;

static long devInit(void)
{
sysIntEnableFunc = epicsFindSymbol ("sysIntEnable");
sysIntDisableFunc = epicsFindSymbol ("sysIntDisable");
sysIntDisablePICFunc = epicsFindSymbol ("sysIntDisablePIC");
sysIntEnablePICFunc = epicsFindSymbol ("sysIntEnablePIC");
return 0;
}

static long vxDevConnectInterruptVME (
unsigned vectorNumber,
Expand Down Expand Up @@ -214,49 +228,49 @@ static long vxDevDisconnectInterruptVME (
*/
static long vxDevEnableInterruptLevelVME (unsigned level)
{
# if CPU_FAMILY != I80X86
if (sysIntEnableFunc) {
int s;
s = sysIntEnable (level);
s = sysIntEnableFunc (level);
if (s!=OK) {
return S_dev_intEnFail;
}
return 0;
# else
} else {
return S_dev_intEnFail;
# endif
}
}

/*
* enable ISA interrupt level
*/
long devEnableInterruptLevelISA (unsigned level)
{
# if CPU_FAMILY == I80X86
if (sysIntEnablePICFunc) {
int s;
s = sysIntEnablePIC (level);
s = sysIntEnablePICFunc (level);
if (s!=OK) {
return S_dev_intEnFail;
}
return 0;
# else
} else {
return S_dev_intEnFail;
# endif
}
}

/*
* disable ISA interrupt level
*/
long devDisableInterruptLevelISA (unsigned level)
{
# if CPU_FAMILY == I80X86
if (sysIntDisablePICFunc) {
int s;
s = sysIntDisablePIC (level);
s = sysIntDisablePICFunc (level);
if (s!=OK) {
return S_dev_intEnFail;
}
# else
} else {
return S_dev_intEnFail;
# endif
}

return 0;
}
Expand All @@ -266,16 +280,16 @@ long devDisableInterruptLevelISA (unsigned level)
*/
static long vxDevDisableInterruptLevelVME (unsigned level)
{
# if CPU_FAMILY != I80X86
if (sysIntDisableFunc) {
int s;
s = sysIntDisable (level);
s = sysIntDisableFunc (level);
if (s!=OK) {
return S_dev_intDissFail;
}
return 0;
# else
} else {
return S_dev_intEnFail;
# endif
}
}

/*
Expand Down

0 comments on commit 220a27b

Please sign in to comment.