add common routine for setting a1/a2 for start/len of mmap.
[trinity.git] / include / shm.h
blobd84b2e4f8e903ff989929515bf9d18a3ed68e74b
1 #ifndef _SHM_H
2 #define _SHM_H 1
4 #include <sys/time.h>
5 #include <sys/types.h>
7 #include <stdio.h>
9 #include "constants.h"
10 #include "exit.h"
11 #include "net.h"
12 #include "types.h"
14 void * alloc_shared(unsigned int size);
15 int create_shm(void);
16 void setup_shm_postargs(void);
18 struct shm_s {
19 unsigned long total_syscalls_done;
20 unsigned long successes;
21 unsigned long failures;
22 unsigned long previous_count;
23 unsigned long child_syscall_count[MAX_NR_CHILDREN];
25 unsigned long regenerate;
26 unsigned int seed;
27 unsigned int seeds[MAX_NR_CHILDREN];
28 unsigned int reseed_counter;
30 //Indices of syscall in syscall table that are active. All indices shifted by +1. Empty index equals to 0.
31 int active_syscalls32[MAX_NR_SYSCALL];
32 int active_syscalls64[MAX_NR_SYSCALL];
33 int active_syscalls[MAX_NR_SYSCALL];
34 unsigned int nr_active_syscalls;
35 unsigned int nr_active_32bit_syscalls;
36 unsigned int nr_active_64bit_syscalls;
38 pid_t mainpid;
39 pid_t pids[MAX_NR_CHILDREN];
40 unsigned char child_type[MAX_NR_CHILDREN];
42 pid_t last_reaped;
43 bool spawn_no_more;
44 char kill_count[MAX_NR_CHILDREN];
46 unsigned int max_children;
47 unsigned int running_childs;
48 struct timeval tv[MAX_NR_CHILDREN];
50 FILE *logfiles[MAX_NR_CHILDREN];
52 int pipe_fds[MAX_PIPE_FDS*2];
53 int file_fds[NR_FILE_FDS]; /* All children inherit these */
54 int perf_fds[MAX_PERF_FDS];
55 int epoll_fds[MAX_EPOLL_FDS];
56 int eventfd_fds[MAX_EPOLL_FDS];
58 struct socketinfo sockets[NR_SOCKET_FDS];
60 /* state for the syscall currently in progress. */
61 unsigned int previous_syscallno[MAX_NR_CHILDREN];
62 unsigned long previous_a1[MAX_NR_CHILDREN];
63 unsigned long previous_a2[MAX_NR_CHILDREN];
64 unsigned long previous_a3[MAX_NR_CHILDREN];
65 unsigned long previous_a4[MAX_NR_CHILDREN];
66 unsigned long previous_a5[MAX_NR_CHILDREN];
67 unsigned long previous_a6[MAX_NR_CHILDREN];
69 unsigned int syscallno[MAX_NR_CHILDREN];
70 unsigned long a1[MAX_NR_CHILDREN];
71 unsigned long a2[MAX_NR_CHILDREN];
72 unsigned long a3[MAX_NR_CHILDREN];
73 unsigned long a4[MAX_NR_CHILDREN];
74 unsigned long a5[MAX_NR_CHILDREN];
75 unsigned long a6[MAX_NR_CHILDREN];
77 unsigned long retval[MAX_NR_CHILDREN];
79 unsigned long scratch[MAX_NR_CHILDREN];
81 int current_fd;
82 unsigned int fd_lifetime;
84 /* per-child mmaps */
85 struct map *mappings[MAX_NR_CHILDREN];
86 unsigned int num_mappings[MAX_NR_CHILDREN];
88 /* various flags. */
89 bool do32bit[MAX_NR_CHILDREN];
90 bool do_make_it_fail;
91 bool need_reseed;
92 enum exit_reasons exit_reason;
94 /* locks */
95 volatile unsigned char regenerating;
96 volatile unsigned char reaper_lock;
98 bool ready;
100 extern struct shm_s *shm;
102 #define SHM_OK 0
103 #define SHM_CORRUPT 1
105 #endif /* _SHM_H */