cvs commit: apache-2.0/docs page_io

1998-03-08 Thread marc
marc98/03/08 12:41:46

  Modified:docs page_io
  Log:
  yes.
  
  Revision  ChangesPath
  1.7   +1 -1  apache-2.0/docs/page_io
  
  Index: page_io
  ===
  RCS file: /export/home/cvs/apache-2.0/docs/page_io,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- page_io   1998/03/08 04:39:14 1.6
  +++ page_io   1998/03/08 20:41:46 1.7
  @@ -96,7 +96,7 @@
   descriptor across the network.  This is probably the single best way
   to do static content on systems that support it.
   
  -HPUX: (11.0 and on)
  +HPUX: (10.30 and on)
   
 ssize_t sendfile(int s, int fd, off_t offset, size_t nbytes,
 const struct iovec *hdtrl, int flags);
  
  
  


cvs commit: apache-2.0 STATUS

1998-03-08 Thread coar
coar98/03/08 07:07:21

  Modified:.STATUS
  Log:
Another blue-sky idea for a primitive-set.
  
  Revision  ChangesPath
  1.26  +6 -0  apache-2.0/STATUS
  
  Index: STATUS
  ===
  RCS file: /export/home/cvs/apache-2.0/STATUS,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- STATUS1998/03/07 21:26:17 1.25
  +++ STATUS1998/03/08 15:07:21 1.26
  @@ -23,6 +23,12 @@
   
   Open issues:
   
  +  * Library of routines to allow access to memory shared between
  +processes, for things like per-module caches.  Such shared
  +segments should persist until the refcount drops to zero.
  +It would be cool if pools could be created in such segments
  +to allow things like shared tables and arrays.
  +
 * "Apache ports" project - simple-to-install (a la CPAN) one-off
   tools, scripts (such as counters, guest books, et cetera)
   
  
  
  


cvs commit: apache-1.3/src Configure

1998-03-08 Thread Ralf S. Engelschall
rse 98/03/08 04:58:21

  Modified:src  Configure
  Log:
  Fix Configure script:
  
  1. move generation of ap_config.h to a later point in the script
 because else it doesn't pick up HIDE or STATUS correctly.
  
  2. change the generation of shared objects from explicit rules to
 implicit rules: First the $< is only portable for implict
 rules (e.g. FreeBSD's make fails) and second we already build
 .o's implicitly, so we should do with .so's the same way.
  
  Revision  ChangesPath
  1.195 +26 -23apache-1.3/src/Configure
  
  Index: Configure
  ===
  RCS file: /export/home/cvs/apache-1.3/src/Configure,v
  retrieving revision 1.194
  retrieving revision 1.195
  diff -u -r1.194 -r1.195
  --- Configure 1998/03/05 18:58:31 1.194
  +++ Configure 1998/03/08 12:58:19 1.195
  @@ -841,24 +841,6 @@
}'`
   
   #
  -# At this point we can pick out all -D's from CFLAGS and create ap_config.h
  -# to be used by external modules needing to include Apache header files.
  -#
  -
  -for cflag in $CFLAGS; do
  - echo $cflag >>$tmpconfig ;
  -done
  -awk > include/ap_config.h < $tmpconfig '
  - BEGIN {
  - printf "/* Automatically generated file - do not edit */\n\n"
  - }
  - /^-D.*/ {
  - split(substr($1,3,length($1)),parts,"=")
  - printf ("#define %s %s\n",parts[1],parts[2])
  - }
  -'
  -
  -#
   # Now autoconfigure each of the modules specified by AddModule.
   # Use tmpfile2 for the module definition file, and tmpfile3 for the
   # shell commands to be executed for this module.
  @@ -1078,6 +1060,25 @@
   echo " End of Configure created section ">> Makefile.config
   
   
  +# Continue building include/ap_config.h
  +#
  +# We pick out all -D's from CFLAGS and create ap_config.h which
  +# can be used by external modules needing to include Apache
  +# header files.
  +for cflag in $CFLAGS; do
  + echo $cflag >>$tmpconfig ;
  +done
  +awk > include/ap_config.h < $tmpconfig '
  + BEGIN {
  + printf "/* Automatically generated file - do not edit */\n\n"
  + }
  + /^-D.*/ {
  + split(substr($1,3,length($1)),parts,"=")
  + printf ("#define %s %s\n",parts[1],parts[2])
  + }
  +'
  +
  +
   # Use TestCompile to see if $(CC) is ANSI and as a "final" sanity
   # check
   #
  @@ -1167,15 +1168,11 @@
