diff options
Diffstat (limited to 'src/usr/hwpf/fapi/fapiCreateIfAttrService.pl')
-rwxr-xr-x | src/usr/hwpf/fapi/fapiCreateIfAttrService.pl | 312 |
1 files changed, 0 insertions, 312 deletions
diff --git a/src/usr/hwpf/fapi/fapiCreateIfAttrService.pl b/src/usr/hwpf/fapi/fapiCreateIfAttrService.pl deleted file mode 100755 index e1dc082af..000000000 --- a/src/usr/hwpf/fapi/fapiCreateIfAttrService.pl +++ /dev/null @@ -1,312 +0,0 @@ -#!/usr/bin/perl -# IBM_PROLOG_BEGIN_TAG -# This is an automatically generated prolog. -# -# $Source: src/usr/hwpf/fapi/fapiCreateIfAttrService.pl $ -# -# OpenPOWER HostBoot Project -# -# Contributors Listed Below - COPYRIGHT 2011,2014 -# [+] International Business Machines Corp. -# -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. See the License for the specific language governing -# permissions and limitations under the License. -# -# IBM_PROLOG_END_TAG -# $Id: fapiCreateIfAttrService.pl,v 1.9 2014/04/21 18:35:11 mjjones Exp $ -# Purpose: This perl script will parse HWP Attribute XML files and -# initfile attr files and create the fapiGetInitFileAttr() function -# in a file called fapiAttributeService.C -# -# Author: Mike Jones -# -# Change Log ********************************************************** -# -# Flag Track# Userid Date Description -# ---- -------- -------- -------- ----------- -# mjjones 11/15/11 Copied from fapiParseAttributeInfo -# mjjones 12/12/11 Support all attributes if no if-attr -# files specified (for Cronus) -# mjjones 01/13/12 Use new ReturnCode interfaces -# mjjones 02/08/12 Handle attribute files with 1 entry -# mjjones 06/12/12 Handle privileged attributes -# mjjones 09/28/12 Minor change to add FFDC on error -# mjjones 10/26/12 Output attrId/targType on error -# -# End Change Log ****************************************************** - -use strict; - -#------------------------------------------------------------------------------ -# Print Command Line Help -#------------------------------------------------------------------------------ -my $numArgs = $#ARGV + 1; -if ($numArgs < 3) -{ - print ("Usage: fapiCreateIfAttrService.pl <output dir>\n"); - print (" [<if-attr-file1> <if-attr-file2> ...]\n"); - print (" -a <attr-xml-file1> [<attr-xml-file2> ...]\n"); - print (" This perl script will parse if-attr files (containing the\n"); - print (" attributes used by the initfile) and attribute XML files\n"); - print (" (containing all HWPF attributes) and create the\n"); - print (" fapiGetInitFileAttr() function in a file called\n"); - print (" fapiAttributeService.C. Only the attributes specified in\n"); - print (" the if-attr files are supported. If no if-attr files are\n"); - print (" specified then all attributes are supported\n"); - exit(1); -} - -#------------------------------------------------------------------------------ -# Specify perl modules to use -#------------------------------------------------------------------------------ -use XML::Simple; -my $xml = new XML::Simple (KeyAttr=>[]); - -# Uncomment to enable debug output -#use Data::Dumper; - -#------------------------------------------------------------------------------ -# Open output file for writing -#------------------------------------------------------------------------------ -my $asFile = $ARGV[0]; -$asFile .= "/"; -$asFile .= "fapiAttributeService.C"; -open(ASFILE, ">", $asFile); - -#------------------------------------------------------------------------------ -# Print Start of file information to fapiAttributeService.C -#------------------------------------------------------------------------------ -print ASFILE "// fapiAttributeService.C\n"; -print ASFILE "// This file is generated by perl script fapiCreateIfAttrService.pl\n\n"; -print ASFILE "#include <fapiAttributeService.H>\n"; -print ASFILE "#include <fapiChipEcFeature.H>\n"; -print ASFILE "#include <fapiPlatTrace.H>\n\n"; -print ASFILE "namespace fapi\n"; -print ASFILE "{\n\n"; -print ASFILE "ReturnCode fapiGetInitFileAttr(const AttributeId i_id,\n"; -print ASFILE " const Target * i_pTarget,\n"; -print ASFILE " uint64_t & o_val,\n"; -print ASFILE " const uint32_t i_arrayIndex1,\n"; -print ASFILE " const uint32_t i_arrayIndex2,\n"; -print ASFILE " const uint32_t i_arrayIndex3,\n"; -print ASFILE " const uint32_t i_arrayIndex4)\n"; -print ASFILE "{\n"; -print ASFILE " ReturnCode l_rc;\n\n"; - -my $xmlFiles = 0; -my $attCount = 0; -my $numIfAttrFiles = 0; -my @attrIds; - -#------------------------------------------------------------------------------ -# Element names -#------------------------------------------------------------------------------ -my $attribute = 'attribute'; - -#------------------------------------------------------------------------------ -# For each argument -#------------------------------------------------------------------------------ -foreach my $argnum (1 .. $#ARGV) -{ - my $infile = $ARGV[$argnum]; - - if ($infile eq '-a') - { - # Start of attribute XML files - $xmlFiles = 1; - next; - } - - if ($xmlFiles == 0) - { - #---------------------------------------------------------------------- - # Process initfile attr file. This file contains the HWPF attributes - # that the initfile uses. - #---------------------------------------------------------------------- - $numIfAttrFiles++; - open(ATTRFILE, "<", $infile); - - # Read each line of the file (each line contains an attribute) - while(my $fileAttrId = <ATTRFILE>) - { - # Remove newline - chomp($fileAttrId); - - # Store the attribute in @attrIds if it does not already exist - my $match = 0; - - foreach my $attrId (@attrIds) - { - if ($fileAttrId eq $attrId) - { - $match = 1; - last; - } - } - - if (!($match)) - { - push(@attrIds, $fileAttrId); - } - } - - close(ATTRFILE); - } - else - { - #---------------------------------------------------------------------- - # Process XML file. The ForceArray option ensures that there is an - # array of attributes even if there is only one attribute in the file - #---------------------------------------------------------------------- - my $attributes = $xml->XMLin($infile, ForceArray => [$attribute]); - - #---------------------------------------------------------------------- - # For each Attribute - #---------------------------------------------------------------------- - foreach my $attr (@{$attributes->{attribute}}) - { - #------------------------------------------------------------------ - # Check that the AttributeId exists - #------------------------------------------------------------------ - if (! exists $attr->{id}) - { - print ("fapiParseAttributeInfo.pl ERROR. Att 'id' missing\n"); - exit(1); - } - - #------------------------------------------------------------------ - # Find if the attribute is used by any initfile. If no if-attr - # files were specified then support all attributes - #------------------------------------------------------------------ - my $match = 0; - - if ($numIfAttrFiles) - { - foreach my $attrId (@attrIds) - { - if ($attr->{id} eq $attrId) - { - $match = 1; - last; - } - } - } - else - { - $match = 1; - } - - if (!($match)) - { - # Look at the next attribute in the XML file - next; - } - - #------------------------------------------------------------------ - # Figure out the number of attribute array dimensions - #------------------------------------------------------------------ - my $numArrayDimensions = 0; - if ($attr->{array}) - { - # Remove leading whitespace - my $dimText = $attr->{array}; - $dimText =~ s/^\s+//; - - # Split on commas or whitespace - my @vals = split(/\s*,\s*|\s+/, $dimText); - - $numArrayDimensions=@vals; - } - - #------------------------------------------------------------------ - # Print the attribute get code to fapiAttributeService.C - #------------------------------------------------------------------ - if ($attCount > 0) - { - print ASFILE " else "; - } - else - { - print ASFILE " "; - } - $attCount++; - - print ASFILE "if (i_id == $attr->{id})\n"; - print ASFILE " {\n"; - print ASFILE " $attr->{id}_Type l_attr;\n"; - - if (exists $attr->{privileged}) - { - print ASFILE " l_rc = FAPI_ATTR_GET_PRIVILEGED($attr->{id}, i_pTarget, l_attr);\n"; - } - else - { - print ASFILE " l_rc = FAPI_ATTR_GET($attr->{id}, i_pTarget, l_attr);\n"; - } - print ASFILE " o_val = l_attr"; - - if ($numArrayDimensions >= 5) - { - print ("fapiParseAttributeInfo.pl ERROR. More than 4 array dimensions!!\n"); - exit(1); - } - else - { - for (my $i = 0; $i < $numArrayDimensions; $i++) - { - print ASFILE "[i_arrayIndex"; - print ASFILE $i+1; - print ASFILE "]"; - } - } - - print ASFILE ";\n"; - print ASFILE " }\n"; - } - } -} - -#------------------------------------------------------------------------------ -# Print End of file information to fapiAttributeService.C -#-------------------------------------------------------------------------- -if ($attCount > 0) -{ - print ASFILE " else\n"; -} -print ASFILE " {\n"; -print ASFILE " FAPI_ERR(\"fapiGetInitFileAttr: Unrecognized attr ID: 0x%x\", i_id);\n"; -print ASFILE " l_rc.setFapiError(FAPI_RC_INVALID_ATTR_GET);\n"; -print ASFILE " l_rc.addEIFfdc(0, &i_id, sizeof(i_id));\n"; -print ASFILE " }\n\n"; -print ASFILE " if (l_rc)\n"; -print ASFILE " {\n"; -print ASFILE " if (i_pTarget)\n"; -print ASFILE " {\n"; -print ASFILE " FAPI_ERR(\"fapiGetInitFileAttr: Error getting attr ID 0x%x from targType 0x%x\",\n"; -print ASFILE " i_id, i_pTarget->getType());\n"; -print ASFILE " }\n"; -print ASFILE " else\n"; -print ASFILE " {\n"; -print ASFILE " FAPI_ERR(\"fapiGetInitFileAttr: Error getting attr ID 0x%x from system target\",\n"; -print ASFILE " i_id);\n"; -print ASFILE " }\n"; -print ASFILE " }\n\n"; -print ASFILE " return l_rc;\n"; -print ASFILE "}\n\n"; -print ASFILE "}\n"; - - -#------------------------------------------------------------------------------ -# Close output file -#------------------------------------------------------------------------------ -close(ASFILE); |