diff options
| author | fukachan <fukachan> | 2006-02-04 06:45:53 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2006-02-04 06:45:53 +0000 |
| commit | 0cc6237b62e32b815dd26791e3ba6320b2b28eee (patch) | |
| tree | 496dc81cf65b05e0f062a29bdecbfbca4465c9e9 /fml/lib/FML/Process | |
| parent | 1dd7a482f114b57e9dc71e22be037988c7bb8c1f (diff) | |
| download | fml8-0cc6237b62e32b815dd26791e3ba6320b2b28eee.tar.gz fml8-0cc6237b62e32b815dd26791e3ba6320b2b28eee.tar.bz2 fml8-0cc6237b62e32b815dd26791e3ba6320b2b28eee.zip | |
define several methods around $0 handling, address fault handling and
context switching.
+set_process_title()
+get_process_title()
+set_address_fault()
+get_address_fault()
+is_address_fault()
+set_address_fault_list()
+get_address_fault_list()
+context_switch_get_context()
+context_switch_set_context()
Diffstat (limited to 'fml/lib/FML/Process')
| -rw-r--r-- | fml/lib/FML/Process/Utils.pm | 151 |
1 files changed, 150 insertions, 1 deletions
diff --git a/fml/lib/FML/Process/Utils.pm b/fml/lib/FML/Process/Utils.pm index e5ea2991..7d4a6bbe 100644 --- a/fml/lib/FML/Process/Utils.pm +++ b/fml/lib/FML/Process/Utils.pm @@ -4,7 +4,7 @@ # All rights reserved. This program is free software; you can # redistribute it and/or modify it under the same terms as Perl itself. # -# $FML: Utils.pm,v 1.145 2006/01/13 00:17:08 fukachan Exp $ +# $FML: Utils.pm,v 1.146 2006/01/15 13:53:53 fukachan Exp $ # package FML::Process::Utils; @@ -253,6 +253,10 @@ sub incoming_message_set_current_queue if (defined $pcb) { $pcb->set("incoming_smtp_transaction", "queue_object", $queue); } + else { + $curproc->logerror("no pcb"); + return undef; + } } @@ -268,6 +272,10 @@ sub incoming_message_get_current_queue if (defined $pcb) { $pcb->get("incoming_smtp_transaction", "queue_object") || undef; } + else { + $curproc->logerror("no pcb"); + return undef; + } } @@ -2157,6 +2165,147 @@ sub dup_curproc_args } +# Descriptions: set process title (setproctitle()). +# Arguments: OBJ($curproc) STR($title) +# Side Effects: none +# Return Value: none +sub set_process_title +{ + my ($curproc, $title) = @_; + $0 = $title; +} + + +# Descriptions: return process title. +# Arguments: OBJ($curproc) +# Side Effects: none +# Return Value: STR +sub get_process_title +{ + my ($curproc) = @_; + return $0; +} + + +=head2 context_switch_get_context() + +return saved context information. + +=head2 context_switch_set_context($context) + +replace context information with the specified one. + +=cut + + +# Descriptions: return saved context. +# Arguments: OBJ($curproc) +# Side Effects: none +# Return Value: HASH_REF +sub context_switch_get_context +{ + my ($curproc) = @_; + my $config = $curproc->config(); + my $config_saved = $config->get_context(); + my $pcb = $curproc->pcb(); + my $pcb_saved = $pcb->get_context(); + my $process_title = $curproc->get_process_title(); + my $context = { + config_saved_context => $config_saved, + pcb_saved_context => $pcb_saved, + process_title => $process_title, + }; + + return $context; +} + + +# Descriptions: reset the context. +# Arguments: OBJ($curproc) HASH_REF($context) +# Side Effects: none +# Return Value: STR +sub context_switch_set_context +{ + my ($curproc, $context)= @_; + my $config = $curproc->config(); + my $config_context = $context->{ config_saved_context }; + my $pcb = $curproc->pcb(); + my $pcb_context = $context->{ pcb_saved_context }; + my $process_title = $context->{ process_title }; + + # context switch: back again. + $config->set_context($config_context); + $pcb->set_context($pcb_context); + $curproc->set_process_title($process_title); +} + + +=head1 FAULT + +=cut + + +# Descriptions: set address fault. +# Arguments: OBJ($curproc) +# Side Effects: set shared memory +# Return Value: none +sub set_address_fault +{ + my ($curproc) = @_; + my $shm = $curproc->shared_hash_get("system", "fault"); + $shm->{ "address_fault" } = "yes"; +} + + +# Descriptions: get address fault value. +# Arguments: OBJ($curproc) +# Side Effects: none +# Return Value: STR +sub get_address_fault +{ + my ($curproc) = @_; + my $shm = $curproc->shared_hash_get("system", "fault"); + return( $shm->{ "address_fault" } || 'no' ); +} + + +# Descriptions: check if the address fault requested. +# Arguments: OBJ($curproc) +# Side Effects: none +# Return Value: NUM +sub is_address_fault +{ + my ($curproc) = @_; + my $is_fault = $curproc->get_address_fault(); + + return( $is_fault eq 'yes' ? 1 : 0 ); +} + + +# Descriptions: set address fault list. +# Arguments: OBJ($curproc) ARRAY_REF($list) +# Side Effects: set shared memory +# Return Value: none +sub set_address_fault_list +{ + my ($curproc, $list) = @_; + my $shm = $curproc->shared_hash_get("system", "fault_list"); + $shm->{ "address_fault_list" } = $list; +} + + +# Descriptions: get address fault list as ARRAY_REF. +# Arguments: OBJ($curproc) +# Side Effects: none +# Return Value: ARRAY_REF +sub get_address_fault_list +{ + my ($curproc) = @_; + my $shm = $curproc->shared_hash_get("system", "fault_list"); + return( $shm->{ "address_fault_list" } || [] ); +} + + =head1 LOG ROTATION =head2 log_rorate() |