split(pp[3], parts, ".")
base=parts[1]
shlibsobj=shlibsobj " " base "-so.o"
  - comp=comp base ".so: " base "-so.o\n"
  - comp=comp " $(LD) $(LDFLAGS) $(LDFLAGS_SHLIB) -o " base 
".so $<\n"
  - comp=comp base "-so.o: " base ".c\n"
  - comp=comp " $(CC) $(CFLAGS) $(INCLUDES) $(CFLAGS_SHLIB) -c 
-o " base "-so.o $<\n"
}
END { 
printf "SHLIBS=%s\n", shlibs;
printf "SHLIBS_OBJ=%s\n", shlibsobj;
  - print "\n" comp "\n" }'
  +}'
   
$CAT << 'EOF' >> $moddir/Makefile
   
  @@ -1188,8 +1185,14 @@
ar cr $@ $(OBJS)
$(RANLIB) $@
   
  +.SUFFIXES: .o .so
  +
   .c.o:
$(CC) -c $(INCLUDES) $(CFLAGS) $(SPACER) $<
  +
  +.c.so:
  + $(CC) -c $(INCLUDES) $(CFLAGS) $(CFLAGS_SHLIB) $(SPACER) -o $*-so.o $<
  + $(LD) $(LDFLAGS) $(LDFLAGS_SHLIB) -o $@ $*-so.o
   
   clean:
rm -f $(OBJS) $(SHLIBS) $(SHLIBS_OBJ) $(LIB) $(SHLIB)
  
  
  


Re: cvs commit: apache-2.0/docs stacked_io

1998-03-08 Thread Ben Laurie
Marc Slemko wrote:
> 
> On 8 Mar 1998 [EMAIL PROTECTED] wrote:
> 
> >   +[djg: I'd like to consider filesystem metadata as well -- we only need
> >   +a few bits of metadata to do HTTP: file size and last modified.  We
> >   +need an etag generation function, it is specific to the filters in
> >   +use.  You see, I'm envisioning a bottom layer which pulls data out of
> >   +a database rather than reading from a file.]
> 
> Yes, I strongly agree.  Being able to add this sort of thing via modules
> would be very cool.  Now, you may or may not want to implement the
> filesystem support as a moudule but that doesn't really matter.
> 
> Best book seen today: WebTV for dummies.  First, there were books like "C
> for dummies".  You know, reasonably complex topic, cool that they are
> calling people dummies.  Then there were books like "Netscape for
> dummies", or even AOL for Dummies fits in here.  Those are books that you
> go "god, anyone needing that must be a dummy."  But with WebTV for
> dummies, all I think of is "yup, sounds like an appropriate book."
> 
> I love some of the names of the dummies books though.
> 
> Client/Server Computing for Dummies.
> Crossword Puzzles for Dummies
> Bach for Dummies
> Baroque for Dummies
> Beer for Dummies
> Bird Watching for Dummies
> Business Plans for Dummies
> Building an Intranet for Dummies
> Cats for Dummies.  (by Gina Spadafori; read quickly that name looks like
> someone else)
> Cooking for Dummies (hmm... cna take that one two ways...)
> Dating for Dummies
> Nuclear Physics for Dummies (just kidding)

Ever since a friend of mine was approached to write "xyz for Dummies"
(subject elided to protect the guilty), I've realised these should all
be "... from Dummies", coz the deals they offer to write these things
are of the type my agent describes as "humiliating".

Cheers,

Ben.

-- 
Ben Laurie|Phone: +44 (181) 735 0686|  Apache Group member
Freelance Consultant  |Fax:   +44 (181) 735 0689|http://www.apache.org
and Technical Director|Email: [EMAIL PROTECTED] |
A.L. Digital Ltd, |Apache-SSL authorhttp://www.apache-ssl.org/
London, England.  |"Apache: TDG" http://www.ora.com/catalog/apache


Re: cvs commit: apache-2.0/docs stacked_io

1998-03-08 Thread Marc Slemko
On 8 Mar 1998 [EMAIL PROTECTED] wrote:

>   +[djg: I'd like to consider filesystem metadata as well -- we only need
>   +a few bits of metadata to do HTTP: file size and last modified.  We
>   +need an etag generation function, it is specific to the filters in
>   +use.  You see, I'm envisioning a bottom layer which pulls data out of
>   +a database rather than reading from a file.]

