00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef WORKER_H
00023 #define WORKER_H
00024
00025 #include <seap.h>
00026 #include <sexp.h>
00027 #include <pthread.h>
00028 #include "probe.h"
00029
00030 #ifndef PROBE_WORKER_DEFAULT_MAX_THREADS
00031 # define PROBE_WORKER_DEFAULT_MAX_THREADS 64
00032 #endif
00033
00034 #ifndef PROBE_WORKER_DEFAULT_MAX_CHDEPTH
00035 # define PROBE_WORKER_DEFAULT_MAX_CHDEPTH 8
00036 #endif
00037
00038 typedef struct {
00039 SEAP_msgid_t sid;
00040 pthread_t tid;
00041 SEXP_t * (*msg_handler)(probe_t *, SEAP_msg_t *, int *);
00042 SEAP_msg_t *msg;
00043 } probe_worker_t;
00044
00045 typedef struct {
00046 probe_t *probe;
00047 probe_worker_t *pth;
00048 } probe_pwpair_t;
00049
00050 probe_worker_t *probe_worker_new(void);
00051 void *probe_worker_runfn(void *arg);
00052 SEXP_t *probe_worker(probe_t *probe, SEAP_msg_t *msg_in, int *ret);
00053
00054 #endif