From owner-svn-src-head@FreeBSD.ORG Fri Feb 7 13:47:34 2014 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 71115A5E; Fri, 7 Feb 2014 13:47:34 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5A9C81E06; Fri, 7 Feb 2014 13:47:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s17DlYmn037189; Fri, 7 Feb 2014 13:47:34 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s17DlXut037186; Fri, 7 Feb 2014 13:47:33 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201402071347.s17DlXut037186@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 7 Feb 2014 13:47:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r261590 - in head/sys: kern net X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Feb 2014 13:47:34 -0000 Author: glebius Date: Fri Feb 7 13:47:33 2014 New Revision: 261590 URL: http://svnweb.freebsd.org/changeset/base/261590 Log: Remove identical vnet sysctl handlers, and handle CTLFLAG_VNET in the sysctl_root(). Note: SYSCTL_VNET_* macros can be removed as well. All is needed to virtualize a sysctl oid is set CTLFLAG_VNET on it. But for now keep macros in place to avoid large code churn. Sponsored by: Nginx, Inc. Modified: head/sys/kern/kern_sysctl.c head/sys/net/vnet.c head/sys/net/vnet.h Modified: head/sys/kern/kern_sysctl.c ============================================================================== --- head/sys/kern/kern_sysctl.c Fri Feb 7 13:40:22 2014 (r261589) +++ head/sys/kern/kern_sysctl.c Fri Feb 7 13:47:33 2014 (r261590) @@ -1491,7 +1491,10 @@ sysctl_root(SYSCTL_HANDLER_ARGS) #endif oid->oid_running++; SYSCTL_XUNLOCK(); - +#ifdef VIMAGE + if ((oid->oid_kind & CTLFLAG_VNET) && arg1 != NULL) + arg1 = (void *)(curvnet->vnet_data_base + (uintptr_t)arg1); +#endif if (!(oid->oid_kind & CTLFLAG_MPSAFE)) mtx_lock(&Giant); error = oid->oid_handler(oid, arg1, arg2, req); Modified: head/sys/net/vnet.c ============================================================================== --- head/sys/net/vnet.c Fri Feb 7 13:40:22 2014 (r261589) +++ head/sys/net/vnet.c Fri Feb 7 13:47:33 2014 (r261590) @@ -464,47 +464,6 @@ vnet_data_copy(void *start, int size) } /* - * Variants on sysctl_handle_foo that know how to handle virtualized global - * variables: if 'arg1' is a pointer, then we transform it to the local vnet - * offset. - */ -int -vnet_sysctl_handle_int(SYSCTL_HANDLER_ARGS) -{ - - if (arg1 != NULL) - arg1 = (void *)(curvnet->vnet_data_base + (uintptr_t)arg1); - return (sysctl_handle_int(oidp, arg1, arg2, req)); -} - -int -vnet_sysctl_handle_opaque(SYSCTL_HANDLER_ARGS) -{ - - if (arg1 != NULL) - arg1 = (void *)(curvnet->vnet_data_base + (uintptr_t)arg1); - return (sysctl_handle_opaque(oidp, arg1, arg2, req)); -} - -int -vnet_sysctl_handle_string(SYSCTL_HANDLER_ARGS) -{ - - if (arg1 != NULL) - arg1 = (void *)(curvnet->vnet_data_base + (uintptr_t)arg1); - return (sysctl_handle_string(oidp, arg1, arg2, req)); -} - -int -vnet_sysctl_handle_uint(SYSCTL_HANDLER_ARGS) -{ - - if (arg1 != NULL) - arg1 = (void *)(curvnet->vnet_data_base + (uintptr_t)arg1); - return (sysctl_handle_int(oidp, arg1, arg2, req)); -} - -/* * Support for special SYSINIT handlers registered via VNET_SYSINIT() * and VNET_SYSUNINIT(). */ Modified: head/sys/net/vnet.h ============================================================================== --- head/sys/net/vnet.h Fri Feb 7 13:40:22 2014 (r261589) +++ head/sys/net/vnet.h Fri Feb 7 13:47:33 2014 (r261590) @@ -290,15 +290,10 @@ void vnet_data_free(void *start_arg, in * arguments themselves, if required. */ #ifdef SYSCTL_OID -int vnet_sysctl_handle_int(SYSCTL_HANDLER_ARGS); -int vnet_sysctl_handle_opaque(SYSCTL_HANDLER_ARGS); -int vnet_sysctl_handle_string(SYSCTL_HANDLER_ARGS); -int vnet_sysctl_handle_uint(SYSCTL_HANDLER_ARGS); - #define SYSCTL_VNET_INT(parent, nbr, name, access, ptr, val, descr) \ SYSCTL_OID(parent, nbr, name, \ CTLTYPE_INT|CTLFLAG_MPSAFE|CTLFLAG_VNET|(access), \ - ptr, val, vnet_sysctl_handle_int, "I", descr) + ptr, val, sysctl_handle_int, "I", descr) #define SYSCTL_VNET_PROC(parent, nbr, name, access, ptr, arg, handler, \ fmt, descr) \ CTASSERT(((access) & CTLTYPE) != 0); \ @@ -312,16 +307,16 @@ int vnet_sysctl_handle_uint(SYSCTL_HANDL #define SYSCTL_VNET_STRING(parent, nbr, name, access, arg, len, descr) \ SYSCTL_OID(parent, nbr, name, \ CTLTYPE_STRING|CTLFLAG_VNET|(access), \ - arg, len, vnet_sysctl_handle_string, "A", descr) + arg, len, sysctl_handle_string, "A", descr) #define SYSCTL_VNET_STRUCT(parent, nbr, name, access, ptr, type, descr) \ SYSCTL_OID(parent, nbr, name, \ CTLTYPE_OPAQUE|CTLFLAG_VNET|(access), ptr, \ - sizeof(struct type), vnet_sysctl_handle_opaque, "S," #type, \ + sizeof(struct type), sysctl_handle_opaque, "S," #type, \ descr) #define SYSCTL_VNET_UINT(parent, nbr, name, access, ptr, val, descr) \ SYSCTL_OID(parent, nbr, name, \ CTLTYPE_UINT|CTLFLAG_MPSAFE|CTLFLAG_VNET|(access), \ - ptr, val, vnet_sysctl_handle_uint, "IU", descr) + ptr, val, sysctl_handle_int, "IU", descr) #define VNET_SYSCTL_ARG(req, arg1) do { \ if (arg1 != NULL) \ arg1 = (void *)(TD_TO_VNET((req)->td)->vnet_data_base + \