From owner-svn-soc-all@FreeBSD.ORG Wed Jul 23 16:27:03 2014 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 894E5561 for ; Wed, 23 Jul 2014 16:27:03 +0000 (UTC) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 759002F37 for ; Wed, 23 Jul 2014 16:27:03 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.8/8.14.8) with ESMTP id s6NGR3E6066385 for ; Wed, 23 Jul 2014 16:27:03 GMT (envelope-from dpl@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.8/8.14.8/Submit) id s6NGR3dY066247 for svn-soc-all@FreeBSD.org; Wed, 23 Jul 2014 16:27:03 GMT (envelope-from dpl@FreeBSD.org) Date: Wed, 23 Jul 2014 16:27:03 GMT Message-Id: <201407231627.s6NGR3dY066247@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to dpl@FreeBSD.org using -f From: dpl@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r271283 - soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Jul 2014 16:27:03 -0000 Author: dpl Date: Wed Jul 23 16:27:02 2014 New Revision: 271283 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271283 Log: Added more JIT compiling code. Modified: soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c Modified: soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c ============================================================================== --- soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c Wed Jul 23 16:26:29 2014 (r271282) +++ soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c Wed Jul 23 16:27:02 2014 (r271283) @@ -232,7 +232,13 @@ static inline void rule_reass(struct ip_fw *, int, struct ip_fw_chain *, int, struct ip *, struct ip_fw_args *, struct mbuf *, int *, int *, int *); /* JIT compiling API */ +typedef int (*funcptr)(); + void ipfw_jit_init(); +funcptr compile_code(); + +/* Pointer to the actual compiled code */ +int (*compiledfuncptr)() = 0; /* * Each rule belongs to one of 32 different sets (0..31). @@ -365,6 +371,12 @@ int ipfw_chk(struct ip_fw_args *args) { + if (compiledfuncptr == 0) + compiledfuncptr = compile_code(); + + if ((int)compiledfuncptr != 0) { + return compiledfuncptr(); + } /* * Local variables holding state while processing a packet: @@ -1323,6 +1335,8 @@ default_fw_tables = IPFW_TABLES_MAX; ipfw_log_bpf(1); /* init */ + + /* Start JIT */ ipfw_jit_init(); return (error);