rbb 99/06/18 12:11:20
Modified: apr/include apr_win.h apr/test client.dsp server.dsp test.dsw testfile.dsp testproc.dsp testsock.dsp testthread.c timetest.dsp apr/threadproc/win32 thread.c include apr_lock.h apr_thread_proc.h Added: apr/locks/win32 locks.c locks.def locks.dsp locks.h Log: Initial locking code for windows, and fixes for windows based threads. Revision Changes Path 1.4 +1 -0 apache-apr/apr/include/apr_win.h Index: apr_win.h =================================================================== RCS file: /home/cvs/apache-apr/apr/include/apr_win.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- apr_win.h 1999/06/03 19:43:50 1.3 +++ apr_win.h 1999/06/18 19:10:58 1.4 @@ -76,6 +76,7 @@ #define API_EXPORT(x) x #define API_EXPORT_NONSTD(x) x +#define API_THREAD_FUNC __stdcall #define strcasecmp(s1, s2) stricmp(s1, s2) #define sleep(t) Sleep(t * 1000) 1.1 apache-apr/apr/locks/win32/locks.c Index: locks.c =================================================================== /* ==================================================================== * Copyright (c) 1999 The Apache Group. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed by the Apache Group * for use in the Apache HTTP server project (http://www.apache.org/)." * * 4. The names "Apache Server" and "Apache Group" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please contact * [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by the Apache Group * for use in the Apache HTTP server project (http://www.apache.org/)." * * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Group. * For more information on the Apache Group and the Apache HTTP server * project, please see <http://www.apache.org/>. * */ #include "apr_general.h" #include "apr_lib.h" #include "locks.h" ap_status_t ap_create_lock(ap_context_t *cont, ap_locktype_e type, char *fname, struct lock_t **lock) { struct lock_t *newlock; SECURITY_ATTRIBUTES sec; newlock = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t)); newlock->cntxt = cont; newlock->fname = strdup(fname); sec.nLength = sizeof(SECURITY_ATTRIBUTES); sec.lpSecurityDescriptor = NULL; if (type == APR_CROSS_PROCESS || type == APR_LOCKALL) { sec.bInheritHandle = TRUE; } else { sec.bInheritHandle = FALSE; } newlock->mutex = CreateMutex(&sec, FALSE, fname); *lock = newlock; return APR_SUCCESS; } ap_status_t ap_child_init_lock(ap_context_t *cont, char *fname, struct lock_t **lock) { (*lock) = (struct lock_t *)ap_palloc(cont, sizeof(struct lock_t)); if ((*lock) == NULL) { return APR_ENOMEM; } (*lock)->fname = strdup(fname); (*lock)->mutex = OpenMutex(MUTEX_ALL_ACCESS, TRUE, fname); if ((*lock)->mutex == NULL) { return APR_EEXIST; } return APR_SUCCESS; } ap_status_t ap_lock(struct lock_t *lock) { DWORD rv; rv = WaitForSingleObject(lock->mutex, INFINITE); if (rv == WAIT_OBJECT_0 || rv == WAIT_ABANDONED) { return APR_SUCCESS; } if (rv == WAIT_TIMEOUT) { return APR_TIMEUP; } return APR_EEXIST; } ap_status_t ap_unlock(struct lock_t *lock) { if (ReleaseMutex(lock->mutex) == 0) { return APR_EEXIST; } return APR_SUCCESS; } ap_status_t ap_destroy_lock(struct lock_t *lock) { if (CloseHandle(lock->mutex) == 0) { return APR_EEXIST; } return APR_SUCCESS; } 1.1 apache-apr/apr/locks/win32/locks.def Index: locks.def =================================================================== ; locks.def : LIBRARY locks DESCRIPTION '' EXPORTS ; Add new API calls to the end of this list. ap_create_lock @1 ap_lock @2 ap_unlock @3 ap_destroy_lock @4 ap_child_init_lock @5 1.1 apache-apr/apr/locks/win32/locks.dsp Index: locks.dsp =================================================================== # Microsoft Developer Studio Project File - Name="locks" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 5.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=locks - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "locks.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "locks.mak" CFG="locks - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "locks - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "locks - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "locks - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 !ELSEIF "$(CFG)" == "locks - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I "..\..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\lib\debug\lib.lib ..\..\misc\win32\debug\misc.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept !ENDIF # Begin Target # Name "locks - Win32 Release" # Name "locks - Win32 Debug" # Begin Source File SOURCE=.\locks.c # End Source File # Begin Source File SOURCE=.\locks.def # End Source File # Begin Source File SOURCE=.\locks.h # End Source File # End Target # End Project 1.1 apache-apr/apr/locks/win32/locks.h Index: locks.h =================================================================== /* ==================================================================== * Copyright (c) 1999 The Apache Group. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed by the Apache Group * for use in the Apache HTTP server project (http://www.apache.org/)." * * 4. The names "Apache Server" and "Apache Group" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please contact * [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by the Apache Group * for use in the Apache HTTP server project (http://www.apache.org/)." * * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Group. * For more information on the Apache Group and the Apache HTTP server * project, please see <http://www.apache.org/>. * */ #ifndef LOCKS_H #define LOCKS_H #include "apr_lock.h" struct lock_t { ap_context_t *cntxt; HANDLE mutex; char *fname; }; #endif /* LOCKS_H */ 1.3 +2 -2 apache-apr/apr/test/client.dsp Index: client.dsp =================================================================== RCS file: /home/cvs/apache-apr/apr/test/client.dsp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- client.dsp 1999/06/17 18:56:08 1.2 +++ client.dsp 1999/06/18 19:11:00 1.3 @@ -49,7 +49,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "client - Win32 Debug" @@ -73,7 +73,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\debug\locks.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF 1.3 +2 -2 apache-apr/apr/test/server.dsp Index: server.dsp =================================================================== RCS file: /home/cvs/apache-apr/apr/test/server.dsp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- server.dsp 1999/06/17 18:56:09 1.2 +++ server.dsp 1999/06/18 19:11:00 1.3 @@ -49,7 +49,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "server - Win32 Debug" @@ -73,7 +73,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\debug\locks.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF 1.3 +12 -0 apache-apr/apr/test/test.dsw Index: test.dsw =================================================================== RCS file: /home/cvs/apache-apr/apr/test/test.dsw,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- test.dsw 1999/06/17 18:56:10 1.2 +++ test.dsw 1999/06/18 19:11:00 1.3 @@ -69,6 +69,18 @@ ############################################################################### +Project: "testthread"=".\testthread.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + Project: "timetest"=".\timetest.dsp" - Package Owner=<4> Package=<5> 1.5 +2 -2 apache-apr/apr/test/testfile.dsp Index: testfile.dsp =================================================================== RCS file: /home/cvs/apache-apr/apr/test/testfile.dsp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- testfile.dsp 1999/06/17 18:56:10 1.4 +++ testfile.dsp 1999/06/18 19:11:01 1.5 @@ -50,7 +50,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\network_io\win32\Debug kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /debug /machine:I386 +# ADD LINK32 ..\network_io\win32\Debug ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 !ELSEIF "$(CFG)" == "testfile - Win32 Debug" @@ -74,7 +74,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\debug\locks.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF 1.4 +2 -2 apache-apr/apr/test/testproc.dsp Index: testproc.dsp =================================================================== RCS file: /home/cvs/apache-apr/apr/test/testproc.dsp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- testproc.dsp 1999/06/17 18:56:11 1.3 +++ testproc.dsp 1999/06/18 19:11:01 1.4 @@ -50,7 +50,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\network_io\win32\Debug kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 ..\network_io\win32\Debug ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "testproc - Win32 Debug" @@ -74,7 +74,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\debug\locks.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF 1.3 +2 -2 apache-apr/apr/test/testsock.dsp Index: testsock.dsp =================================================================== RCS file: /home/cvs/apache-apr/apr/test/testsock.dsp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- testsock.dsp 1999/06/17 18:56:11 1.2 +++ testsock.dsp 1999/06/18 19:11:02 1.3 @@ -50,7 +50,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 ..\network_io\win32\Debug kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 ..\network_io\win32\Debug ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "testsock - Win32 Debug" @@ -74,7 +74,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 ..\network_io\win32\Debug\network_io.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\network_io\win32\Debug\network_io.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\debug\locks.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF 1.7 +33 -19 apache-apr/apr/test/testthread.c Index: testthread.c =================================================================== RCS file: /home/cvs/apache-apr/apr/test/testthread.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- testthread.c 1999/05/25 17:03:54 1.6 +++ testthread.c 1999/06/18 19:11:02 1.7 @@ -62,11 +62,18 @@ #include <unistd.h> #endif + +void * API_THREAD_FUNC thread_func1(void *data); +void * API_THREAD_FUNC thread_func2(void *data); +void * API_THREAD_FUNC thread_func3(void *data); +void * API_THREAD_FUNC thread_func4(void *data); + + ap_lock_t *thread_lock; ap_context_t *context; int x = 0; -void *thread_func1(void *data) +void * API_THREAD_FUNC thread_func1(void *data) { int i; for (i = 0; i < 10000; i++) { @@ -74,9 +81,10 @@ x++; ap_unlock(thread_lock); } + return NULL; } -void *thread_func2(void *data) +void * API_THREAD_FUNC thread_func2(void *data) { int i; for (i = 0; i < 10000; i++) { @@ -84,9 +92,10 @@ x++; ap_unlock(thread_lock); } + return NULL; } -void *thread_func3(void *data) +void * API_THREAD_FUNC thread_func3(void *data) { int i; for (i = 0; i < 10000; i++) { @@ -94,9 +103,10 @@ x++; ap_unlock(thread_lock); } + return NULL; } -void *thread_func4(void *data) +void * API_THREAD_FUNC thread_func4(void *data) { int i; for (i = 0; i < 10000; i++) { @@ -104,6 +114,7 @@ x++; ap_unlock(thread_lock); } + return NULL; } int main() @@ -112,8 +123,10 @@ ap_thread_t *t2; ap_thread_t *t3; ap_thread_t *t4; - ap_threadattr_t *tattr; - ap_status_t st; + ap_status_t s1; + ap_status_t s2; + ap_status_t s3; + ap_status_t s4; fprintf(stdout, "Initializing the context......."); if (ap_create_context(NULL, NULL, &context) != APR_SUCCESS) { @@ -123,38 +136,39 @@ fprintf(stdout, "OK\n"); fprintf(stdout, "Initializing the lock......."); - st = ap_create_lock(context, APR_INTRAPROCESS, "lock.file", &thread_lock); - if (st != APR_SUCCESS) { + s1 = ap_create_lock(context, APR_INTRAPROCESS, "lock.file", &thread_lock); + if (s1 != APR_SUCCESS) { fprintf(stderr, "Could not create lock\n"); exit(-1); } fprintf(stdout, "OK\n"); fprintf(stdout, "Starting all the threads......."); - ap_create_thread(context, NULL, thread_func1, NULL, &t1); - ap_create_thread(context, NULL, thread_func2, NULL, &t2); - ap_create_thread(context, NULL, thread_func3, NULL, &t3); - ap_create_thread(context, NULL, thread_func4, NULL, &t4); - if (t1 == NULL || t2 == NULL || t3 == NULL || t4 == NULL) { + s1 = ap_create_thread(context, NULL, thread_func1, NULL, &t1); + s2 = ap_create_thread(context, NULL, thread_func2, NULL, &t2); + s3 = ap_create_thread(context, NULL, thread_func3, NULL, &t3); + s4 = ap_create_thread(context, NULL, thread_func4, NULL, &t4); + if (s1 != APR_SUCCESS || s2 != APR_SUCCESS || + s3 != APR_SUCCESS || s4 != APR_SUCCESS) { fprintf(stderr, "Error starting thread\n"); exit(-1); } fprintf(stdout, "OK\n"); fprintf(stdout, "Waiting for threads to exit......."); - ap_thread_join(t1, &st); - ap_thread_join(t2, &st); - ap_thread_join(t3, &st); - ap_thread_join(t4, &st); + ap_thread_join(t1, &s1); + ap_thread_join(t2, &s2); + ap_thread_join(t3, &s3); + ap_thread_join(t4, &s4); fprintf (stdout, "OK\n"); fprintf(stdout, "Checking if locks worked......."); if (x != 40000) { - fprintf(stderr, "The locks didn't work????\n"); + fprintf(stderr, "The locks didn't work???? %d\n", x); } else { fprintf(stdout, "Everything is working!\n"); } - exit(1); + return 1; } 1.2 +2 -2 apache-apr/apr/test/timetest.dsp Index: timetest.dsp =================================================================== RCS file: /home/cvs/apache-apr/apr/test/timetest.dsp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- timetest.dsp 1999/06/17 18:56:13 1.1 +++ timetest.dsp 1999/06/18 19:11:03 1.2 @@ -50,7 +50,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "timetest - Win32 Debug" @@ -74,7 +74,7 @@ # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\lib\Debug\lib.lib ..\misc\win32\Debug\misc.lib ..\threadproc\win32\Debug\threadproc.lib ..\file_io\win32\Debug\file_io.lib ..\time\win32\Debug\time.lib ..\locks\win32\debug\locks.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF 1.2 +6 -2 apache-apr/apr/threadproc/win32/thread.c Index: thread.c =================================================================== RCS file: /home/cvs/apache-apr/apr/threadproc/win32/thread.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- thread.c 1999/06/08 15:38:11 1.1 +++ thread.c 1999/06/18 19:11:15 1.2 @@ -57,6 +57,7 @@ #include "apr_thread_proc.h" #include "apr_general.h" #include "apr_lib.h" +#include "apr_win.h" #include <process.h> @@ -92,6 +93,7 @@ { ap_status_t stat; unsigned temp; + int lasterror; (*new) = (struct thread_t *)ap_palloc(cont, sizeof(struct thread_t)); @@ -109,11 +111,13 @@ /* Use 0 for Thread Stack Size, because that will default the stack to the * same size as the calling thread. */ - if (((*new)->td = (HANDLE *)_beginthreadex(func, 0, data, NULL, 0, &temp)) == 0) { + if (((*new)->td = (HANDLE *)_beginthreadex(NULL, 0, (unsigned int (API_THREAD_FUNC *)(void *))func, + data, 0, &temp)) == 0) { + lasterror = GetLastError(); return APR_EEXIST; } - if (attr->detach) { + if (attr && attr->detach) { CloseHandle((*new)->td); } 1.4 +1 -0 apache-apr/include/apr_lock.h Index: apr_lock.h =================================================================== RCS file: /home/cvs/apache-apr/include/apr_lock.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- apr_lock.h 1999/05/24 18:16:49 1.3 +++ apr_lock.h 1999/06/18 19:11:18 1.4 @@ -72,6 +72,7 @@ ap_status_t ap_lock(ap_lock_t *); ap_status_t ap_unlock(ap_lock_t *); ap_status_t ap_destroy_lock(ap_lock_t *); +ap_status_t ap_child_init_lock(ap_context_t *, char *, ap_lock_t **); #ifdef __cplusplus } 1.15 +2 -1 apache-apr/include/apr_thread_proc.h Index: apr_thread_proc.h =================================================================== RCS file: /home/cvs/apache-apr/include/apr_thread_proc.h,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- apr_thread_proc.h 1999/06/15 17:43:42 1.14 +++ apr_thread_proc.h 1999/06/18 19:11:18 1.15 @@ -59,6 +59,7 @@ #include "apr_file_io.h" #include "apr_general.h" #include "apr_errno.h" +#include "apr_win.h" #ifdef __cplusplus extern "C" { @@ -79,7 +80,7 @@ typedef struct threadkey_t ap_key_t; -typedef void *(*ap_thread_start_t)(void *); +typedef void *(API_THREAD_FUNC *ap_thread_start_t)(void *); /* Thread Function definitions */ ap_status_t ap_create_threadattr(ap_context_t *, ap_threadattr_t **);