blob: 41c7ab46b28de9d4c10edf78f58575ca1608fcb2 [file] [log] [blame]
Deepak Kodihalli62ed4562017-02-23 07:00:14 -06001#! /usr/bin/perl
2use strict;
3use warnings;
4
5
6use mrw::Targets;
7use mrw::Inventory;
8use mrw::Util;
9use Getopt::Long;
10
11
12my $mrwFile = "";
13my $outFile = "";
14
15
16GetOptions(
17"m=s" => \$mrwFile,
18"o=s" => \$outFile,
19)
20or printUsage();
21
22
23if (($mrwFile eq "") or ($outFile eq ""))
24{
25 printUsage();
26}
27
28
29# Load system MRW
30my $targets = Targets->new;
31$targets->loadXML($mrwFile);
32
33
34# Load inventory
35my @inventory = Inventory::getInventory($targets);
36
37
38open(my $fh, '>', $outFile) or die "Could not open file '$outFile' $!";
39
40
41# MRW/Targets.pm doesn't seem to tell me which the master proc(s) are.
42# Find those out.
43my @procs;
44for my $target (keys %{$targets->getAllTargets()})
45{
46 if ($targets->getType($target) eq "PROC")
47 {
48 push @procs, $target;
49 }
50}
51
52for my $proc (@procs)
53{
54 my $connections = $targets->findConnections($proc, "FSIM");
55 if ("" ne $connections)
56 {
57 # This is a master processor
58 my $link = "0x00"; # revisit on a multinode system
59 my $fru = Util::getEnclosingFru($targets, $proc);
60 print $fh $link.": ".Util::getObmcName(\@inventory, $fru);
61 for my $fsi (@{$connections->{CONN}})
62 {
63 my $master = $fsi->{SOURCE};
64 my $slave = $fsi->{DEST};
65 my $link = $targets->getAttribute($master, "FSI_LINK");
66 my $fru = Util::getEnclosingFru($targets, $slave);
67 print $fh "\n".$link.": ".Util::getObmcName(\@inventory, $fru);
68 }
69 }
70}
71
72
73close $fh;
74
75
76sub printUsage
77{
78 print "
79 $0 -m [MRW file] -o [Output filename]\n";
80 exit(1);
81}