| #!/usr/bin/python3 |
| # |
| # Copyright 2014, NICTA |
| # |
| # SPDX-License-Identifier: BSD-2-Clause |
| # |
| |
| import re, os; |
| |
| helper_lines = open("helper.h", "r").readlines(); |
| helper_out = open("../../src/helper.c", "w"); |
| |
| # Generate header. |
| print ( "// WARNING: This file is generated. DO NOT EDIT.", file=helper_out ); |
| print ( "// Look in include/pci/helper_gen.y instead.\n", file=helper_out ); |
| print ( "#include <pci/helper.h>\n", file=helper_out ); |
| |
| # Generate vendor IDs. |
| print ( "char* libpci_vendorID_str(int vid) {", file=helper_out ); |
| |
| for line in helper_lines: |
| line = line.strip(); |
| r = re.search(r'^#define PCI_VENDOR_ID_([A-Z0-9_]+)\s+(\w+)', line); |
| if not r: continue; |
| |
| (vendor, val) = (r.group(1).lower(), r.group(2)); |
| print ( " if (vid == %s) return \"%s\";" % (val, vendor), file=helper_out ); |
| |
| print ( " return \"Unknown vendor ID.\"; ", file=helper_out ); |
| print ( "}\n", file=helper_out ); |
| |
| # Generate device IDs. |
| print ( "char* libpci_deviceID_str(int vid, int did) {", file=helper_out ); |
| vendor = ""; vval = ""; |
| for line in helper_lines: |
| line = line.strip(); |
| |
| rv = re.search(r'^#define PCI_VENDOR_ID_([A-Z0-9_]+)\s+(\w+)', line); |
| if rv: |
| (vendor, vval) = (rv.group(1).lower(), rv.group(2)); |
| |
| r = re.search(r'^#define PCI_DEVICE_ID_([A-Z0-9]+_[A-Z0-9_]+)\s+(\w+)', line); |
| if not r: continue; |
| |
| (device, val) = (r.group(1).lower(), r.group(2)); |
| print ( " if (vid == %s && did == %s) return \"%s\";" % (vval, val, device), file=helper_out ); |
| |
| print ( " return \"Unknown device ID.\"; ", file=helper_out ); |
| print ( "}\n", file=helper_out ); |