1*12004Sjiang.liu@intel.com#!/usr/bin/perl 2*12004Sjiang.liu@intel.com# 3*12004Sjiang.liu@intel.com# CDDL HEADER START 4*12004Sjiang.liu@intel.com# 5*12004Sjiang.liu@intel.com# The contents of this file are subject to the terms of the 6*12004Sjiang.liu@intel.com# Common Development and Distribution License (the "License"). 7*12004Sjiang.liu@intel.com# You may not use this file except in compliance with the License. 8*12004Sjiang.liu@intel.com# 9*12004Sjiang.liu@intel.com# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*12004Sjiang.liu@intel.com# or http://www.opensolaris.org/os/licensing. 11*12004Sjiang.liu@intel.com# See the License for the specific language governing permissions 12*12004Sjiang.liu@intel.com# and limitations under the License. 13*12004Sjiang.liu@intel.com# 14*12004Sjiang.liu@intel.com# When distributing Covered Code, include this CDDL HEADER in each 15*12004Sjiang.liu@intel.com# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*12004Sjiang.liu@intel.com# If applicable, add the following below this CDDL HEADER, with the 17*12004Sjiang.liu@intel.com# fields enclosed by brackets "[]" replaced with your own identifying 18*12004Sjiang.liu@intel.com# information: Portions Copyright [yyyy] [name of copyright owner] 19*12004Sjiang.liu@intel.com# 20*12004Sjiang.liu@intel.com# CDDL HEADER END 21*12004Sjiang.liu@intel.com# 22*12004Sjiang.liu@intel.com# 23*12004Sjiang.liu@intel.com# Copyright (c) 2000 by Sun Microsystems, Inc. 24*12004Sjiang.liu@intel.com# All rights reserved. 25*12004Sjiang.liu@intel.com# 26*12004Sjiang.liu@intel.com 27*12004Sjiang.liu@intel.comsub trim { 28*12004Sjiang.liu@intel.com my ($line) = @_; 29*12004Sjiang.liu@intel.com $line =~ s#/\*|\*/##g; 30*12004Sjiang.liu@intel.com $line =~ s#^\s+|\s+$##g; 31*12004Sjiang.liu@intel.com return $line; 32*12004Sjiang.liu@intel.com} 33*12004Sjiang.liu@intel.com 34*12004Sjiang.liu@intel.commy $filter = 0; 35*12004Sjiang.liu@intel.commy %prefix; 36*12004Sjiang.liu@intel.comwhile ($#ARGV >= 0) { 37*12004Sjiang.liu@intel.com $prefix{$ARGV[0]} = 0; 38*12004Sjiang.liu@intel.com shift @ARGV; 39*12004Sjiang.liu@intel.com $filter = 1; 40*12004Sjiang.liu@intel.com} 41*12004Sjiang.liu@intel.com 42*12004Sjiang.liu@intel.commy $base; 43*12004Sjiang.liu@intel.commy $bnd; 44*12004Sjiang.liu@intel.commy @text; 45*12004Sjiang.liu@intel.commy @sets; 46*12004Sjiang.liu@intel.comwhile (<STDIN>) { 47*12004Sjiang.liu@intel.com my $n = m@^#define\s(E\w\w\w)\w+\s+(\d+)(.*)@; 48*12004Sjiang.liu@intel.com next unless ($n > 0); 49*12004Sjiang.liu@intel.com next unless ($filter == 0 || defined $prefix{$1}); 50*12004Sjiang.liu@intel.com my $txt = trim($3); 51*12004Sjiang.liu@intel.com if (length($txt) == 0) { 52*12004Sjiang.liu@intel.com my $l = <STDIN>; 53*12004Sjiang.liu@intel.com $txt = trim($l); 54*12004Sjiang.liu@intel.com } 55*12004Sjiang.liu@intel.com 56*12004Sjiang.liu@intel.com $base = $2 if (!defined $base); 57*12004Sjiang.liu@intel.com if (defined $bnd && $2 != $bnd + 1) { 58*12004Sjiang.liu@intel.com push(@sets, { base => $base, bnd => $bnd }); 59*12004Sjiang.liu@intel.com $base = $2; 60*12004Sjiang.liu@intel.com } 61*12004Sjiang.liu@intel.com $bnd = $2; 62*12004Sjiang.liu@intel.com push(@text, $txt); 63*12004Sjiang.liu@intel.com} 64*12004Sjiang.liu@intel.com 65*12004Sjiang.liu@intel.compush(@sets, { base => $base, bnd => $bnd }); 66*12004Sjiang.liu@intel.com 67*12004Sjiang.liu@intel.comprintf "#include <sys/sbd_ioctl.h>\n"; 68*12004Sjiang.liu@intel.com 69*12004Sjiang.liu@intel.commy $i = 0; 70*12004Sjiang.liu@intel.commy $s = 0; 71*12004Sjiang.liu@intel.comdo { 72*12004Sjiang.liu@intel.com my $set = $sets[$s]; 73*12004Sjiang.liu@intel.com 74*12004Sjiang.liu@intel.com printf "static char *sbd_t%d[] = {\n", $set->{base}; 75*12004Sjiang.liu@intel.com my $n = $set->{bnd} - $set->{base} + 1; 76*12004Sjiang.liu@intel.com while ($n--) { 77*12004Sjiang.liu@intel.com printf "\t\"%s\",\n", $text[$i++]; 78*12004Sjiang.liu@intel.com } 79*12004Sjiang.liu@intel.com printf "};\n"; 80*12004Sjiang.liu@intel.com} while (++$s <= $#sets); 81*12004Sjiang.liu@intel.com 82*12004Sjiang.liu@intel.comprintf "sbd_etab_t sbd_etab[] = {\n"; 83*12004Sjiang.liu@intel.com$s = 0; 84*12004Sjiang.liu@intel.comdo { 85*12004Sjiang.liu@intel.com my $set = $sets[$s]; 86*12004Sjiang.liu@intel.com printf "\t{ %d, %d, sbd_t%d },\n", 87*12004Sjiang.liu@intel.com $set->{base}, $set->{bnd}, $set->{base}; 88*12004Sjiang.liu@intel.com} while (++$s <= $#sets); 89*12004Sjiang.liu@intel.comprintf "};\n"; 90*12004Sjiang.liu@intel.comprintf "int sbd_etab_len = %d;\n", $s; 91