dmxsigio.c File Reference
#include "inputstr.h"
#include "dmxinputinit.h"
#include "dmxsigio.h"
#include "dmxevents.h"
#include <signal.h>
#include <unistd.h>
#include <fcntl.h>

Defines

#define O_ASYNC   0
#define O_NONBLOCK   FNONBLK

Functions

static void dmxSigioHandler (int sig)
void dmxSigioBlock (void)
void dmxSigioUnblock (void)
static void dmxSigioHook (void)
static void dmxSigioUnhook (void)
static void dmxSigioAdd (DMXInputInfo *dmxInput)
static void dmxSigioRemove (DMXInputInfo *dmxInput)
void dmxSigioEnableInput (void)
void dmxSigioDisableInput (void)
void dmxSigioRegister (DMXInputInfo *dmxInput, int fd)
void dmxSigioUnregister (DMXInputInfo *dmxInput)

Variables

static int dmxFdCount = 0
static Bool dmxInputEnabled = TRUE

Detailed Description

Provides an interface for handling SIGIO signals for input devices.


Define Documentation

#define O_ASYNC   0

Referenced by dmxSigioAdd(), and dmxSigioRemove().

#define O_NONBLOCK   FNONBLK

Function Documentation

void dmxSigioBlock ( void  )

Block SIGIO handling.

Referenced by dmxCoreMotion(), dmxExtMotion(), and dmxTranslateAndEnqueueExtEvent().

void dmxSigioDisableInput ( void  )

Disable SIGIO handling. This removes the hanlder from the OS.

References dmxInputEnabled, dmxInputs, dmxNumInputs, and dmxSigioRemove().

Referenced by dmxWakeupHandler().

void dmxSigioEnableInput ( void  )

Enable SIGIO handling. This instantiates the handler with the OS.

References dmxInputEnabled, dmxInputs, dmxNumInputs, and dmxSigioAdd().

Referenced by dmxSwitchReturn().

static void dmxSigioHook ( void  ) [static]

References dmxSigioHandler().

Referenced by dmxSigioAdd().

void dmxSigioRegister ( DMXInputInfo dmxInput,
int  fd 
)

Make a note that the input device described in dmxInput will be using the file descriptor fd for SIGIO signals. Calls AddEnabledDevice ifi SIGIO handling has been enabled with dmxSigioEnableInput().

References DMX_MAX_SIGIO_FDS, DMX_USESIGIO, dmxFatal, dmxInputEnabled, dmxLog(), dmxSigioAdd(), _DMXInputInfo::sigioFd, _DMXInputInfo::sigioFdCount, and _DMXInputInfo::sigioState.

Referenced by dmxDeviceOnOff().

void dmxSigioUnblock ( void  )

Unblock SIGIO handling.

Referenced by dmxCoreMotion(), dmxExtMotion(), and dmxTranslateAndEnqueueExtEvent().

static void dmxSigioUnhook ( void  ) [static]

Referenced by dmxSigioRemove().

void dmxSigioUnregister ( DMXInputInfo dmxInput)

Remove the notes that dmxInput is using any file descriptors for SIGIO signals. Calls RemoveEnabledDevice.

References DMX_NOSIGIO, dmxSigioRemove(), _DMXInputInfo::sigioFdCount, and _DMXInputInfo::sigioState.

Referenced by dmxDeviceOnOff().


Variable Documentation

int dmxFdCount = 0 [static]

Referenced by dmxSigioAdd(), and dmxSigioRemove().