Date: Tue, 15 Oct 2013 08:44:25 -0700 From: Alfred Perlstein <alfred@freebsd.org> To: Sebastian Huber <sebastian.huber@embedded-brains.de>, FreeBSD Hackers <freebsd-hackers@freebsd.org> Subject: Re: Global variables in system programs Message-ID: <525D62D9.4050001@freebsd.org> In-Reply-To: <525D5A35.4040005@embedded-brains.de> References: <525D5A35.4040005@embedded-brains.de>
next in thread | previous in thread | raw e-mail | index | archive | help
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. I have a question about your propose modification... Can you run two instances of route modified like this? How many more programs have you modified?
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?525D62D9.4050001>