Proposal for changes to network device drivers and network stack (RFC)

Mikolaj Golub trociny at FreeBSD.org
Fri Sep 21 09:22:42 UTC 2012


On Fri, Sep 07, 2012 at 01:28:16AM -0700, Anuranjan Shukla wrote:
> Hi George,
> Thanks for taking a look. Some answers/comments below.
> 
> >
> >> Building FreeBSD without the network stack (network stack as a module)
> >> ----------------------------------------------------------------------
> >>
> >This would be interesting for many reasons, and I think it would be a good
> >contribution.  Does the work you've done in this area handle the VNET
> >stuff that is in the stack as well?  That is, how well does the network
> >stack
> >as a module play with the vnet architecture?
> 
> I'll follow up on this one separately.

FYI, there is at least this issue with virtualized global variables in modules:

http://lists.freebsd.org/pipermail/freebsd-virtualization/2011-July/000737.html

On archs that use link_elf.c (i.e. all except amd64, which uses
link_elf_obj.c) virtualized global variables in modules can not be
accessed from another modules, because link_elf on a module load does
relocation only for VNET variables defined in this module.

As it was pointed by Marko Zec, the same issue is with DPCPU.

The latest patch I have (both for VNET and DPCPU):

http://people.freebsd.org/~trociny/link_elf.c.pcpu_vnet.patch

The fix is to make the linker on a module load recognize "external"
VNET/DPCPU variables defined in the previously loaded modules and
relocate them accordingly. For this set_pcpu_list and set_vnet_list
are used, where the addresses of modules 'set_pcpu' and 'set_vnet'
linker sets are stored in.

-- 
Mikolaj Golub


More information about the freebsd-net mailing list