MiniballSort
Loading...
Searching...
No Matches
DataSpy.hh
Go to the documentation of this file.
1// function declarations for data spy library
2#ifndef __DATASPY_HH
3#define __DATASPY_HH
4
5#include <stdio.h>
6#include <stdlib.h>
7#include <string.h>
8
9#include <iostream>
10
11#if( defined SOLARIS || defined POSIX )
12
13#include <unistd.h>
14#include <sys/mman.h>
15#include <fcntl.h>
16
17#ifndef MACOSX
18# ifdef __cplusplus
19extern "C" {
20# endif
21 int shm_open(const char *, int, mode_t);
22# ifdef __cplusplus
23}
24# endif
25#endif
26#else
27# include <sys/types.h>
28# include <sys/shm.h>
29#endif
30
31// format of the data buffer area header
32#define MAX_BUFFERS 128 // unchangeable max because of header structure
33
34#define MAX_ID 8
35#define MAX_BUFFER_SIZE 64*1024
36
37#define SHMSIZE 0x8020000
38#define SHM_KEY 110205 /* base Key */
39
40
41typedef struct s_buffer_header {
42 int buffer_offset; // offset to first buffer
43 int buffer_number; // number of buffers
44 int buffer_length; // length of buffers
45 int buffer_next; // next buffer to be written
46 int buffer_max; // MAX_BUFFERS
50#ifdef WIN32
52 int padding1;
54 int padding2[MAX_BUFFERS];
55#else
56 unsigned long long buffer_currentage;
57 unsigned long long buffer_age[MAX_BUFFERS];
58#endif
61
62
63class DataSpy {
64
65public:
66
69
70 inline void Verbose( int opt ) { verbose = opt; }
71
72 int Open( int id );
73 int Close( int id );
74 int ReadWithSeq( int id, char *data, unsigned int length, int *seq );
75 int Read( int id, char *data, unsigned int length );
76
77#if( defined SOLARIS || defined POSIX )
78 int shmkey = SHM_KEY;
79 char object_name[16];
80#else
81 key_t shmkey = SHM_KEY;
82#endif
83
87
91 unsigned long long current_age[MAX_ID];
92
94
95};
96
97
98#endif
#define MAX_ID
Definition DataSpy.hh:34
#define SHM_KEY
Definition DataSpy.hh:38
struct s_buffer_header BUFFER_HEADER
#define MAX_BUFFERS
Definition DataSpy.hh:32
DataSpy()
Definition DataSpy.hh:67
BUFFER_HEADER * baseaddress
Definition DataSpy.hh:86
int number_of_buffers[MAX_ID]
Definition DataSpy.hh:88
int Open(int id)
Definition DataSpy.cc:13
int Read(int id, char *data, unsigned int length)
Definition DataSpy.cc:186
int ReadWithSeq(int id, char *data, unsigned int length, int *seq)
Definition DataSpy.cc:112
int buffers_offset[MAX_ID]
Definition DataSpy.hh:89
~DataSpy()
Definition DataSpy.hh:68
int Close(int id)
Definition DataSpy.cc:80
void * shm_bufferarea[MAX_ID]
Definition DataSpy.hh:84
int shmid[MAX_ID]
Definition DataSpy.hh:85
key_t shmkey
Definition DataSpy.hh:81
int next_index[MAX_ID]
Definition DataSpy.hh:90
int verbose
Definition DataSpy.hh:93
unsigned long long current_age[MAX_ID]
Definition DataSpy.hh:91
void Verbose(int opt)
Definition DataSpy.hh:70
int buffer_status[MAX_BUFFERS]
Definition DataSpy.hh:59
unsigned long long buffer_age[MAX_BUFFERS]
Definition DataSpy.hh:57
unsigned long long buffer_currentage
Definition DataSpy.hh:56