httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Behlendorf <br...@hyperreal.com>
Subject mod_dld_elf.c/so/o (fwd)
Date Sun, 03 Mar 1996 07:41:10 GMT

No ack sent.  Sounds pretty good, we should pick it up.

	Brian

---------- Forwarded message ----------
Date: Sat, 17 Feb 1996 23:37:13 -1000 (HST)
From: David W. Hankins <dhankins@hcf.aloha.net>
To: brian@organic.com
Cc: rst@ai.mit.edu
Subject: mod_dld_elf.c/so/o

-----BEGIN PGP SIGNED MESSAGE-----

Mr. Behlendorf, I noticed your name in the contributors list as the manager
of www.apache.org, thought I'd drop you a note on this, since you might like
to add the enclosed to your archive...

Mr. Thau, I'm CC'ing you since you wrote the original module I based my code
off of (read: copied whole sale and rewrote portions of).

I snarfed the Apache sources when Networker@jhm.ccs.neu.edu was aspousing its
great qualities, and started playing with them...noticed the DLD support, and
figured I'd play with it.

I'm running ELF Linux, so compiling Apache makes an ELF binary, which the
a.out-assuming-GNU-dld does not like.  So I rewrote it.

The code is pretty clean and already has some stuff that can be uncommented
as soon as the Apache core builds a few more functions to really bring out
the real utility of dynamically linking modules (like unloading and reloading
changed or new modules).

All the instructions on what you need to do to compile your modules and
Apache image for this are in the .c file.

So I figured I'd donate it.  If you want to put it up on the contrib area or
whatever, here it is, tarred compressed uuencoded.  I'm afraid I'm a bit far
from my MIME capable mailreader, so you get to play with this manually.

Deal.

Enclosed is the Configuration.dl I used to build a httpd with the mod_dir
module removed (and then added in httpd.conf), and the mod_dld_elf.c which
is my version of the previous mod_dld.c.  A more accurate name might be
mod_dl.c since it references libdl.so.

HARDLY ANY TESTING AT ALL; all I've tried so far is the mod_dir module.
If I get bored in the next week, I might try taking out ALL the modules and
recompiling them as dynaloaders.  Thing is, there's no real advantage to it
yet...we need a builtin along the lines of remove_module before the real
utility is there.  It's simple enough to compile the dynaloaders...

The only advantage right now is one of smaller binary dependence...I can
update modules without relinking the whole damn thing or even not having
the httpd sources uncompressed and on hand (just the headers are necc.).

But that's all discussed in the .c.

begin 644 dlfiles.tar.gz
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
#4```
`
end

- -- 
David Hankins,             "If you don't do it right the first time,
Mercenary Spider			you'll just have to do it again."
The Huddled Masses (Inc)				-- J.T. Hankins

-----BEGIN PGP SIGNATURE-----
Version: 2.6.2

iQCVAwUBMSbzQnT+oUa7FD7JAQGbGwP+KUCz6fLYsFWLEpmVLEc+JZ4Kr4oxaO/r
VeKACFW0OxaS50i36+/Zg/EM7HrKUIeWTZPHNEpQe7FmilpTxn1+jdnU4jp1GnhD
YOUXC81Lx3R/vKz1RKmwuQFhAAEkhiX2K20qwfbpoB3BVSb6qxCIouoe9mHxP6Lt
k6boWQaVJg8=
=/k6u
-----END PGP SIGNATURE-----



Mime
View raw message