You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by go...@apache.org on 2007/05/24 01:48:35 UTC
svn commit: r541120 - in /perl/modperl/trunk: ./ lib/ModPerl/ t/apr-ext/
t/apr/ t/lib/TestAPRlib/ t/response/TestAPR/ xs/APR/ThreadRWLock/ xs/maps/
Author: gozer
Date: Wed May 23 16:48:34 2007
New Revision: 541120
URL: http://svn.apache.org/viewvc?view=rev&rev=541120
Log:
add APR::ThreadRWLock to expose apr_thread_rwlock_t
Reviewed-By: gozer
Submitted-By: Torsten Foertsch <to...@gmx.net>
Message-Id: <20...@gmx.net>
Added:
perl/modperl/trunk/t/apr-ext/threadrwlock.t
perl/modperl/trunk/t/lib/TestAPRlib/threadrwlock.pm
perl/modperl/trunk/t/response/TestAPR/threadrwlock.pm
perl/modperl/trunk/xs/APR/ThreadRWLock/
perl/modperl/trunk/xs/APR/ThreadRWLock/APR__ThreadRWLock.h
Modified:
perl/modperl/trunk/Changes
perl/modperl/trunk/lib/ModPerl/TypeMap.pm
perl/modperl/trunk/t/apr/ (props changed)
perl/modperl/trunk/xs/maps/apr_functions.map
perl/modperl/trunk/xs/maps/apr_types.map
Modified: perl/modperl/trunk/Changes
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/Changes?view=diff&rev=541120&r1=541119&r2=541120
==============================================================================
--- perl/modperl/trunk/Changes (original)
+++ perl/modperl/trunk/Changes Wed May 23 16:48:34 2007
@@ -12,6 +12,9 @@
=item 2.0.4-dev
+Expose apr_thread_rwlock_t with the APR::ThreadRWLock module
+[Torsten Foertsch]
+
Don't waste an extra interpreter anymore under threaded MPMs when using a
modperl handler [Torsten Foertsch]
Modified: perl/modperl/trunk/lib/ModPerl/TypeMap.pm
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/lib/ModPerl/TypeMap.pm?view=diff&rev=541120&r1=541119&r2=541120
==============================================================================
--- perl/modperl/trunk/lib/ModPerl/TypeMap.pm (original)
+++ perl/modperl/trunk/lib/ModPerl/TypeMap.pm Wed May 23 16:48:34 2007
@@ -413,6 +413,7 @@
apr_lib.h
apr_general.h
apr_signal.h
+apr_thread_rwlock.h
util_script.h
};
Propchange: perl/modperl/trunk/t/apr/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed May 23 16:48:34 2007
@@ -16,6 +16,7 @@
string.t
table.t
threadmutex.t
+threadrwlock.t
uri.t
util.t
uuid.t
Added: perl/modperl/trunk/t/apr-ext/threadrwlock.t
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/t/apr-ext/threadrwlock.t?view=auto&rev=541120
==============================================================================
--- perl/modperl/trunk/t/apr-ext/threadrwlock.t (added)
+++ perl/modperl/trunk/t/apr-ext/threadrwlock.t Wed May 23 16:48:34 2007
@@ -0,0 +1,11 @@
+#!perl -T
+
+use strict;
+use warnings FATAL => 'all';
+use Apache::Test;
+
+use TestAPRlib::threadrwlock;
+
+plan tests => TestAPRlib::threadrwlock::num_of_tests(), need_threads;
+
+TestAPRlib::threadrwlock::test();
Added: perl/modperl/trunk/t/lib/TestAPRlib/threadrwlock.pm
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/t/lib/TestAPRlib/threadrwlock.pm?view=auto&rev=541120
==============================================================================
--- perl/modperl/trunk/t/lib/TestAPRlib/threadrwlock.pm (added)
+++ perl/modperl/trunk/t/lib/TestAPRlib/threadrwlock.pm Wed May 23 16:48:34 2007
@@ -0,0 +1,39 @@
+package TestAPRlib::threadrwlock;
+
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestUtil;
+
+use APR::Const -compile => qw(EBUSY SUCCESS);
+use APR::Pool();
+
+sub num_of_tests {
+ return 5;
+}
+
+sub test {
+
+ require APR::ThreadRWLock;
+
+ my $pool = APR::Pool->new();
+ my $mutex = APR::ThreadRWLock->new($pool);
+
+ ok $mutex;
+
+ ok t_cmp($mutex->rdlock, APR::Const::SUCCESS,
+ 'rdlock == APR::Const::SUCCESS');
+
+ ok t_cmp($mutex->unlock, APR::Const::SUCCESS,
+ 'unlock == APR::Const::SUCCESS');
+
+ ok t_cmp($mutex->wrlock, APR::Const::SUCCESS,
+ 'wrlock == APR::Const::SUCCESS');
+
+ ok t_cmp($mutex->unlock, APR::Const::SUCCESS,
+ 'unlock == APR::Const::SUCCESS');
+
+}
+
+1;
Added: perl/modperl/trunk/t/response/TestAPR/threadrwlock.pm
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/t/response/TestAPR/threadrwlock.pm?view=auto&rev=541120
==============================================================================
--- perl/modperl/trunk/t/response/TestAPR/threadrwlock.pm (added)
+++ perl/modperl/trunk/t/response/TestAPR/threadrwlock.pm Wed May 23 16:48:34 2007
@@ -0,0 +1,24 @@
+package TestAPR::threadrwlock;
+
+use strict;
+use warnings FATAL => 'all';
+
+use Apache::Test;
+use Apache::TestUtil;
+
+use Apache2::Const -compile => 'OK';
+
+use TestAPRlib::threadrwlock;
+
+sub handler {
+ my $r = shift;
+
+ my $tests = TestAPRlib::threadrwlock::num_of_tests();
+ plan $r, tests => $tests, need_threads;
+
+ TestAPRlib::threadrwlock::test();
+
+ Apache2::Const::OK;
+}
+
+1;
Added: perl/modperl/trunk/xs/APR/ThreadRWLock/APR__ThreadRWLock.h
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/xs/APR/ThreadRWLock/APR__ThreadRWLock.h?view=auto&rev=541120
==============================================================================
--- perl/modperl/trunk/xs/APR/ThreadRWLock/APR__ThreadRWLock.h (added)
+++ perl/modperl/trunk/xs/APR/ThreadRWLock/APR__ThreadRWLock.h Wed May 23 16:48:34 2007
@@ -0,0 +1,29 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define apr_thread_rwlock_DESTROY apr_thread_rwlock_destroy
+
+static MP_INLINE
+SV *mpxs_apr_thread_rwlock_create(pTHX_ SV *classname, SV *p_sv)
+{
+ apr_pool_t *p = mp_xs_sv2_APR__Pool(p_sv);
+ apr_thread_rwlock_t *rwlock = NULL;
+ SV *rwlock_sv;
+ (void)apr_thread_rwlock_create(&rwlock, p);
+ rwlock_sv = sv_setref_pv(NEWSV(0, 0), "APR::ThreadRWLock", (void*)rwlock);
+ mpxs_add_pool_magic(rwlock_sv, p_sv);
+ return rwlock_sv;
+}
Modified: perl/modperl/trunk/xs/maps/apr_functions.map
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/xs/maps/apr_functions.map?view=diff&rev=541120&r1=541119&r2=541120
==============================================================================
--- perl/modperl/trunk/xs/maps/apr_functions.map (original)
+++ perl/modperl/trunk/xs/maps/apr_functions.map Wed May 23 16:48:34 2007
@@ -397,9 +397,9 @@
apr_thread_cond_pool_get
apr_thread_cond_timedwait
--MODULE=APR::ThreadRWLock
- apr_thread_rwlock_create
- apr_thread_rwlock_destroy
+MODULE=APR::ThreadRWLock PREFIX=apr_thread_rwlock_
+ SV *:apr_thread_rwlock_create | mpxs_ | SV *:classname, SV *:p_sv | new
+ void:apr_thread_rwlock_destroy | | | apr_thread_rwlock_DESTROY
apr_thread_rwlock_rdlock
apr_thread_rwlock_tryrdlock
apr_thread_rwlock_trywrlock
Modified: perl/modperl/trunk/xs/maps/apr_types.map
URL: http://svn.apache.org/viewvc/perl/modperl/trunk/xs/maps/apr_types.map?view=diff&rev=541120&r1=541119&r2=541120
==============================================================================
--- perl/modperl/trunk/xs/maps/apr_types.map (original)
+++ perl/modperl/trunk/xs/maps/apr_types.map Wed May 23 16:48:34 2007
@@ -102,7 +102,7 @@
struct apr_thread_mutex_t | APR::ThreadMutex
struct apr_thread_once_t | UNDEFINED
struct apr_thread_cond_t | UNDEFINED
-struct apr_thread_rwlock_t | UNDEFINED
+struct apr_thread_rwlock_t | APR::ThreadRWLock
#signal stuff
apr_signum_t | UNDEFINED