You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by bj...@locus.apache.org on 2000/08/06 16:55:54 UTC
cvs commit: apache-2.0/src/lib/apr/file_io/os2 fileio.h open.c pipe.c
bjh 00/08/06 07:55:54
Modified: src/lib/apr/file_io/os2 fileio.h open.c pipe.c
Log:
OS/2: Avoid unnecessary calls to set pipe blocking state.
Revision Changes Path
1.22 +1 -0 apache-2.0/src/lib/apr/file_io/os2/fileio.h
Index: fileio.h
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/os2/fileio.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- fileio.h 2000/08/06 06:07:02 1.21
+++ fileio.h 2000/08/06 14:55:54 1.22
@@ -78,6 +78,7 @@
int timeout;
int pipe;
HEV pipeSem;
+ enum { BLK_UNKNOWN, BLK_OFF, BLK_ON } blocking;
/* Stuff for buffered mode */
char *buffer;
1.31 +1 -0 apache-2.0/src/lib/apr/file_io/os2/open.c
Index: open.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/os2/open.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- open.c 2000/08/02 05:25:47 1.30
+++ open.c 2000/08/06 14:55:54 1.31
@@ -80,6 +80,7 @@
dafile->eof_hit = FALSE;
dafile->buffer = NULL;
dafile->flags = flag;
+ dafile->blocking = BLK_ON;
if ((flag & APR_READ) && (flag & APR_WRITE)) {
mflags |= OPEN_ACCESS_READWRITE;
1.26 +11 -2 apache-2.0/src/lib/apr/file_io/os2/pipe.c
Index: pipe.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/os2/pipe.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- pipe.c 2000/08/02 05:25:47 1.25
+++ pipe.c 2000/08/06 14:55:54 1.26
@@ -120,6 +120,7 @@
(*in)->flags = 0;
(*in)->pipe = 1;
(*in)->timeout = -1;
+ (*in)->blocking = BLK_ON;
apr_register_cleanup(cont, *in, apr_file_cleanup, apr_null_cleanup);
(*out) = (apr_file_t *)apr_palloc(cont, sizeof(apr_file_t));
@@ -131,6 +132,7 @@
(*out)->flags = 0;
(*out)->pipe = 1;
(*out)->timeout = -1;
+ (*out)->blocking = BLK_ON;
apr_register_cleanup(cont, *out, apr_file_cleanup, apr_null_cleanup);
return APR_SUCCESS;
@@ -150,11 +152,18 @@
{
if (thepipe->pipe == 1) {
thepipe->timeout = timeout;
+
if (thepipe->timeout >= 0) {
- return APR_OS2_STATUS(DosSetNPHState (thepipe->filedes, NP_NOWAIT));
+ if (thepipe->blocking != BLK_OFF) {
+ thepipe->blocking = BLK_OFF;
+ return APR_OS2_STATUS(DosSetNPHState(thepipe->filedes, NP_NOWAIT));
+ }
}
else if (thepipe->timeout == -1) {
- return APR_OS2_STATUS(DosSetNPHState (thepipe->filedes, NP_WAIT));
+ if (thepipe->blocking != BLK_ON) {
+ thepipe->blocking = BLK_ON;
+ return APR_OS2_STATUS(DosSetNPHState(thepipe->filedes, NP_WAIT));
+ }
}
}
return APR_EINVAL;