Signed-off-by: Bart Van Assche <bart.vanassche@xxxxxxxxxxx> --- providers/rxe/rxe_cfg | 67 ++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 36 deletions(-) diff --git a/providers/rxe/rxe_cfg b/providers/rxe/rxe_cfg index 6783dc78c340..0310d25bad91 100755 --- a/providers/rxe/rxe_cfg +++ b/providers/rxe/rxe_cfg @@ -35,6 +35,7 @@ use warnings; use strict; +use File::Basename; use Getopt::Long; use Switch; @@ -67,20 +68,25 @@ my @mlx4_port; my @mlx4_ether; my @roce_list; +# Read a file and return its contents as a string. +sub read_file { + my $filename = shift; + my $result = ""; + + if (open(FILE, $filename)) { + $result = <FILE>; + close FILE; + } + return $result; +} + #get mapping between rxe and eth devices sub get_names { - return if (!(-e "/sys/class/infiniband")); - - my @list; - my $rxe; - my $eth; my $i = 0; - @list = `ls /sys/class/infiniband | grep rxe $z`; - foreach $rxe (@list) { - chomp($rxe); - - $eth = `cat /sys/class/infiniband/$rxe/parent $z`; + foreach my $rxe (glob("/sys/class/infiniband/rxe*")) { + $rxe = basename($rxe); + my $eth = read_file("/sys/class/infiniband/$rxe/parent"); chomp($eth); if (($eth =~ /[\w]+[\d]/) @@ -98,25 +104,13 @@ sub get_names { # get list of Mellanox RoCE ports sub get_mlx4_list { - return if (!(-e "/sys/class/infiniband")); - - my @list; - my $mlx4; - my @ports; - my $port; - my $link; my $i = 0; - @list = `ls /sys/class/infiniband | grep mlx4_ $z`; - foreach $mlx4 (@list) { - chomp($mlx4); - chdir("/sys/class/infiniband/$mlx4/ports"); - - @ports = `ls $z`; - foreach $port (@ports) { - chomp($port); - - $link= `cat $port/link_layer $z`; + foreach my $mlx4 (glob("/sys/class/infiniband/mlx4_*")) { + $mlx4 = basename($mlx4); + foreach my $port (glob("/sys/class/infiniband/$mlx4/ports/*")) { + $port = basename($port); + my $link = read_file("$port/link_layer"); chomp($link); if ($link =~ "Ethernet") { @@ -141,10 +135,10 @@ sub get_dev_info { get_mlx4_list(); my @my_eth_list = (); - my @my_eth_devs = `ls /sys/class/net`; - foreach my $my_eth_dev (@my_eth_devs) { - chomp($my_eth_dev); - my $my_dev_type = `cat /sys/class/net/${my_eth_dev}/type`; + foreach my $my_eth_dev (glob("/sys/class/net/*")) { + $my_eth_dev = basename($my_eth_dev); + my $my_dev_type = read_file("/sys/class/net/${my_eth_dev}/type"); + chomp($my_dev_type); if ($my_dev_type == "1") { push(@my_eth_list, "$my_eth_dev"); } @@ -378,11 +372,11 @@ sub do_status { # read file containing list of ethernet devices into a list sub populate_persistence { - my @lines = `cat $persistence_file $z`; - my $line; my $i = 0; - foreach $line (@lines) { + open FILE, $persistence_file; + while(<FILE>) { + my $line = $_; chomp($line); $line =~ s/^\s+//g; if ($line =~ /[\w]+[\d]/) { @@ -394,6 +388,7 @@ sub populate_persistence { } } } + close FILE; $num_persistent = $i; } @@ -604,7 +599,7 @@ sub do_debug { } } - my $current = `cat $debugfile $z`; + my $current = read_file($debugfile); chomp($current); if ($current > 0) { print "Debug is ON ($current)\n"; @@ -681,7 +676,7 @@ sub main { } # create persistence file if necessary - `mkdir -p $persistence_path $z`; + mkdir -p $persistence_path; if (!(-e $persistence_file)) { `touch $persistence_file $z`; } -- 2.10.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html