From owner-freebsd-doc@FreeBSD.ORG Thu Sep 29 00:13:01 2011 Return-Path: Delivered-To: freebsd-doc@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4FA99106564A for ; Thu, 29 Sep 2011 00:13:01 +0000 (UTC) (envelope-from kaduk@mit.edu) Received: from dmz-mailsec-scanner-3.mit.edu (DMZ-MAILSEC-SCANNER-3.MIT.EDU [18.9.25.14]) by mx1.freebsd.org (Postfix) with ESMTP id E1EA38FC0C for ; Thu, 29 Sep 2011 00:13:00 +0000 (UTC) X-AuditID: 1209190e-b7f4a6d0000008e5-a3-4e83b80b805c Received: from mailhub-auth-4.mit.edu ( [18.7.62.39]) by dmz-mailsec-scanner-3.mit.edu (Symantec Messaging Gateway) with SMTP id 87.58.02277.B08B38E4; Wed, 28 Sep 2011 20:12:59 -0400 (EDT) Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103]) by mailhub-auth-4.mit.edu (8.13.8/8.9.2) with ESMTP id p8T0CxxV006219; Wed, 28 Sep 2011 20:12:59 -0400 Received: from multics.mit.edu (MULTICS.MIT.EDU [18.187.1.73]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id p8T0CvBl004458 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 28 Sep 2011 20:12:58 -0400 (EDT) Received: (from kaduk@localhost) by multics.mit.edu (8.12.9.20060308) id p8T0Cvw9010957; Wed, 28 Sep 2011 20:12:57 -0400 (EDT) Date: Wed, 28 Sep 2011 20:12:56 -0400 (EDT) From: Benjamin Kaduk To: Liu Wang In-Reply-To: <09F85D53A2F0C547BF5E05E214DB880A23C81FCB3C@MAIL5.supermicro.com> Message-ID: References: <09F85D53A2F0C547BF5E05E214DB880A23C81FCB3C@MAIL5.supermicro.com> User-Agent: Alpine 1.10 (GSO 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrNIsWRmVeSWpSXmKPExsUixG6nrsu9o9nP4NllM4tTZ7pYLVZd7WB3 YPKY8Wk+i8e1Dv0Apigum5TUnMyy1CJ9uwSujCmTLrAUXBSpuHxwN3sDYyN3FyMHh4SAicTG JpMuRk4gU0ziwr31bF2MXBxCAvsYJZ6v+csK4WxglFjZ3soIUiUkcIBJ4n2PLESiAahq71YW kASLgLbE2rb1YEVsAioSM99sZAOxRQSUJDo7F4PVMAuYS6x6MZkJpFlYoINRovfNbnaQBKeA n8Tet6cZQU7iFbCX+PGGDWKZr8SKhX/ASkQFdCRW758CNodXQFDi5MwnUDMtJc79uc42gVFw FpLULCSpBYxMqxhlU3KrdHMTM3OKU5N1i5MT8/JSi3SN9XIzS/RSU0o3MYLClFOSbwfj14NK hxgFOBiVeHh/JDX7CbEmlhVX5h5ilORgUhLlLd8OFOJLyk+pzEgszogvKs1JLT7EKMHBrCTC +2sdUI43JbGyKrUoHyYlzcGiJM67eoeDn5BAemJJanZqakFqEUxWhoNDSYJXaStQo2BRanpq RVpmTglCmomDE2Q4D9BwI5DFvMUFibnFmekQ+VOMilLivH4gCQGQREZpHlwvLI28YhQHekWY 1wqkigeYguC6XwENZgIa/LWwEWRwSSJCSqqBcVF22El2j95D11UOXVqiGVfw+32FFHtqZOqZ 048jLh3L/V1rbZL6f1NpHZfD7dtvC3Zc+rVn07UHGhdtpx6aZHlS8/dGy1BXCZVmzYJJzEUb Arc8zF5bzDprmkx/xtmb212WNUw+9/KECPfqsitBM9f9TnvX4MkrUTzVequK3uNwr/TD81YE 9yixFGckGmoxFxUnAgC0tD8I/gIAAA== Cc: "freebsd-doc@freebsd.org" Subject: Re: Are "mypci_driver" typos for "mypci_cdevsw" in "FreeBSD Architecture Handbook" , page 159, section 11.1.1, line 9 & 10 ? X-BeenThere: freebsd-doc@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Documentation project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Sep 2011 00:13:01 -0000 On Wed, 28 Sep 2011, Liu Wang wrote: > Are "mypci_driver" typos for "mypci_cdevsw" in "FreeBSD Architecture > Handbook" , page 159, section 11.1.1, line 9 & 10 ? The architecture handbook has not been well-loved over the past few years, and is not exactly authoritative on very much at the moment. A look at other uses of the DEFINE_CLASS_0 and DRIVER_MODULE macros (e.g. dev/pci/pci_pci.c) and consulting fxr.watson.org seems to indicate that these arguments should not be existing symbols: 103 DEFINE_CLASS_0(pcib, pcib_driver, pcib_methods, sizeof(struct pcib_softc)); 104 DRIVER_MODULE(pcib, pci, pcib_driver, pcib_devclass, 0, 0); FXR does not see "pcib_driver" as a symbol. Indeed, looking at the macro implementation reveals that this argument is used to define a new symbol as part of the macro expansion: #define DEFINE_CLASS_0(name, classvar, methods, size) \ \ struct kobj_class classvar = { \ #name, methods, size, NULL \ } #define DRIVER_MODULE(name, busname, driver, devclass, evh, arg) \ EARLY_DRIVER_MODULE(name, busname, driver, devclass, evh, arg, \ BUS_PASS_DEFAULT) #define EARLY_DRIVER_MODULE(name, busname, driver, devclass, evh, arg, pass) \ \ static struct driver_module_data name##_##busname##_driver_mod = { \ evh, arg, \ #busname, \ (kobj_class_t) &driver, \ &devclass, \ pass \ }; \ \ static moduledata_t name##_##busname##_mod = { \ #busname "/" #name, \ driver_module_handler, \ &name##_##busname##_driver_mod \ }; \ DECLARE_MODULE(name##_##busname, name##_##busname##_mod, \ SI_SUB_DRIVERS, SI_ORDER_MIDDLE) So, given that mypci_cdevsw is already declared, the answer to your question is "no". -Ben Kaduk