From owner-freebsd-hackers@FreeBSD.ORG Mon Feb 2 16:17:42 2009 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 665631065673 for ; Mon, 2 Feb 2009 16:17:42 +0000 (UTC) (envelope-from matthew.fleming@isilon.com) Received: from seaxch09.isilon.com (seaxch09.isilon.com [74.85.160.25]) by mx1.freebsd.org (Postfix) with ESMTP id 481DE8FC0A for ; Mon, 2 Feb 2009 16:17:42 +0000 (UTC) (envelope-from matthew.fleming@isilon.com) Received: from 10.54.190.89 ([10.54.190.89]) by seaxch09.desktop.isilon.com ([10.10.2.96]) with Microsoft Exchange Server HTTP-DAV ; Mon, 2 Feb 2009 16:17:41 +0000 Received: from amaretto by SEAXCH09.isilon.com; 02 Feb 2009 08:17:41 -0800 From: Matthew Fleming To: John Baldwin In-Reply-To: <200902020846.33072.jhb@freebsd.org> References: <1233337318.13748.101.camel@amaretto> <1233339897.13748.106.camel@amaretto> <200902020846.33072.jhb@freebsd.org> Content-Type: text/plain Content-Transfer-Encoding: 7bit Organization: The Q Continuum Date: Mon, 02 Feb 2009 08:17:41 -0800 Message-Id: <1233591461.7789.25.camel@amaretto> Mime-Version: 1.0 X-Mailer: Evolution 2.24.2 Cc: freebsd-hackers@freebsd.org Subject: Re: Dynamic ddb commands X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Feb 2009 16:17:43 -0000 > In general it is far easier to just add sysinit's than to hack directly on the > kernel linker. There are very few ddb commands, so one extra pointer or two > per command is not a lot of space. Respectfully, I disagree, for several reasons. First, in order to make sysinit and sysctl work, the kernel linker needed to know that there are a set of elf sections that have special meaning. Yes, using sysinits means that there are still only two elf sections of interest. Second, as I mentioned before, having ddb commands added mixed in with sysinits means that, if I have a bug in my sysinit I may not be able to use some of my ddb commands to debug it. Even if DB_*COMMAND used SI_ORDER_FIRST, any sysinit with the same priority may come first. Next, if you want commands sorted globally, it could be done with either implementation. But I think that commands that are defined by a module should be listed with others from that module. Last, changing struct command introduces a binary compatibility issue. Any older driver that had a ddb command (even if they never realized they couldn't access it) would need to be recompiled. I am not sure of FreeBSD's binary compatibility policy, though, and it would presumably be across a major OS revision number. So this is not a very compelling argument. Thanks, matthew