static int process_decrement(void * vinstance, wsdata_t* input_data, ws_doutput_t * dout, int type_index) { proc_instance_t * proc = (proc_instance_t*)vinstance; proc->decrement_cnt++; event_data_t * edata = get_edata(proc, input_data, 1); if (!edata) { return 0; } if (edata->cnt > MIN_EVENT_CNT) { edata->cnt--; } stringhash5_unlock(proc->cntquery_table); return 0; }
int main(int argc, char *argv[]) { int e; int f=3333; static int g; static int h=4444; printf("program text (etext) %p\n", (void*)get_etext()); printf("initialized data (edata) %p\n", (void*)get_edata()); printf("uninitialized data (end) %p\n", (void*)get_end()); printf("&e=%p\n", &e); printf("&f=%p\n", &f); printf("&g=%p\n", &g); printf("&h=%p\n", &h); printf("This test is only for Apple Mac\n"); return 0; }
//// proc processing function assigned to a specific data type in proc_io_init //return 1 if output is available // return 0 if not output static int process_query(void * vinstance, wsdata_t* input_data, ws_doutput_t * dout, int type_index) { proc_instance_t * proc = (proc_instance_t*)vinstance; proc->query_cnt++; event_data_t * edata = get_edata(proc, input_data, 0); if (!edata) { return 0; } if (edata->cnt >= proc->min_cnt) { if (proc->add_count && (input_data->dtype == dtype_tuple)) { tuple_member_create_uint(input_data, (uint32_t)edata->cnt, proc->label_count); } ws_set_outdata(input_data, proc->outtype_meta[type_index], dout); proc->outcnt++; } stringhash5_unlock(proc->cntquery_table); return 0; }
static inline int readonly_data_p(const char *p) { return (void*)get_etext() < p && p < (void*)get_edata(); }