Yes, I strongly agree.  Being able to add this sort of thing via modules
would be very cool.  Now, you may or may not want to implement the
filesystem support as a moudule but that doesn't really matter.

Best book seen today: WebTV for dummies.  First, there were books like "C
for dummies".  You know, reasonably complex topic, cool that they are
calling people dummies.  Then there were books like "Netscape for
dummies", or even AOL for Dummies fits in here.  Those are books that you
go "god, anyone needing that must be a dummy."  But with WebTV for
dummies, all I think of is "yup, sounds like an appropriate book." 

I love some of the names of the dummies books though.

Client/Server Computing for Dummies.
Crossword Puzzles for Dummies
Bach for Dummies
Baroque for Dummies
Beer for Dummies
Bird Watching for Dummies
Business Plans for Dummies
Building an Intranet for Dummies
Cats for Dummies.  (by Gina Spadafori; read quickly that name looks like
someone else)
Cooking for Dummies (hmm... cna take that one two ways...)
Dating for Dummies
Nuclear Physics for Dummies (just kidding)



cvs commit: apache-2.0/docs stacked_io

1998-03-08 Thread dgaudet
dgaudet 98/03/07 22:17:57

  Modified:docs stacked_io
  Log:
  more comments
  
  Revision  ChangesPath
  1.3   +12 -1 apache-2.0/docs/stacked_io
  
  Index: stacked_io
  ===
  RCS file: /export/home/cvs/apache-2.0/docs/stacked_io,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- stacked_io1998/03/08 06:07:50 1.2
  +++ stacked_io1998/03/08 06:17:56 1.3
  @@ -185,6 +185,13 @@
   Unix, it would be a pair of file descriptors); the second holds the
   void * pointer passed to all user-supplied functions.
   
  +[djg: I don't think I really agree with the distinction here between
  +the bottom and the other filters.  Take the select() example, it's
  +valid for any layer to define a fd that can be used for select...
  +in fact it's the topmost layer that should really get to make this
  +definition.  Or maybe I just have your top and bottom flipped.  In
  +any event I think this should be part of the filter structure and
  +not separate.]
   
The BUFF structure
   
  @@ -540,4 +547,8 @@
   are done via flags and options will be done by attaching appropriate
   filters instead (eg. chunking).
   
  -
  +[djg: I'd like to consider filesystem metadata as well -- we only need
  +a few bits of metadata to do HTTP: file size and last modified.  We
  +need an etag generation function, it is specific to the filters in
  +use.  You see, I'm envisioning a bottom layer which pulls data out of
  +a database rather than reading from a file.]
  
  
  


cvs commit: apache-2.0/docs stacked_io

1998-03-08 Thread dgaudet
dgaudet 98/03/07 22:07:51

  Modified:docs stacked_io
  Log:
  some comments
  
  Revision  ChangesPath
  1.2   +26 -1 apache-2.0/docs/stacked_io
  
  Index: stacked_io
  ===
  RCS file: /export/home/cvs/apache-2.0/docs/stacked_io,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- stacked_io1998/02/09 09:30:01 1.1
  +++ stacked_io1998/03/08 06:07:50 1.2
  @@ -1,3 +1,5 @@
  +[djg: comments like this are from dean]
  +
   This past summer, Alexei and I wrote a spec for an I/O Filters API... 
   this proposal addresses one part of that -- 'stacked' I/O with buff.c. 
   
  @@ -262,6 +264,14 @@
   will be needed.  This continues till B's buffer fills up, then
   B will write to C's buffer -- with the same effect.
   
  +[djg: I don't think this is the issue I was really worried about --
  +in the case of shrinking transformations you are already doing 
  +non-trivial amounts of CPU activity with the data, and there's
  +no copying of data that you can eliminate anyway.  I do recognize
  +that there are non-CPU intensive filters -- such as DMA-capable
  +hardware crypto cards.  I don't think they're hard to support in
  +a zero-copy manner though.]
  +
   The maximum additional number of bytes which will be copied in this
   scenario is on the order of nk, where n is the total number of bytes,
   and k is the number of filters doing shrinking transformations.
  @@ -291,6 +301,10 @@
   sent to the next filter without any additional copying.  This should
   provide the minimal necessary memory copies.
   
  +[djg: Unfortunately this makes it hard to support page-flipping and
  +async i/o because you don't have any reference counts on the data.
  +But I go into a little detail that already in docs/page_io.]
  +
