Date: Wed, 16 Oct 2013 06:29:09 -0700 From: Alfred Perlstein <alfred@freebsd.org> To: Sebastian Huber <sebastian.huber@embedded-brains.de>, Ian Lepore <ian@FreeBSD.org> Cc: FreeBSD Hackers <freebsd-hackers@FreeBSD.org> Subject: Re: Global variables in system programs Message-ID: <525E94A5.7060809@freebsd.org> In-Reply-To: <525E4A6F.40904@embedded-brains.de> References: <525D5A35.4040005@embedded-brains.de> <525D62D9.4050001@freebsd.org> <1381852662.42859.130.camel@revolution.hippie.lan> <525E4A6F.40904@embedded-brains.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On 10/16/13 1:12 AM, Sebastian Huber wrote: > On 2013-10-15 17:57, Ian Lepore wrote: >> On Tue, 2013-10-15 at 08:44 -0700, Alfred Perlstein wrote: >>> On 10/15/13 8:07 AM, Sebastian Huber wrote: >>>> Hello, >>>> >>>> I work currently on a port of the FreeBSD network stack to a real-time >>>> operating system for embedded targets. Here the applications are >>>> statically linked with the operating system and the network stack. We >>>> would like to use the standard FreeBSD system programs to configure >>>> the network stack, e.g. ROUTE(8), IFCONFIG(8), etc. For example >>>> >>>> static const char *const argv[] = { >>>> "ifconfig", >>>> "lo0", >>>> "127.0.0.1" >>>> }; >>>> >>>> ifconfig(3, &argv[0]); >>>> >>>> These programs use some global variables. In a statically linked >>>> context we have now the following problems >>>> >>>> o we cannot call the programs concurrently, >>>> >>>> o we have to initialize the values each time. >>>> >>>> We would like to follow the FreeBSD sources to stay up-to-date. So it >>>> is desirable for us to keep the divergence from the original sources >>>> as small as possible. Are patches acceptable for the FreeBSD project >>>> that alter system programs such that >>>> >>>> o global variables are moved into context structures, >>>> >>>> o constant global variables are declared as "const", and >>>> >>>> o variables and functions are declared as "static" if possible? >>>> >>>> Attached is a patch for the ROUTE(8) program to give an example. >>> >>> Wow! I would really love to see this sort of change make it into >>> FreeBSD, not only for linking them all together, but also for running >>> them as threads. > > Out of curiosity, what is the benefit of running these programs in a > thread in case you have an operating system with proper processes? Imagine a program or some shell which loads a bunch of shared objects so instead of needing to fork/exec for each command can just dispatch to a thread. It would let that program be very fast as opposed to a traditional fork/exec model. -Alfred
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?525E94A5.7060809>