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 <[EMAIL PROTECTED]> Message-Id: <[EMAIL PROTECTED]> 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