Function chaining
   
   In order to avoid unnecessary function chaining for reads and writes,
  @@ -323,6 +337,9 @@
   NO_WRITEV is set; hence, it should deal with that case in a reasonable
   manner.
   
  +[djg: We can't guarantee atomicity of writev() when we emulate it.
  +Probably not a problem, just an observation.]
  +
   *
Code in buff.c
   
  @@ -457,7 +474,7 @@
   }
   -
   
  -If the btransmitfile function is called on a buffer which doesn't
  +If the btransmitfile function is called on a buffer which doesn't implement
   it, the system will attempt to read data from the file identified
   by the file_info_ptr structure and use other methods to write to it.
   
  @@ -491,6 +508,14 @@
   calls to bflush.  The user-supplied flush function will be called then,
   and also before close is called.  The user-supplied flush should not
   call flush on the next buffer.
  +
  +[djg: Poorly written "expanding" filters can cause some nastiness
  +here.  In order to flush a layer you have to write out your current
  +buffer, and that may cause the layer below to overflow a buffer and
  +flush it.  If the filter is expanding then it may have to add more to
  +the buffer before flushing it to the layer below.  It's possible that
  +the layer below will end up having to flush twice.  It's a case where
  +writev-like capabilities are useful.]
   
Closing Stacks and Filters
   
  
  
  


cvs commit: apache-2.0/docs page_io

1998-03-08 Thread marc
marc98/03/07 20:39:16

  Modified:docs page_io
  Log:
  no snow.
  
  Revision  ChangesPath
  1.6   +18 -1 apache-2.0/docs/page_io
  
  Index: page_io
  ===
  RCS file: /export/home/cvs/apache-2.0/docs/page_io,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- page_io   1998/03/08 04:22:39 1.5
  +++ page_io   1998/03/08 04:39:14 1.6
  @@ -96,7 +96,7 @@
   descriptor across the network.  This is probably the single best way
   to do static content on systems that support it.
   
  -HPUX:
  +HPUX: (11.0 and on)
   
 ssize_t sendfile(int s, int fd, off_t offset, size_t nbytes,
 const struct iovec *hdtrl, int flags);
  @@ -140,3 +140,20 @@
TransmitFile.  If not, you are just limited (eg. byte
ranges) in what you can use it for.
   
  + Also note that TransmitFile can specify TF_REUSE_SOCKET, so that
  + after use the same socket handle can be passed to AcceptEx.  
  + Obviously only good where we don't have a persistent connection
  + to worry about.
  +
  +
  +
  +Note that all this is shot to bloody hell by HTTP-NG's multiplexing.
  +If fragment sizes are big enough, it could still be worthwhile to
  +do copy avoidence.  It also causes performance issues because of
  +its credit system that limits how much you can write in a single
  +chunk.
  +
  +Don't tell me that if HTTP-NG becomes popular we will seen vendors 
  +embedding SMUX (or whatever multiplexing is used) in the kernel to
  +get around this stuff.  There we go, Apache with a loadable kernel
  +module.  
  
  
  


cvs commit: apache-1.3/src/main http_main.c

1998-03-08 Thread dgaudet
dgaudet 98/03/07 20:25:59

  Modified:src  CHANGES PORTING
   src/include conf.h
   src/main http_main.c
  Log:
  http_main is way too big.  Bleh.  Some clean up on scoreboard stuff.
  
  Revision  ChangesPath
  1.693 +4 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.692
  retrieving revision 1.693
  diff -u -r1.692 -r1.693
  --- CHANGES   1998/03/06 12:52:55 1.692
  +++ CHANGES   1998/03/08 04:25:53 1.693
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3b6
   
  +  *) Minor cleanup in http_main -- split QNX and OS2 specific "mmap"
  + scoreboard code into separate #defines -- USE_POSIX_SCOREBOARD
  + and USE_OS2_SCOREBOARD.  [Dean Gaudet]
  +
 *) Fix one more special locking problem for RewriteMap programs in
