- Timestamp:
- 05/16/10 21:34:48 (12 years ago)
- Branches:
- 4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
- Children:
- c3f597e
- Parents:
- 9da93dc
- Location:
- lib
- Files:
-
- 3 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/Makefile.am
rf1ab057 rd48008d 3 3 4 4 AM_CFLAGS=@LIBCFLAGS@ 5 AM_CXXFLAGS=@LIBCXXFLAGS@ 5 6 6 7 extra_DIST = format_template.c … … 46 47 EXTRA_DIST=format_dag24.c format_dag25.c 47 48 49 if HAVE_LLVM 50 BPFJITSOURCE=bpf-jit/bpf-jit.cc 51 else 52 BPFJITSOURCE= 53 endif 54 55 48 56 libtrace_la_SOURCES = trace.c common.h \ 49 57 format_erf.c format_pcap.c format_legacy.c \ … … 56 64 protocols_transport.c protocols.h \ 57 65 $(DAGSOURCE) format_erf.h \ 66 $(BPFJITSOURCE) \ 58 67 $(LIBTRACEIO_ZLIB) $(LIBTRACEIO_BZLIB) $(LIBTRACEIO_LZO) \ 59 68 ior-peek.c ior-stdio.c ior-thread.c \ … … 74 83 dagopts.c: 75 84 cp @DAG_TOOLS_DIR@/dagopts.c . 85 86 if HAVE_LLVM 87 # Rules to build the llvm .cc file from a C description of each opcode. 88 bpf-jit/bpf-opcodes.llvm.bc: bpf-jit/bpf-opcodes.c 89 `$(LLVM_CONFIG) --bindir`/llvm-gcc -std=c99 -c -O0 -emit-llvm $< -o $@ 90 91 bpf-jit/bpf-opcodes.llvm.cc: bpf-jit/bpf-opcodes.llvm.bc 92 `$(LLVM_CONFIG) --bindir`/llc -f -march=cpp -cppgen=module $< -o $@ 93 94 bpf-jit/bpf-jit.cc: bpf-jit/bpf-opcodes.llvm.cc 95 96 EXTRA_DIST+=bpf-jit/bpf-opcodes.c 97 BUILT_SOURCES=bpf-jit/bpf-opcodes.llvm.cc 98 endif 99 CLEANFILES=bpf-jit/bpf-opcodes.llvm.cc bpf-jit/bpf-opcodes.llvm.bc -
lib/trace.c
rf6e8d46 rd48008d 1103 1103 filter->filter.bf_len = bf_len; 1104 1104 filter->filterstring = NULL; 1105 filter->jitfilter = NULL; 1105 1106 /* "flag" indicates that the filter member is valid */ 1106 1107 filter->flag = 1; … … 1119 1120 malloc(sizeof(libtrace_filter_t)); 1120 1121 filter->filterstring = strdup(filterstring); 1122 filter->jitfilter = NULL; 1121 1123 filter->flag = 0; 1122 1124 return filter; … … 1133 1135 if (filter->flag) 1134 1136 pcap_freecode(&filter->filter); 1137 #ifdef HAVE_LLVM 1138 if (filter->jitfilter) 1139 destroy_program(filter->jitfilter); 1140 #endif 1135 1141 free(filter); 1136 1142 #else … … 1257 1263 } 1258 1264 1265 /* If we're jitting, we may need to JIT the BPF code now too */ 1266 #if HAVE_LLVM 1267 if (!filter->jitfilter) { 1268 filter->jitfilter = compile_program(filter->filter.bf_insns, filter->filter.bf_len); 1269 } 1270 #endif 1271 1259 1272 assert(filter->flag); 1273 /* Now execute the filter */ 1274 #if HAVE_LLVM 1275 ret=filter->jitfilter->bpf_run((unsigned char *)linkptr, clen); 1276 #else 1260 1277 ret=bpf_filter(filter->filter.bf_insns,(u_char*)linkptr,(unsigned int)clen,(unsigned int)clen); 1278 #endif 1261 1279 1262 1280 /* If we copied the packet earlier, make sure that we free it */
Note: See TracChangeset
for help on using the changeset viewer.