#include <syslog.h>
#include <rtems.h>
#include <rtems/error.h>
#include "errlog.h"
#include "epicsInterrupt.h"
#include "epicsThread.h"
Go to the source code of this file.
#define INTERRUPT_CONTEXT_MESSAGE_QUEUE_COUNT 100 |
void epicsInterruptContextMessage |
( |
const char * |
message | ) |
|
Definition at line 55 of file osdInterrupt.c.
57 rtems_message_queue_send (interruptContextMessageQueue, &message,
sizeof message);
int epicsInterruptIsInterruptContext |
( |
void |
| ) |
|
Definition at line 43 of file osdInterrupt.c.
45 return rtems_interrupt_is_in_progress ();
int epicsInterruptLock |
( |
void |
| ) |
|
Definition at line 26 of file osdInterrupt.c.
28 rtems_interrupt_level level;
30 rtems_interrupt_disable (level);
void epicsInterruptUnlock |
( |
int |
key | ) |
|
Definition at line 35 of file osdInterrupt.c.
37 rtems_interrupt_level level = key;
39 rtems_interrupt_enable (level);
void InterruptContextMessageDaemon |
( |
void * |
unused | ) |
|
Definition at line 64 of file osdInterrupt.c.
70 sc = rtems_message_queue_create (rtems_build_name (
'I',
'C',
'M',
'Q'),
73 RTEMS_FIFO | RTEMS_LOCAL,
74 &interruptContextMessageQueue);
75 if (sc != RTEMS_SUCCESSFUL) {
76 errlogPrintf (
"Can't create interrupt context message queue: %s\n", rtems_status_text (sc));
80 sc = rtems_message_queue_receive (interruptContextMessageQueue,
85 if (sc != RTEMS_SUCCESSFUL) {
86 errlogPrintf (
"Can't receive message from interrupt context: %s\n", rtems_status_text (sc));
89 if (size ==
sizeof message)
90 syslog (LOG_ERR,
"%s", message);
92 errlogPrintf (
"Received %u-byte message from interrupt context", (
unsigned int)size);
LIBCOM_API void epicsStdCall epicsThreadSuspendSelf(void)
int errlogPrintf(const char *pFormat,...)
#define INTERRUPT_CONTEXT_MESSAGE_QUEUE_COUNT