From owner-cvs-src@FreeBSD.ORG Wed Jul 28 16:20:52 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BDE8716A4CE; Wed, 28 Jul 2004 16:20:52 +0000 (GMT) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.FreeBSD.org (Postfix) with ESMTP id A401A43D66; Wed, 28 Jul 2004 16:20:52 +0000 (GMT) (envelope-from mux@freebsd.org) Received: by elvis.mu.org (Postfix, from userid 1920) id 99E9E5C8D9; Wed, 28 Jul 2004 09:20:52 -0700 (PDT) Date: Wed, 28 Jul 2004 18:20:52 +0200 From: Maxime Henrion To: Brooks Davis Message-ID: <20040728162052.GB13608@elvis.mu.org> References: <200407280912.i6S9CsfA088910@repoman.freebsd.org> <20040728091920.GU82302@elvis.mu.org> <20040728160852.GA21481@Odin.AC.HMC.Edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040728160852.GA21481@Odin.AC.HMC.Edu> User-Agent: Mutt/1.4.2.1i cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/sys _task.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2004 16:20:52 -0000 Brooks Davis wrote: > On Wed, Jul 28, 2004 at 11:19:20AM +0200, Maxime Henrion wrote: > > Maxime Henrion wrote: > > > mux 2004-07-28 09:12:54 UTC > > > > > > FreeBSD src repository > > > > > > Modified files: > > > sys/sys _task.h > > > Log: > > > Remove (at least temporarily) the check that prevents us from including > > > this file from userland. Since we export struct ifnet to userland, and > > > that struct ifnet now contains a struct task, userland needs to know > > > what struct task looks like. > > > > > > We need to consider having a pointer to a struct task here instead and > > > forward declare struct task in the !_KERNEL case. > > > > Or have a struct ifnet for kernel and a struct xifnet for userland, as we > > do in other places. > > No, that won't work. There is no valid reason for userland applications > to use struct ifnet. They only use it because the authors were lazy > and access things like interface stats via kvm access to ifnet instead > of via the generally adaquate sysctls. I drew the same conclusion after talking to Robert on IRC. I thought at least getifaddrs() legitimally needed struct ifnet definition, it seems it's not the case. So if there's no sensible use of struct ifnet in userland, of course it makes a lot of sense to entirely hide it. > I'm seriously tempted to wrap > if_var.h in something like, at least once we get our useland clean: > > #if defined(_KERNEL) || defined(IF_VAR_H_IS_NOT_A_VALID_USERLAND_INTERFACE) Please go for it. Cheers, Maxime