mod_rewrite: According to the documentation of flock(), "Locks are on
files, not file descriptors.  That is, file descriptors duplicated
  
  
  
  1.21  +8 -0  apache-1.3/src/PORTING
  
  Index: PORTING
  ===
  RCS file: /export/home/cvs/apache-1.3/src/PORTING,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- PORTING   1998/01/25 02:07:43 1.20
  +++ PORTING   1998/03/08 04:25:54 1.21
  @@ -223,6 +223,14 @@
 is defined, a file-based scoreboard will be used and
 SCOREBOARD_FILE will automatically be defined >>
   
  + USE_POSIX_SCOREBOARD:
  +  Defined on QNX currently where the shared memory scoreboard follows
  +  the POSIX 1003.4 spec.
  +
  + USE_OS2_SCOREBOARD:
  +  Defined on OS2, uses OS2 primitives to construct shared memory for
  +  the scoreboard.
  +
USE_LONGJMP:
 Define to use the longjmp() call instead of siglongjmp()
 (as well as setjmp() instead of sigsetjmp()).
  
  
  
  1.189 +2 -3  apache-1.3/src/include/conf.h
  
  Index: conf.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/include/conf.h,v
  retrieving revision 1.188
  retrieving revision 1.189
  diff -u -r1.188 -r1.189
  --- conf.h1998/03/05 18:58:33 1.188
  +++ conf.h1998/03/08 04:25:56 1.189
  @@ -585,7 +585,7 @@
   #define HAVE_SYS_SELECT_H 1
   #include 
   #define HAVE_MMAP 1
  -#define USE_MMAP_SCOREBOARD
  +#define USE_POSIX_SCOREBOARD
   #define HAVE_SYSLOG 1
   
   #elif defined(LYNXOS)
  @@ -637,8 +637,7 @@
   #define chdir _chdir2
   #include 
   #define MAXSOCKETS 4096
  -#define HAVE_MMAP 1
  -#define USE_MMAP_SCOREBOARD
  +#define USE_OS2_SCOREBOARD
   #define NO_RELIABLE_PIPED_LOGS
   
   #elif defined(__MACHTEN__)
  
  
  
  1.300 +111 -92   apache-1.3/src/main/http_main.c
  
  Index: http_main.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/main/http_main.c,v
  retrieving revision 1.299
  retrieving revision 1.300
  diff -u -r1.299 -r1.300
  --- http_main.c   1998/03/04 02:28:15 1.299
  +++ http_main.c   1998/03/08 04:25:57 1.300
  @@ -171,9 +171,8 @@
   long _stksize = 32768;
   #endif
   
  -#ifdef __EMX__
  +#ifdef USE_OS2_SCOREBOARD
   /* Add MMAP style functionality to OS/2 */
  -#ifdef USE_MMAP_SCOREBOARD
   #define INCL_DOSMEMMGR
   #include 
   #include 
  @@ -181,7 +180,6 @@
   caddr_t create_shared_heap(const char *, size_t);
   caddr_t get_shared_heap(const char *);
   #endif
  -#endif
   
   DEF_Explain
   
  @@ -1320,8 +1318,6 @@
