cvs commit: src/sys/sys _task.h
mux at freebsd.org
Wed Jul 28 09:20:52 PDT 2004
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.
More information about the cvs-all