Download | Plain Text | Line Numbers


/*
 * Name:         global
 * Author:       Manuel Mausz, 0728348
 * Description:  Shared definitions and functions
 * Created:      24.04.2009
 */
 
#ifndef _GLOBAL_H
#define _GLOBAL_H 1
 
/*
 * IPC/shared memory stuff
 */
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sem182.h>
 
#define SHM_KEY ((key_t) 49583L)  /* shared memory key */
#define SHM_PERMS 0600            /* permissions */
 
/* shared memory structure */
#define MAX_LEN 512 /* maximal log message length */
typedef struct
{
  char msg[MAX_LEN];
} shm_t;
 
/*
 * Semaphore stuff
 */
#define SEM_KEY1 ((key_t) 49584L) /* semaphore key 1 */
#define SEM_KEY2 ((key_t) 49585L) /* semaphore key 2 */
#define SEM_PERMS 0600
 
/*
 * Signal stuff
 */
#include <signal.h>
 
/* install signal handler macro */
#define INSTALL_SIGNAL(signum, act, oldact) \
  sigaction(signum, NULL, &oldact); \
  if (oldact.sa_handler != SIG_IGN) \
    sigaction(signum, &act, NULL);
 
/*
 * global.c stuff
 */
#include <stdarg.h>
 
/* function declarations */
void vprintferr(const char *fmt, va_list ap);
void printferr(const char *fmt, ...);
void bailout(const char *fmt, ...);
 
/* global variable definitions */
/* libc manual: Handlers that return normally must modify some global variable
 * in order to have any effect. Typically, the variable is one that is examined
 * periodically by the program during normal operation. Its data type should be
 * sig_atomic_t for reasons described in Atomic Data Access.
 */
extern volatile sig_atomic_t error;  /* error flag */
extern char *me;                     /* name of myself (argv[0]) */
 
#endif /* global.h */