diff --git a/xCAT-server/lib/perl/xCAT/PPC.pm b/xCAT-server/lib/perl/xCAT/PPC.pm index b0e1cd128..11700310d 100644 --- a/xCAT-server/lib/perl/xCAT/PPC.pm +++ b/xCAT-server/lib/perl/xCAT/PPC.pm @@ -452,7 +452,7 @@ sub process_command { #print Dumper($one_d); if($$one_d[4] =~ /^fsp$/ || $$one_d[4] =~ /^cec$/) { if( $request->{syspowerinterval} > 0) { - Time::HiRes::sleep($request->{syspowerinterval}); + no_interrupt_sleep($request->{syspowerinterval}); } } } @@ -575,6 +575,16 @@ ENDOFFORK: return(0); } +sub no_interrupt_sleep { + my $sleep_time = shift; + my $sleep_end = time + $sleep_time; + while (1) { + my $sleep_duration = $sleep_end - time; + last if $sleep_duration <= 0; + Time::HiRes::sleep($sleep_duration); + } +} + sub kill_children_by_pid { my $pid = shift; my @pids = `ps -o pid,ppid -e`; @@ -1347,7 +1357,7 @@ sub handle_find_hw_children { if (!defined($mtms)) { return undef; } - my @nodearray = $vpdtab->getAttribs({serial=>$mtms->{serial}, mtm=>$mtms->{mtm}}, qw(node side)); + my @nodearray = $vpdtab->getAttribs({serial=>$mtms->{serial}, mtm=>$mtms->{mtm}}, qw(node side)); # need regx if (!defined(@nodearray)) { return undef; }