You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by rb...@apache.org on 2001/09/11 00:53:59 UTC
cvs commit: apr/test aprtest.dsp
rbb 01/09/10 15:53:59
Modified: . apr.dsp
include/arch/win32 thread_mutex.h
locks/win32 thread_mutex.c
test aprtest.dsp
Log:
Add the new thread_mutex API to the Windows build. This works on
my Windows box, but I am using MSVC 7, so my computer doesn't use
project files anymore. The C code is good, but somebody may have
to hack the project files to make it all compile. This passes the
first half of the testlock test. The second half is for read/write
locks, which I will be implementing next.
Revision Changes Path
1.82 +24 -0 apr/apr.dsp
Index: apr.dsp
===================================================================
RCS file: /home/cvs/apr/apr.dsp,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -r1.81 -r1.82
--- apr.dsp 2001/08/28 21:45:04 1.81
+++ apr.dsp 2001/09/10 22:53:59 1.82
@@ -165,6 +165,14 @@
SOURCE=.\locks\win32\locks.c
# End Source File
# End Group
+
+SOURCE=.\locks\win32\thread_mutex.c
+# End Source File
+# End Group
+
+SOURCE=.\locks\win32\thread_rwlock.c
+# End Source File
+# End Group
# Begin Group "memory"
# PROP Default_Filter ""
@@ -429,6 +437,14 @@
# End Source File
# Begin Source File
+SOURCE=.\include\arch\win32\thread_mutex.h
+# End Source File
+# End Group
+
+SOURCE=.\include\arch\win32\thread_rwlock.h
+# End Source File
+# End Group
+
SOURCE=.\include\arch\win32\threadproc.h
# End Source File
# End Group
@@ -563,7 +579,15 @@
# End Source File
# Begin Source File
+SOURCE=.\include\apr_thread_mutex.h
+# End Source File
+# Begin Source File
+
SOURCE=.\include\apr_thread_proc.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\include\apr_thread_rwlock.h
# End Source File
# Begin Source File
1.2 +1 -0 apr/include/arch/win32/thread_mutex.h
Index: thread_mutex.h
===================================================================
RCS file: /home/cvs/apr/include/arch/win32/thread_mutex.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- thread_mutex.h 2001/09/04 23:28:50 1.1
+++ thread_mutex.h 2001/09/10 22:53:59 1.2
@@ -59,6 +59,7 @@
struct apr_thread_mutex_t {
apr_pool_t *pool;
+ CRITICAL_SECTION section;
};
#endif /* THREAD_MUTEX_H */
1.2 +23 -7 apr/locks/win32/thread_mutex.c
Index: thread_mutex.c
===================================================================
RCS file: /home/cvs/apr/locks/win32/thread_mutex.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- thread_mutex.c 2001/09/04 23:28:51 1.1
+++ thread_mutex.c 2001/09/10 22:53:59 1.2
@@ -56,23 +56,39 @@
#include "apr_private.h"
#include "apr_general.h"
#include "apr_strings.h"
-#include "win32/thread_mutex.h"
+#include "thread_mutex.h"
+#include "apr_thread_mutex.h"
#include "apr_portable.h"
static apr_status_t thread_mutex_cleanup(void *data)
{
- return APR_ENOTIMPL;
+ apr_thread_mutex_t *lock = data;
+
+ DeleteCriticalSection(&lock->section);
+ return APR_SUCCESS;
}
APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex,
apr_pool_t *pool)
{
- return APR_ENOTIMPL;
+ SECURITY_ATTRIBUTES sec;
+ (*mutex) = (apr_thread_mutex_t *)apr_palloc(pool, sizeof(**mutex));
+
+ (*mutex)->pool = pool;
+ sec.nLength = sizeof(SECURITY_ATTRIBUTES);
+ sec.lpSecurityDescriptor = NULL;
+ sec.bInheritHandle = FALSE;
+
+ InitializeCriticalSection(&(*mutex)->section);
+ apr_pool_cleanup_register((*mutex)->pool, (*mutex), thread_mutex_cleanup,
+ apr_pool_cleanup_null);
+ return APR_SUCCESS;
}
APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex)
{
- return APR_ENOTIMPL;
+ EnterCriticalSection(&mutex->section);
+ return APR_SUCCESS;
}
APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex)
@@ -82,11 +98,11 @@
APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex)
{
- return APR_ENOTIMPL;
+ LeaveCriticalSection(&mutex->section);
+ return APR_SUCCESS;
}
APR_DECLARE(apr_status_t) apr_thread_mutex_destroy(apr_thread_mutex_t *mutex)
{
- return APR_ENOTIMPL;
+ return apr_pool_cleanup_run(mutex->pool, mutex, thread_mutex_cleanup);
}
-
1.12 +4 -0 apr/test/aprtest.dsp
Index: aprtest.dsp
===================================================================
RCS file: /home/cvs/apr/test/aprtest.dsp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- aprtest.dsp 2001/07/27 18:37:11 1.11
+++ aprtest.dsp 2001/09/10 22:53:59 1.12
@@ -124,6 +124,10 @@
# End Source File
# Begin Source File
+SOURCE=.\testlock.c
+# End Source File
+# Begin Source File
+
SOURCE=.\testmmap.c
# End Source File
# Begin Source File
Re: cvs commit: apr/test aprtest.dsp
Posted by Greg Stein <gs...@lyra.org>.
On Mon, Sep 10, 2001 at 10:53:59PM -0000, rbb@apache.org wrote:
> rbb 01/09/10 15:53:59
>
> Modified: . apr.dsp
> include/arch/win32 thread_mutex.h
> locks/win32 thread_mutex.c
> test aprtest.dsp
> Log:
> Add the new thread_mutex API to the Windows build. This works on
> my Windows box, but I am using MSVC 7, so my computer doesn't use
> project files anymore. The C code is good, but somebody may have
> to hack the project files to make it all compile. This passes the
> first half of the testlock test. The second half is for read/write
> locks, which I will be implementing next.
>...
> APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex,
> apr_pool_t *pool)
> {
> - return APR_ENOTIMPL;
> + SECURITY_ATTRIBUTES sec;
> + (*mutex) = (apr_thread_mutex_t *)apr_palloc(pool, sizeof(**mutex));
> +
> + (*mutex)->pool = pool;
> + sec.nLength = sizeof(SECURITY_ATTRIBUTES);
> + sec.lpSecurityDescriptor = NULL;
> + sec.bInheritHandle = FALSE;
> +
> + InitializeCriticalSection(&(*mutex)->section);
> + apr_pool_cleanup_register((*mutex)->pool, (*mutex), thread_mutex_cleanup,
> + apr_pool_cleanup_null);
> + return APR_SUCCESS;
> }
"sec" is unused. All that can stuff can go...
Cheers,
-g
--
Greg Stein, http://www.lyra.org/