source: svn/trunk/newcon3bcm2_21bu/BSEAV/api/build/proxy/bapi_ioctl_def.pm

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 2.5 KB
Line 
1#!/usr/bin/perl
2#############################################################################
3#
4#               Copyright (c) 2003, Broadcom Corporation.
5#               All rights reserved.
6#               Confidential Property of Broadcom Corporation.
7#
8#  THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
9#  AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
10#  EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
11#
12# $brcm_Workfile: bapi_ioctl_def.pm $
13# $brcm_Revision: 1 $
14# $brcm_Date: 2/7/05 6:56p $
15#
16# File Description:
17#
18# Revision History:
19#
20# $brcm_Log: /BSEAV/api/build/proxy/bapi_ioctl_def.pm $
21#
22# 1   2/7/05 6:56p dlwin
23# Merge down for release 2005_REFSW_MERGETOMAIN:
24#
25# Irvine_BSEAVSW_Devel/3   6/24/04 10:24a erickson
26# PR11135: added "don't modify" headers
27#
28# Irvine_BSEAVSW_Devel/2   6/1/04 11:28a erickson
29# PR11135: added comment
30#
31# Irvine_BSEAVSW_Devel/1   5/17/04 11:13a erickson
32# PR11135: added initial linux proxy impl
33#
34#############################################################################
35use strict;
36
37package bapi_ioctl_def;
38
39# this function takes an array of function data structures as input
40# it prints out the ioctl definitions, both IOCTL numbers and data structures
41sub parse
42{
43        my ($filename, @funcs) = @_;
44        my $func;
45        open FILE, ">$filename";
46        my $cnt = 0;
47        my $settopapi_id = 199;
48
49        print FILE "/*********************************\n";
50        print FILE "*\n";
51        print FILE "* This file is autogenerated. Do not modify.\n";
52        print FILE "*\n";
53        print FILE "*********************************/\n";
54
55        for $func (@funcs) {
56                my $params = $func->{PARAMS};
57                my $param;
58                my $i = 0;
59               
60                if ($func->{NOSTRUCT}) {
61                        print FILE "#define BSETTOP_IOCTL_$func->{FUNCNAME} _IO(" .
62                                "$settopapi_id, $cnt)\n\n";
63                }
64                else {
65                        print FILE "typedef struct ioctl_settopapi_struct_$func->{FUNCNAME} \{\n";
66
67                        # If the RETTYPE is a reference, make it a value
68                        if ($func->{RETTYPE} =~ /\*$/) {
69                                my $rettype = $func->{RETTYPE};
70                                $rettype =~ s/const//;
71                                $rettype =~ s/\*//;
72                                print FILE "  $rettype __retval;\n";
73                        }
74                        elsif ($func->{RETTYPE} ne "void") {
75                                print FILE "  $func->{RETTYPE} __retval;\n";
76                        }
77
78                        for $param (@$params) {
79                                print FILE "  $param->{TYPE} $param->{NAME};\n";
80                        }
81                        print FILE "} ioctl_settopapi_struct_$func->{FUNCNAME};\n\n";
82                        print FILE "#define BSETTOP_IOCTL_$func->{FUNCNAME} _IOWR(" .
83                                "$settopapi_id, $cnt, " .
84                                "ioctl_settopapi_struct_$func->{FUNCNAME})\n\n";
85                }
86                $cnt++;
87
88        }
89        close FILE;
90}
91
921;
Note: See TracBrowser for help on using the repository browser.