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/11/13 00:44:42 UTC
svn commit: r594347 - in /perl/modperl/branches/threading: ./
t/response/TestModperl/ xs/ModPerl/Interpreter/ xs/maps/
xs/tables/current/Apache2/ xs/tables/current/ModPerl/
Author: gozer
Date: Mon Nov 12 15:44:37 2007
New Revision: 594347
URL: http://svn.apache.org/viewvc?rev=594347&view=rev
Log:
Expose modperl_interp_pool_t via ModPerl::InterpPool, modperl_tipool_t
via ModPerl::TiPool and modperl_tipool_config_t via ModPerl::TiPoolConfig
Reviewed-By: Gozer
Submitted-By: Torsten Foertsch <to...@gmx.net>
Message-Id: <20...@gmx.net>
Modified:
perl/modperl/branches/threading/Changes
perl/modperl/branches/threading/t/response/TestModperl/interpreter.pm
perl/modperl/branches/threading/xs/ModPerl/Interpreter/ModPerl__Interpreter.h
perl/modperl/branches/threading/xs/maps/modperl_functions.map
perl/modperl/branches/threading/xs/maps/modperl_structures.map
perl/modperl/branches/threading/xs/maps/modperl_types.map
perl/modperl/branches/threading/xs/tables/current/Apache2/StructureTable.pm
perl/modperl/branches/threading/xs/tables/current/ModPerl/FunctionTable.pm
Modified: perl/modperl/branches/threading/Changes
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/Changes?rev=594347&r1=594346&r2=594347&view=diff
==============================================================================
--- perl/modperl/branches/threading/Changes (original)
+++ perl/modperl/branches/threading/Changes Mon Nov 12 15:44:37 2007
@@ -12,6 +12,10 @@
=item 2.0.4-dev
+Expose modperl_interp_pool_t via ModPerl::InterpPool, modperl_tipool_t
+via ModPerl::TiPool and modperl_tipool_config_t via ModPerl::TiPoolConfig
+[Torsten Foertsch]
+
Expose modperl_interp_t via ModPerl::Interpreter [Torsten Foertsch]
PerlCleanupHandler are now registered with a subpool of $r->pool,
Modified: perl/modperl/branches/threading/t/response/TestModperl/interpreter.pm
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/t/response/TestModperl/interpreter.pm?rev=594347&r1=594346&r2=594347&view=diff
==============================================================================
--- perl/modperl/branches/threading/t/response/TestModperl/interpreter.pm (original)
+++ perl/modperl/branches/threading/t/response/TestModperl/interpreter.pm Mon Nov 12 15:44:37 2007
@@ -1,7 +1,5 @@
package TestModperl::interpreter;
-# Modperl::Util tests
-
use strict;
use warnings FATAL => 'all';
@@ -9,22 +7,68 @@
use Apache::TestUtil;
use ModPerl::Interpreter ();
+use ModPerl::InterpPool ();
+use ModPerl::TiPool ();
+use ModPerl::TiPoolConfig ();
+use Apache2::MPM ();
use Apache2::Const -compile => 'OK';
sub handler {
my $r = shift;
- plan $r, tests => 5;
-
- my $interp = ModPerl::Interpreter::current();
- print STDERR Dumper($interp); use Data::Dumper;
- ok t_cmp ref($interp), 'ModPerl::Interpreter';
-
- ok $interp->num_requests > 0;
- ok $interp->refcnt > 0;
- ok $interp->mip > 0;
- ok $interp->perl > 0;
+ my $is_threaded=Apache2::MPM->is_threaded;
+
+ plan $r, tests => $is_threaded?17:5;
+
+ my $interp = ModPerl::Interpreter->current;
+
+ ok t_cmp(ref($interp), 'ModPerl::Interpreter',
+ 'interp is a ModPerl::Interpreter');
+
+ ok t_cmp($$interp==${ModPerl::Interpreter::current()}, !!1,
+ 'ModPerl::Interpreter->current == ModPerl::Interpreter::current');
+
+ my $mip = $interp->mip;
+
+ ok t_cmp(ref($mip), 'ModPerl::InterpPool',
+ 'interp->mip is a ModPerl::InterpPool');
+
+ ok t_cmp(${$mip->server}==${$r->server}, !!1,
+ 'mip->server == r->server');
+
+ ok t_cmp(ref($mip->parent), 'ModPerl::Interpreter',
+ 'mip->parent is a ModPerl::Interpreter');
+
+ if($is_threaded) {
+ ok t_cmp($interp->perl!=0, !!1, 'interp->perl');
+ ok t_cmp($interp->num_requests>0, !!1, 'interp->num_requests');
+ ok t_cmp($interp->refcnt>0, !!1, 'interp->refcnt');
+
+ my $tipool = $mip->tipool;
+
+ ok t_cmp(ref($tipool), 'ModPerl::TiPool',
+ 'mip->tipool is a ModPerl::TiPool');
+
+ ok t_cmp($tipool->in_use!=0, !!1, 'tipool->in_use');
+
+ ok t_cmp($tipool->size!=0, !!1, 'tipool->size');
+
+ my $tipcfg = $tipool->cfg;
+
+ ok t_cmp(ref($tipcfg), 'ModPerl::TiPoolConfig',
+ 'tipool->cfg is a ModPerl::TiPoolConfig');
+
+ ok t_cmp($tipcfg->start!=0, !!1, 'tipcfg->start');
+
+ ok t_cmp($tipcfg->min_spare!=0, !!1, 'tipcfg->min_spare');
+
+ ok t_cmp($tipcfg->max_spare!=0, !!1, 'tipcfg->max_spare');
+
+ ok t_cmp($tipcfg->max!=0, !!1, 'tipcfg->max');
+
+ ok t_cmp($tipcfg->max_requests!=0, !!1, 'tipcfg->max_requests');
+ }
Apache2::Const::OK;
}
Modified: perl/modperl/branches/threading/xs/ModPerl/Interpreter/ModPerl__Interpreter.h
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/xs/ModPerl/Interpreter/ModPerl__Interpreter.h?rev=594347&r1=594346&r2=594347&view=diff
==============================================================================
--- perl/modperl/branches/threading/xs/ModPerl/Interpreter/ModPerl__Interpreter.h (original)
+++ perl/modperl/branches/threading/xs/ModPerl/Interpreter/ModPerl__Interpreter.h Mon Nov 12 15:44:37 2007
@@ -15,7 +15,7 @@
*/
static MP_INLINE
-modperl_interp_t *mpxs_ModPerl__Interpreter_current(pTHX)
+modperl_interp_t *mpxs_ModPerl__Interpreter_current(pTHX_ SV *class)
{
return MP_THX_INTERP_GET(aTHX);
}
Modified: perl/modperl/branches/threading/xs/maps/modperl_functions.map
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/xs/maps/modperl_functions.map?rev=594347&r1=594346&r2=594347&view=diff
==============================================================================
--- perl/modperl/branches/threading/xs/maps/modperl_functions.map (original)
+++ perl/modperl/branches/threading/xs/maps/modperl_functions.map Mon Nov 12 15:44:37 2007
@@ -164,4 +164,4 @@
mpxs_Apache2__RequestRec_allow_override_opts
MODULE=ModPerl::Interpreter
- mpxs_ModPerl__Interpreter_current
+ mpxs_ModPerl__Interpreter_current | | class=Nullsv
Modified: perl/modperl/branches/threading/xs/maps/modperl_structures.map
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/xs/maps/modperl_structures.map?rev=594347&r1=594346&r2=594347&view=diff
==============================================================================
--- perl/modperl/branches/threading/xs/maps/modperl_structures.map (original)
+++ perl/modperl/branches/threading/xs/maps/modperl_structures.map Mon Nov 12 15:44:37 2007
@@ -12,3 +12,29 @@
< refcnt
- tid
</modperl_interp_t>
+
+<modperl_interp_pool_t>
+< server
+< tipool
+< parent
+</modperl_interp_pool_t>
+
+<modperl_tipool_t>
+- tiplock
+- available
+- idle
+- busy
+< in_use
+< size
+- data
+< cfg
+- func
+</modperl_tipool_t>
+
+<modperl_tipool_config_t>
+< start
+< min_spare
+< max_spare
+< max
+< max_requests
+</modperl_tipool_config_t>
Modified: perl/modperl/branches/threading/xs/maps/modperl_types.map
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/xs/maps/modperl_types.map?rev=594347&r1=594346&r2=594347&view=diff
==============================================================================
--- perl/modperl/branches/threading/xs/maps/modperl_types.map (original)
+++ perl/modperl/branches/threading/xs/maps/modperl_types.map Mon Nov 12 15:44:37 2007
@@ -1,9 +1,11 @@
########## mod_perl types ##########
-struct modperl_filter_t | Apache2::OutputFilter
-struct modperl_interp_t | ModPerl::Interpreter
-modperl_interp_pool_t * | IV
-PerlInterpreter * | IV
+struct modperl_filter_t | Apache2::OutputFilter
+struct modperl_interp_t | ModPerl::Interpreter
+struct modperl_interp_pool_t | ModPerl::InterpPool
+struct modperl_tipool_t | ModPerl::TiPool
+struct modperl_tipool_config_t | ModPerl::TiPoolConfig
+PerlInterpreter * | IV
########## Perl types ##########
Modified: perl/modperl/branches/threading/xs/tables/current/Apache2/StructureTable.pm
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/xs/tables/current/Apache2/StructureTable.pm?rev=594347&r1=594346&r2=594347&view=diff
==============================================================================
--- perl/modperl/branches/threading/xs/tables/current/Apache2/StructureTable.pm (original)
+++ perl/modperl/branches/threading/xs/tables/current/Apache2/StructureTable.pm Mon Nov 12 15:44:37 2007
@@ -3366,6 +3366,93 @@
'name' => 'tid'
}
]
+ },
+ {
+ 'type' => 'modperl_interp_pool_t',
+ 'elts' => [
+ {
+ 'type' => 'server_rec *',
+ 'name' => 'server'
+ },
+ {
+ 'type' => 'modperl_tipool_t *',
+ 'name' => 'tipool'
+ },
+ {
+ 'type' => 'modperl_tipool_config_t *',
+ 'name' => 'tipool_cfg'
+ },
+ {
+ 'type' => 'modperl_interp_t *',
+ 'name' => 'parent'
+ }
+ ]
+ },
+ {
+ 'type' => 'modperl_tipool_t',
+ 'elts' => [
+ {
+ 'type' => 'perl_mutex',
+ 'name' => 'tiplock'
+ },
+ {
+ 'type' => 'perl_cond',
+ 'name' => 'available'
+ },
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'idle'
+ },
+ {
+ 'type' => 'modperl_list_t *',
+ 'name' => 'busy'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'in_use'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'size'
+ },
+ {
+ 'type' => 'void *',
+ 'name' => 'data'
+ },
+ {
+ 'type' => 'modperl_tipool_config_t *',
+ 'name' => 'cfg'
+ },
+ {
+ 'type' => 'modperl_tipool_vtbl_t *',
+ 'name' => 'func'
+ }
+ ]
+ },
+ {
+ 'type' => 'modperl_tipool_config_t',
+ 'elts' => [
+ {
+ 'type' => 'int',
+ 'name' => 'start'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'min_spare'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'max_spare'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'max'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'max_requests'
+ }
+ ]
}
];
Modified: perl/modperl/branches/threading/xs/tables/current/ModPerl/FunctionTable.pm
URL: http://svn.apache.org/viewvc/perl/modperl/branches/threading/xs/tables/current/ModPerl/FunctionTable.pm?rev=594347&r1=594346&r2=594347&view=diff
==============================================================================
--- perl/modperl/branches/threading/xs/tables/current/ModPerl/FunctionTable.pm (original)
+++ perl/modperl/branches/threading/xs/tables/current/ModPerl/FunctionTable.pm Mon Nov 12 15:44:37 2007
@@ -8211,6 +8211,10 @@
{
'type' => 'PerlInterpreter *',
'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'class'
}
]
}