avoid unnecessarry delay by using usleep

This commit is contained in:
Dietmar Maurer 2013-12-09 13:15:07 +01:00
parent 19cec2309d
commit eb7047f674

View File

@ -17,6 +17,7 @@ use Encode;
use Digest::SHA; use Digest::SHA;
use Text::ParseWords; use Text::ParseWords;
use String::ShellQuote; use String::ShellQuote;
use Time::HiRes qw(usleep gettimeofday tv_interval);
our @EXPORT_OK = qw( our @EXPORT_OK = qw(
$IPV6RE $IPV6RE
@ -627,13 +628,16 @@ sub extract_param {
return $res; return $res;
} }
# Note: we use this to wait until vncterm is ready # Note: we use this to wait until vncterm/spiceterm is ready
sub wait_for_vnc_port { sub wait_for_vnc_port {
my ($port, $timeout) = @_; my ($port, $timeout) = @_;
$timeout = 5 if !$timeout; $timeout = 5 if !$timeout;
my $sleeptime = 0;
my $starttime = [gettimeofday];
my $elapsed;
for (my $i = 0; $i < $timeout; $i++) { while (($elapsed = tv_interval($starttime)) < $timeout) {
if (my $fh = IO::File->new ("/proc/net/tcp", "r")) { if (my $fh = IO::File->new ("/proc/net/tcp", "r")) {
while (defined (my $line = <$fh>)) { while (defined (my $line = <$fh>)) {
if ($line =~ m/^\s*\d+:\s+([0-9A-Fa-f]{8}):([0-9A-Fa-f]{4})\s/) { if ($line =~ m/^\s*\d+:\s+([0-9A-Fa-f]{8}):([0-9A-Fa-f]{4})\s/) {
@ -645,7 +649,8 @@ sub wait_for_vnc_port {
} }
close($fh); close($fh);
} }
sleep(1); $sleeptime += 100000 if $sleeptime < 1000000;
usleep($sleeptime);
} }
return undef; return undef;