00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef PROBE_H
00023 #define PROBE_H
00024
00025 #include <sys/types.h>
00026 #include <unistd.h>
00027 #include <stdint.h>
00028 #include <stddef.h>
00029 #include <stdarg.h>
00030 #include <pthread.h>
00031 #include <seap.h>
00032 #include "ncache.h"
00033 #include "rcache.h"
00034 #include "icache.h"
00035 #include "probe-common.h"
00036
00037 typedef struct {
00038 int option;
00039 int (*handler)(int, va_list);
00040 } probe_option_t;
00041
00042 typedef struct {
00043 pthread_rwlock_t rwlock;
00044 uint32_t flags;
00045
00046 char *name;
00047 pid_t pid;
00048
00049 void *probe_arg;
00050 int probe_exitcode;
00051
00052 SEAP_CTX_t *SEAP_ctx;
00053 int sd;
00055 pthread_t th_input;
00056 pthread_t th_signal;
00057
00058 rbt_t *workers;
00059 uint32_t max_threads;
00060 uint32_t max_chdepth;
00061
00062 probe_rcache_t *rcache;
00063 probe_ncache_t *ncache;
00064 probe_icache_t *icache;
00066 probe_option_t *option;
00067 size_t optcnt;
00068 } probe_t;
00069
00070 struct probe_ctx {
00071 SEXP_t *probe_in;
00072 SEXP_t *probe_out;
00073 SEXP_t *filters;
00074 probe_icache_t *icache;
00075 };
00076
00077
00078
00079 #endif