source: svn/trunk/newcon3bcm2_21bu/nexus/build/tools/kernelproxy/bapi_ioctl_def.pm

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

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 5.5 KB
Line 
1#!/usr/bin/perl
2#     (c)2003-2011 Broadcom Corporation
3#
4#  This program is the proprietary software of Broadcom Corporation and/or its licensors,
5#  and may only be used, duplicated, modified or distributed pursuant to the terms and
6#  conditions of a separate, written license agreement executed between you and Broadcom
7#  (an "Authorized License").  Except as set forth in an Authorized License, Broadcom grants
8#  no license (express or implied), right to use, or waiver of any kind with respect to the
9#  Software, and Broadcom expressly reserves all rights in and to the Software and all
10#  intellectual property rights therein.  IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU
11#  HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY
12#  NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE.
13#
14#  Except as expressly set forth in the Authorized License,
15#
16#  1.     This program, including its structure, sequence and organization, constitutes the valuable trade
17#  secrets of Broadcom, and you shall use all reasonable efforts to protect the confidentiality thereof,
18#  and to use this information only in connection with your use of Broadcom integrated circuit products.
19#
20#  2.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
21#  AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
22#  WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
23#  THE SOFTWARE.  BROADCOM SPECIFICALLY DISCLAIMS ANY AND ALL IMPLIED WARRANTIES
24#  OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE,
25#  LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION
26#  OR CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF
27#  USE OR PERFORMANCE OF THE SOFTWARE.
28#
29#  3.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR ITS
30#  LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT, OR
31#  EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY RELATING TO YOUR
32#  USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF BROADCOM HAS BEEN ADVISED OF
33#  THE POSSIBILITY OF SUCH DAMAGES; OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT
34#  ACTUALLY PAID FOR THE SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE
35#  LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF
36#  ANY LIMITED REMEDY.
37#
38# $brcm_Workfile: bapi_ioctl_def.pm $
39# $brcm_Revision: 6 $
40# $brcm_Date: 12/7/11 10:41a $
41#
42# File Description:
43#
44# Revision History:
45#
46# $brcm_Log: /nexus/build/tools/kernelproxy/bapi_ioctl_def.pm $
47#
48# 6   12/7/11 10:41a erickson
49# SW7420-2141: merge as much duplicated kernelmode proxy/usermode ipc
50#  perl code as possible
51#
52# 5   5/3/11 5:08p erickson
53# SW7420-1819: repartition so NFE is a standard feature
54#
55# 4   3/3/11 11:57a erickson
56# SWDTV-5533: support up to 512 ioctl's per nexus module
57#
58# 3   7/24/08 6:09p vsilyaev
59# PR 45137: Modified INIT ioctl to pass application type
60#
61# 2   1/31/08 12:45p vsilyaev
62# PR 38682: Build proxy for the core module
63#
64# 1   1/18/08 2:15p jgarrett
65# PR 38808: Merging to main branch
66#
67# Nexus_Devel/3   1/18/08 1:13p vsilyaev
68# PR 38682: Updated nexus kernel environment
69#
70# Nexus_Devel/2   1/11/08 4:27p vsilyaev
71# PR 38682: Adding kernel support
72#
73# 1   2/7/05 6:56p dlwin
74# Merge down for release 2005_REFSW_MERGETOMAIN:
75#
76# Irvine_BSEAVSW_Devel/3   6/24/04 10:24a erickson
77# PR11135: added "don't modify" headers
78#
79# Irvine_BSEAVSW_Devel/2   6/1/04 11:28a erickson
80# PR11135: added comment
81#
82# Irvine_BSEAVSW_Devel/1   5/17/04 11:13a erickson
83# PR11135: added initial linux proxy impl
84#
85#############################################################################
86use strict;
87use bapi_common;
88use bapi_util;
89
90package bapi_ioctl_def;
91
92# this function takes an array of function data structures as input
93# it prints out the ioctl definitions, both IOCTL numbers and data structures
94sub generate
95{
96    my ($filename, $module, $id, $version, @funcs) = @_;
97    my $func;
98    open FILE, ">$filename";
99    my $cnt = 0;
100
101    print FILE bapi_util::header $module;
102
103    print FILE "/* ioctl dispatch is faster if ioctl number doesn't include size of the structure */\n";
104    print FILE "#define NEXUS_IOCTL_$module\_ID  $id\n";
105    print FILE "\n\n";
106    print FILE "#define " . (bapi_common::version_define $module) . (bapi_common::version_value $version) . "\n";
107    print FILE "#define " . (bapi_common::version_ioctl $module) . " NEXUS_IOCTL($id, $cnt, PROXY_NEXUS_ModuleInit)\n\n\n";
108
109    $cnt++;
110
111    for $func (@funcs) {
112        my $params = $func->{PARAMS};
113        my $param;
114        my $ioctl = bapi_common::ioctl_name $module, $func;
115
116        if ($func->{NOSTRUCT}) {
117            print FILE "#define $ioctl NEXUS_IOCTL($id, $cnt, int)\n\n";
118        } else {
119            my $struct = bapi_common::ioctl_struct $module, $func;
120            print FILE "typedef struct $struct \{\n";
121
122            # If the RETTYPE is a reference, make it a value
123
124            if ( $func->{RETTYPE} !~ /void\s*\*$/ && $func->{RETTYPE} =~ /\*$/) {
125                my $rettype = $func->{RETTYPE};
126                $rettype =~ s/const//;
127                $rettype =~ s/\*//;
128                print FILE "  $rettype __retval;\n";
129            } elsif ($func->{RETTYPE} ne "void") {
130                print FILE "  $func->{RETTYPE} __retval;\n";
131            }
132
133            for $param (@$params) {
134                print FILE "  $param->{TYPE} $param->{NAME};\n";
135            }
136            print FILE "} $struct ;\n\n";
137            print FILE "#define $ioctl NEXUS_IOCTL($id, $cnt, $struct)\n\n";
138        }
139        $cnt++;
140    }
141    close FILE;
142}
143
1441;
Note: See TracBrowser for help on using the repository browser.