* malloc. But let the routines that follow, think that you have
* shared memory (so they use memcpy etc.)
*/
  -#undef USE_MMAP_SCOREBOARD
  -#define USE_MMAP_SCOREBOARD 1
   
   void reinit_scoreboard(pool *p)
   {
  @@ -1343,20 +1339,55 @@
   
   
   #else /* MULTITHREAD */
  -#if defined(USE_MMAP_SCOREBOARD)
  +#if defined(USE_OS2_SCOREBOARD)
   
  -#ifdef QNX
  -static void cleanup_shared_mem(void *d)
  +/* The next two routines are used to access shared memory under OS/2.  */
  +/* This requires EMX v09c to be installed.   */
  +
  +caddr_t create_shared_heap(const char *name, size_t size)
   {
  -shm_unlink(scoreboard_fname);
  +ULONG rc;
  +void *mem;
  +Heap_t h;
  +
  +rc = DosAllocSharedMem(&mem, name, size,
  +PAG_COMMIT | PAG_READ | PAG_WRITE);
  +if (rc != 0)
  + return NULL;
  +h = _ucreate(mem, size, !_BLOCK_CLEAN, _HEAP_REGULAR | _HEAP_SHARED,
  +  NULL, NULL);
  +if (h == NULL)
  + DosFreeMem(mem);
  +return (caddr_t) h;
  +}
  +
  +caddr_t get_shared_heap(const char *Name)
  +{
  +
  +PVOID BaseAddress;   /* Pointer to the base address of
  +the shared memory object */
  +ULONG AttributeFlags;/* F

cvs commit: apache-2.0/docs page_io

1998-03-08 Thread marc
marc98/03/07 20:22:39

  Modified:docs page_io
  Log:
  The first snow in months.
  
  Revision  ChangesPath
  1.5   +2 -1  apache-2.0/docs/page_io
  
  Index: page_io
  ===
  RCS file: /export/home/cvs/apache-2.0/docs/page_io,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- page_io   1998/03/08 04:12:37 1.4
  +++ page_io   1998/03/08 04:22:39 1.5
  @@ -102,7 +102,8 @@
 const struct iovec *hdtrl, int flags);
   
 (allows you to add headers and trailers in the form of iovec
  -  structs)
  +  structs)  Marc has a man page; ask if you want a copy.  Not included
  +  due to copyright issues.
   
   Windows NT:
   
  
  
  


cvs commit: apache-2.0/docs process_model

1998-03-08 Thread marc
marc98/03/07 20:18:19

  Added:   docs process_model
  Log:
  Misc notes on process model stuff.
  
  Revision  ChangesPath
  1.1  apache-2.0/docs/process_model
  
  Index: process_model
  ===
  See Dean's full proposal in process-model.html
  
  
  
  There is a decent discussion of Win NT completion ports at:
  
  http://premium.microsoft.com/msdn/library/techart/html/servrapp.htm
  
  and a so-so discussion of Win32 multithreading performance at: 
  
  http://premium.microsoft.com/msdn/library/techart/html/threadli.htm
  
  The latter can be a bit trivial (eg. IO bounds tasks generally work better
  when concurrently executed in multiple threads, CPU bound tasks work best
  when serialized.  duh.) but has some useful stuff in.
  
  It appears that the best way for static content on NT is to use
  TransmitFile, completion ports, plus a cache of file handles.  Win32
  doesn't support all of that, but that isn't a big deal.
  
  Completion ports appear to be able to map into async IO (ie. aio_* 
  stuff) on Unix fine, however from what I understand some systems don't
  implement AIO for sockets.
  
  
  


cvs commit: apache-2.0/docs page_io

1998-03-08 Thread marc
marc98/03/07 20:12:37

  Modified:docs page_io
  Log:
  A few more comments.  They don't entirely belong in page_io, but
  they are on related topics so they can live there for now.
  
  Revision  ChangesPath
  1.4   +54 -0 apache-2.0/docs/page_io
  
  Index: page_io
  ===
  RCS file: /export/home/cvs/apache-2.0/docs/page_io,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- page_io   1998/03/08 03:21:00 1.3
  +++ page_io   1998/03/08 04:12:37 1.4
  @@ -73,6 +73,10 @@
   For details on HPUX and avoiding extra data copies, see
   .
   
  +(note that if you get the postscript version instead, you have to 
  +manually edit it to remove the front page before any version of 
  +ghostscript that I have used will read it)
  +
   
   
   I've been told by an engineer in Sun's TCP/IP group that zero-copy TCP
  @@ -85,3 +89,53 @@
   We currently get the 16k stuff for free by using mmap().  But sun's
   current code isn't smart enough to deal with our initial writev()
   of the headers and first part of the response.
  +
  +
  +
  +Systems that have a system call to efficiently send the contents of a 
  +descriptor across the network.  This is probably the single best way
  +to do static content on systems that support it.
  +
  +HPUX:
  +
  +  ssize_t sendfile(int s, int fd, off_t offset, size_t nbytes,
  +  const struct iovec *hdtrl, int flags);
  +
  +  (allows you to add headers and trailers in the form of iovec
  +  structs)
  +
  +Windows NT:
  +
  + BOOL TransmitFile( SOCKET hSocket, 
  + HANDLE hFile, 
  + DWORD nNumberOfBytesToWrite, 
  + DWORD nNumberOfBytesPerSend, 
  + LPOVERLAPPED lpOverlapped, 
  + LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers, 
  + DWORD dwFlags 
  +); 
  +
  + (does it start from the current position in the handle?  I would
  + hope so, or else it is pretty dumb.)
  +
  + lpTransmitBuffers allows for headers and trailers.
  +
  + Documentation at:
  +
  + http://premium.microsoft.com/msdn/library/sdkdoc/wsapiref_3pwy.htm
  + http://premium.microsoft.com/msdn/library/conf/html/sa8ff.htm
  +
  + Even less related to page based IO: just context switching:
  + AcceptEx does an accept(), and returns the start of the
  + input data.  see:
  +
  + 
http://premium.microsoft.com/msdn/library/sdkdoc/pdnds/sock2/wsapiref_17jm.htm
  +
  + What this means is you require one less syscall to do a
  + typical request, especially if you have a cache of handles
  + so you don't have to do an open or close.  Hmm.  Interesting
  + question: then, if TransmitFile starts from the current
  + position, you need a mutex around the seek and the
  + TransmitFile.  If not, you are just limited (eg. byte
  + ranges) in what you can use it for.
  +
  
  
  


cvs commit: apache-1.3/src/include .cvsignore

1998-03-08 Thread dgaudet
dgaudet 98/03/07 19:46:26

  Added:   src/include .cvsignore
  Log:
  autogenerated
  
  Revision  ChangesPath
  1.1  apache-1.3/src/include/.cvsignore
  
  Index: .cvsignore
  ===
  ap_config.h
  
  
  


cvs commit: apache-2.0/docs page_io

1998-03-08 Thread dgaudet
dgaudet 98/03/07 19:21:02

  Modified:docs page_io
  Log:
  more stuff
  
  Revision  ChangesPath
  1.3   +13 -0 apache-2.0/docs/page_io
  
  Index: page_io
  ===
  RCS file: /export/home/cvs/apache-2.0/docs/page_io,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- page_io   1998/03/08 03:13:04 1.2
  +++ page_io   1998/03/08 03:21:00 1.3
  @@ -72,3 +72,16 @@
   
   For details on HPUX and avoiding extra data copies, see
   .
  +
  +
  +
  +I've been told by an engineer in Sun's TCP/IP group that zero-copy TCP
  +in Solaris 2.6 occurs when:
  +
  +- you've got the right interface card (OC-12 ATM card I think)
  +- you use write()
  +- your write buffer is 16k aligned and a multiple of 16k in size
  +
  +We currently get the 16k stuff for free by using mmap().  But sun's
  +current code isn't smart enough to deal with our initial writev()
  +of the headers and first part of the response.
  
  
  


cvs commit: apache-2.0/docs page_io

1998-03-08 Thread dgaudet
dgaudet 98/03/07 19:13:05

  Modified:docs page_io
  Log:
  add an hpux link
  
  Revision  ChangesPath
  1.2   +4 -0  apache-2.0/docs/page_io
  
  Index: page_io
  ===
  RCS file: /export/home/cvs/apache-2.0/docs/page_io,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- page_io   1998/02/20 08:25:35 1.1
  +++ page_io   1998/03/08 03:13:04 1.2
  @@ -68,3 +68,7 @@
   
   Dean
   
  +
  +
  +For details on HPUX and avoiding extra data copies, see
  +.
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c

1998-03-08 Thread dgaudet
dgaudet 98/03/07 18:50:15

  Modified:src/modules/standard mod_rewrite.c
  Log:
  defend against possible sh lameness
  
  Revision  ChangesPath
  1.89  +1 -1  apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.88
  retrieving revision 1.89
  diff -u -r1.88 -r1.89
  --- mod_rewrite.c 1998/03/06 13:47:40 1.88
  +++ mod_rewrite.c 1998/03/08 02:50:13 1.89
  @@ -134,7 +134,7 @@
* Name: rewrite_module
* ConfigStart
   . ./helpers/find-dbm-lib
  -if [ "$found_dbm" = "1" ]; then
  +if [ "x$found_dbm" = "x1" ]; then
   echo "  enabling DBM support for mod_rewrite"
   else
   echo "  disabling DBM support for mod_rewrite"
  
  
  


cvs commit: apache-site/info apache_books.html

1998-03-08 Thread coar
coar98/03/07 17:55:03

  Modified:info apache_books.html
  Log:
Update with actual publication data.
  
  Revision  ChangesPath
  1.3   +7 -2  apache-site/info/apache_books.html
  
  Index: apache_books.html
  ===
  RCS file: /export/home/cvs/apache-site/info/apache_books.html,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- apache_books.html 1997/12/13 13:36:27 1.2
  +++ apache_books.html 1998/03/08 01:55:03 1.3
  @@ -24,12 +24,11 @@
  they where published and in alphabetical order.
   
   
  -1997
  +1998
   
 
 
  Apache Server for Dummies
  -   (not yet published)
  
  Author: Ken Coar
   
  @@ -43,6 +42,12 @@
  
 

  +
  +
  +
  +
  +1997
  +

 
  http://www.oreilly.com/catalog/apache/";