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