httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Sutton <p...@ukweb.com>
Subject Re: [STATUS] Fri Jun 6 08:12:55 EDT 1997
Date Sat, 07 Jun 1997 13:16:04 GMT
On Fri, 6 Jun 1997, Marc Slemko wrote:
> I don't pay much attention to the NT stuff; how involved is NT support?
> Could it not go in 1.2.x?  To avoid having three trees, 1.2 would have to
> die a quick death in favor of 1.3 anyway...  

There are two big issues with the NT version:

  - os abstraction
  - multithreading

OS abstration: NT is a very different operating system, and some
functionality we take forgranted, such as fork/exec, just does not exist
in NT.  There are also a lot of niggling small changes required (for
example, dirsection matches must be done case-insenstive, paths are
absolute if the second character is a :, files must be opened in "binary" 
mode). All of these require some changes to the base Apache code. However
instead of seeing a whole bunch of #ifdef WIN32's all over the code, I
personally would prefer a small abstraction layer. We also do this for
several functions (ap_killpg, ap_snprintf). It is _not_ a big deal to add
a few more for the basic NT requirements (e.g. ap_fopen,
ap_is_path_absolute). This is effectively just extending set of ifdef's in
conf.h to support NT. 

I've been looking at a context diff of Ambarish's NT port against plain
Apache and identified a working list of functionality which needs to be
abstracted.  There are some issues which are more complex: in particular,
the lack of fork/exec and the lack of any sort of alarm/signal capability. 
Initially these will have to be addressed with #ifdef WIN32 sections I
think. 

So I propose that we migrate the current CVS head to 1.3 with NT support
by adding OS abstractions in preference to lots of #ifdef WIN32 sections.
A side effect of this is that we can also get rid of the #ifdef __EMX__
sections which currently litter the code as well. 

Multithreading: because of the lack of fork/exec and inability of NT to do
select on multiple inherited sockets (which incidently cannot be treated
as file descriptors, bwah), Apache on NT _has_ to support multithreading.
This of course is a major aim for Apache 2.0. So 1.3 will come out with
multithreading (for NT) before we have decided how to implement threading
on Unix -- which may or may not be different. We don't really want to have
different directives to control threading in the NT version from the
eventual Unix version. And since the NT version will have threading and
that threading can be abstracted (Doug has also done some work on a common
NT/POSIX threads interface) shouldn't we think about giving Unix users -
at least those with a POSIX threads OS - of 1.3 the benefits of a
multithreading server?

//pcs


Mime
View raw message