Skip site navigation (1)Skip section navigation (2)
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>