1*4f1223e8SApple OSS Distributions#!/bin/sh - 2*4f1223e8SApple OSS Distributionscopyright=' 3*4f1223e8SApple OSS Distributions/* 4*4f1223e8SApple OSS Distributions * Copyright (c) 2000-2019 Apple Inc. All rights reserved. 5*4f1223e8SApple OSS Distributions * 6*4f1223e8SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 7*4f1223e8SApple OSS Distributions * 8*4f1223e8SApple OSS Distributions * The contents of this file constitute Original Code as defined in and 9*4f1223e8SApple OSS Distributions * are subject to the Apple Public Source License Version 1.1 (the 10*4f1223e8SApple OSS Distributions * "License"). You may not use this file except in compliance with the 11*4f1223e8SApple OSS Distributions * License. Please obtain a copy of the License at 12*4f1223e8SApple OSS Distributions * http://www.apple.com/publicsource and read it before using this file. 13*4f1223e8SApple OSS Distributions * 14*4f1223e8SApple OSS Distributions * This Original Code and all software distributed under the License are 15*4f1223e8SApple OSS Distributions * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 16*4f1223e8SApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 17*4f1223e8SApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 18*4f1223e8SApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 19*4f1223e8SApple OSS Distributions * License for the specific language governing rights and limitations 20*4f1223e8SApple OSS Distributions * under the License. 21*4f1223e8SApple OSS Distributions * 22*4f1223e8SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 23*4f1223e8SApple OSS Distributions */ 24*4f1223e8SApple OSS Distributions/* 25*4f1223e8SApple OSS Distributions * Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved 26*4f1223e8SApple OSS Distributions * Copyright (c) 1992, 1993, 1994, 1995 27*4f1223e8SApple OSS Distributions * The Regents of the University of California. All rights reserved. 28*4f1223e8SApple OSS Distributions * 29*4f1223e8SApple OSS Distributions * Redistribution and use in source and binary forms, with or without 30*4f1223e8SApple OSS Distributions * modification, are permitted provided that the following conditions 31*4f1223e8SApple OSS Distributions * are met: 32*4f1223e8SApple OSS Distributions * 1. Redistributions of source code must retain the above copyright 33*4f1223e8SApple OSS Distributions * notice, this list of conditions and the following disclaimer. 34*4f1223e8SApple OSS Distributions * 2. Redistributions in binary form must reproduce the above copyright 35*4f1223e8SApple OSS Distributions * notice, this list of conditions and the following disclaimer in the 36*4f1223e8SApple OSS Distributions * documentation and/or other materials provided with the distribution. 37*4f1223e8SApple OSS Distributions * 3. All advertising materials mentioning features or use of this software 38*4f1223e8SApple OSS Distributions * must display the following acknowledgement: 39*4f1223e8SApple OSS Distributions * This product includes software developed by the University of 40*4f1223e8SApple OSS Distributions * California, Berkeley and its contributors. 41*4f1223e8SApple OSS Distributions * 4. Neither the name of the University nor the names of its contributors 42*4f1223e8SApple OSS Distributions * may be used to endorse or promote products derived from this software 43*4f1223e8SApple OSS Distributions * without specific prior written permission. 44*4f1223e8SApple OSS Distributions * 45*4f1223e8SApple OSS Distributions * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 46*4f1223e8SApple OSS Distributions * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 47*4f1223e8SApple OSS Distributions * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 48*4f1223e8SApple OSS Distributions * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 49*4f1223e8SApple OSS Distributions * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 50*4f1223e8SApple OSS Distributions * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 51*4f1223e8SApple OSS Distributions * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 52*4f1223e8SApple OSS Distributions * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 53*4f1223e8SApple OSS Distributions * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 54*4f1223e8SApple OSS Distributions * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 55*4f1223e8SApple OSS Distributions * SUCH DAMAGE. 56*4f1223e8SApple OSS Distributions */ 57*4f1223e8SApple OSS Distributions' 58*4f1223e8SApple OSS DistributionsSCRIPT_ID='@(#)vnode_if.sh 8.7 (Berkeley) 5/11/95' 59*4f1223e8SApple OSS Distributions 60*4f1223e8SApple OSS Distributions# Script to produce VFS front-end sugar. 61*4f1223e8SApple OSS Distributions# 62*4f1223e8SApple OSS Distributions# usage: vnode_if.sh srcfile 63*4f1223e8SApple OSS Distributions# (where srcfile is currently bsd/vfs/vnode_if.src) 64*4f1223e8SApple OSS Distributions# 65*4f1223e8SApple OSS Distributions 66*4f1223e8SApple OSS Distributionsif [ $# -ne 1 ] ; then 67*4f1223e8SApple OSS Distributions echo 'usage: vnode_if.sh srcfile' 68*4f1223e8SApple OSS Distributions exit 1 69*4f1223e8SApple OSS Distributionsfi 70*4f1223e8SApple OSS Distributions 71*4f1223e8SApple OSS Distributions# Name of the source file. 72*4f1223e8SApple OSS Distributionssrc=$1 73*4f1223e8SApple OSS Distributions 74*4f1223e8SApple OSS Distributions# Names of the created files. 75*4f1223e8SApple OSS Distributionsout_c=vnode_if.c 76*4f1223e8SApple OSS Distributionsout_h=vnode_if.h 77*4f1223e8SApple OSS Distributions 78*4f1223e8SApple OSS Distributions# Awk program (must support nawk extensions) 79*4f1223e8SApple OSS Distributions# Use "awk" at Berkeley, "nawk" or "gawk" elsewhere. 80*4f1223e8SApple OSS Distributionsawk=${AWK:-awk} 81*4f1223e8SApple OSS Distributions#awk=${AWK:-gawk} 82*4f1223e8SApple OSS Distributions 83*4f1223e8SApple OSS Distributions# Does this awk have a "toupper" function? (i.e. is it GNU awk) 84*4f1223e8SApple OSS Distributionsisgawk=`$awk 'BEGIN { print toupper("true"); exit; }' 2>/dev/null` 85*4f1223e8SApple OSS Distributions 86*4f1223e8SApple OSS Distributions# If this awk does not define "toupper" then define our own. 87*4f1223e8SApple OSS Distributionsif [ "$isgawk" = TRUE ] ; then 88*4f1223e8SApple OSS Distributions # GNU awk provides it. 89*4f1223e8SApple OSS Distributions toupper= 90*4f1223e8SApple OSS Distributionselse 91*4f1223e8SApple OSS Distributions # Provide our own toupper() 92*4f1223e8SApple OSS Distributions toupper=' 93*4f1223e8SApple OSS Distributionsfunction toupper(str) { 94*4f1223e8SApple OSS Distributions _toupper_cmd = "echo "str" |tr a-z A-Z" 95*4f1223e8SApple OSS Distributions _toupper_cmd | getline _toupper_str; 96*4f1223e8SApple OSS Distributions close(_toupper_cmd); 97*4f1223e8SApple OSS Distributions return _toupper_str; 98*4f1223e8SApple OSS Distributions}' 99*4f1223e8SApple OSS Distributionsfi 100*4f1223e8SApple OSS Distributions 101*4f1223e8SApple OSS Distributions# 102*4f1223e8SApple OSS Distributions# This is the common part of all awk programs that read $src 103*4f1223e8SApple OSS Distributions# This parses the input for one function into the arrays: 104*4f1223e8SApple OSS Distributions# argdir, argtype, argname, willrele 105*4f1223e8SApple OSS Distributions# and calls "doit()" to generate output for the function. 106*4f1223e8SApple OSS Distributions# 107*4f1223e8SApple OSS Distributions# Input to this parser is pre-processed slightly by sed 108*4f1223e8SApple OSS Distributions# so this awk parser doesn't have to work so hard. The 109*4f1223e8SApple OSS Distributions# changes done by the sed pre-processing step are: 110*4f1223e8SApple OSS Distributions# insert a space beween * and pointer name 111*4f1223e8SApple OSS Distributions# replace semicolons with spaces 112*4f1223e8SApple OSS Distributions# 113*4f1223e8SApple OSS Distributionssed_prep='s:\*\([^\*/]\):\* \1:g 114*4f1223e8SApple OSS Distributionss/;/ /' 115*4f1223e8SApple OSS Distributionsawk_parser=' 116*4f1223e8SApple OSS Distributions# Comment line 117*4f1223e8SApple OSS Distributions/^#/ { next; } 118*4f1223e8SApple OSS Distributions# First line of description 119*4f1223e8SApple OSS Distributions/^vop_/ { 120*4f1223e8SApple OSS Distributions name=$1; 121*4f1223e8SApple OSS Distributions argc=0; 122*4f1223e8SApple OSS Distributions ubc=$3; 123*4f1223e8SApple OSS Distributions next; 124*4f1223e8SApple OSS Distributions} 125*4f1223e8SApple OSS Distributions# Last line of description 126*4f1223e8SApple OSS Distributions/^}/ { 127*4f1223e8SApple OSS Distributions doit(); 128*4f1223e8SApple OSS Distributions next; 129*4f1223e8SApple OSS Distributions} 130*4f1223e8SApple OSS Distributions# Middle lines of description 131*4f1223e8SApple OSS Distributions{ 132*4f1223e8SApple OSS Distributions argdir[argc] = $1; i=2; 133*4f1223e8SApple OSS Distributions if ($2 == "WILLRELE") { 134*4f1223e8SApple OSS Distributions willrele[argc] = 1; 135*4f1223e8SApple OSS Distributions i++; 136*4f1223e8SApple OSS Distributions } else 137*4f1223e8SApple OSS Distributions willrele[argc] = 0; 138*4f1223e8SApple OSS Distributions argtype[argc] = $i; i++; 139*4f1223e8SApple OSS Distributions while (i < NF) { 140*4f1223e8SApple OSS Distributions argtype[argc] = argtype[argc]" "$i; 141*4f1223e8SApple OSS Distributions i++; 142*4f1223e8SApple OSS Distributions } 143*4f1223e8SApple OSS Distributions argname[argc] = $i; 144*4f1223e8SApple OSS Distributions argc++; 145*4f1223e8SApple OSS Distributions next; 146*4f1223e8SApple OSS Distributions} 147*4f1223e8SApple OSS Distributions' 148*4f1223e8SApple OSS Distributions 149*4f1223e8SApple OSS Distributions# This is put after the copyright on each generated file. 150*4f1223e8SApple OSS Distributionswarning=" 151*4f1223e8SApple OSS Distributions/* 152*4f1223e8SApple OSS Distributions * Warning: This file is generated automatically. 153*4f1223e8SApple OSS Distributions * (Modifications made here may easily be lost!) 154*4f1223e8SApple OSS Distributions * 155*4f1223e8SApple OSS Distributions * Created by the script: 156*4f1223e8SApple OSS Distributions * ${SCRIPT_ID} 157*4f1223e8SApple OSS Distributions */ 158*4f1223e8SApple OSS Distributions" 159*4f1223e8SApple OSS Distributions 160*4f1223e8SApple OSS Distributions# Get rid of ugly spaces 161*4f1223e8SApple OSS Distributionsspace_elim='s:\([^/]\*\) :\1:g' 162*4f1223e8SApple OSS Distributions 163*4f1223e8SApple OSS Distributions# 164*4f1223e8SApple OSS Distributions# Redirect stdout to the H file. 165*4f1223e8SApple OSS Distributions# 166*4f1223e8SApple OSS Distributionsecho "$0: Creating $out_h" 1>&2 167*4f1223e8SApple OSS Distributionsexec > $out_h 168*4f1223e8SApple OSS Distributions 169*4f1223e8SApple OSS Distributions# Begin stuff 170*4f1223e8SApple OSS Distributionsecho "$copyright" 171*4f1223e8SApple OSS Distributionsecho "$warning" 172*4f1223e8SApple OSS Distributionsecho ' 173*4f1223e8SApple OSS Distributions#ifndef _SYS_VNODE_IF_H_ 174*4f1223e8SApple OSS Distributions#define _SYS_VNODE_IF_H_ 175*4f1223e8SApple OSS Distributions 176*4f1223e8SApple OSS Distributions#include <sys/appleapiopts.h> 177*4f1223e8SApple OSS Distributions#include <sys/ubc.h> 178*4f1223e8SApple OSS Distributions 179*4f1223e8SApple OSS Distributions#ifdef __APPLE_API_UNSTABLE 180*4f1223e8SApple OSS Distributionsextern struct vnodeop_desc vop_default_desc; 181*4f1223e8SApple OSS Distributions' 182*4f1223e8SApple OSS Distributions 183*4f1223e8SApple OSS Distributions# Body stuff 184*4f1223e8SApple OSS Distributions# This awk program needs toupper() so define it if necessary. 185*4f1223e8SApple OSS Distributionssed -e "$sed_prep" $src | $awk "$toupper"' 186*4f1223e8SApple OSS Distributionsfunction doit() { 187*4f1223e8SApple OSS Distributions # Declare arg struct, descriptor. 188*4f1223e8SApple OSS Distributions printf("\nstruct %s_args {\n", name); 189*4f1223e8SApple OSS Distributions printf("\tstruct vnodeop_desc * a_desc;\n"); 190*4f1223e8SApple OSS Distributions for (i=0; i<argc; i++) { 191*4f1223e8SApple OSS Distributions printf("\t%s a_%s;\n", argtype[i], argname[i]); 192*4f1223e8SApple OSS Distributions } 193*4f1223e8SApple OSS Distributions printf("};\n"); 194*4f1223e8SApple OSS Distributions printf("extern struct vnodeop_desc %s_desc;\n", name); 195*4f1223e8SApple OSS Distributions # Define inline function. 196*4f1223e8SApple OSS Distributions printf("#define %s(", toupper(name)); 197*4f1223e8SApple OSS Distributions for (i=0; i<argc; i++) { 198*4f1223e8SApple OSS Distributions printf("%s", argname[i]); 199*4f1223e8SApple OSS Distributions if (i < (argc-1)) printf(", "); 200*4f1223e8SApple OSS Distributions } 201*4f1223e8SApple OSS Distributions printf(") _%s(", toupper(name)); 202*4f1223e8SApple OSS Distributions for (i=0; i<argc; i++) { 203*4f1223e8SApple OSS Distributions printf("%s", argname[i]); 204*4f1223e8SApple OSS Distributions if (i < (argc-1)) printf(", "); 205*4f1223e8SApple OSS Distributions } 206*4f1223e8SApple OSS Distributions printf(")\n"); 207*4f1223e8SApple OSS Distributions printf("static __inline int _%s(", toupper(name)); 208*4f1223e8SApple OSS Distributions for (i=0; i<argc; i++) { 209*4f1223e8SApple OSS Distributions # generate ANSI protoypes now, hurrah! 210*4f1223e8SApple OSS Distributions printf("%s _%s", argtype[i], argname[i]); 211*4f1223e8SApple OSS Distributions if (i < (argc-1)) printf(", "); 212*4f1223e8SApple OSS Distributions } 213*4f1223e8SApple OSS Distributions printf(")\n"); 214*4f1223e8SApple OSS Distributions printf("{\n\tstruct %s_args a;\n", name); 215*4f1223e8SApple OSS Distributions printf("\ta.a_desc = VDESC(%s);\n", name); 216*4f1223e8SApple OSS Distributions for (i=0; i<argc; i++) { 217*4f1223e8SApple OSS Distributions printf("\ta.a_%s = _%s;\n", argname[i], argname[i]); 218*4f1223e8SApple OSS Distributions } 219*4f1223e8SApple OSS Distributions if (toupper(ubc) == "UBC") { 220*4f1223e8SApple OSS Distributions printf("\t{\n\t\t" \ 221*4f1223e8SApple OSS Distributions "int _err;\n\t\t" \ 222*4f1223e8SApple OSS Distributions "_err = VCALL(_%s%s, VOFFSET(%s), &a);\n\t\t" \ 223*4f1223e8SApple OSS Distributions "return (_err);\n\t}\n}\n", 224*4f1223e8SApple OSS Distributions argname[0], argname[0], arg0special, name, argname[0]); 225*4f1223e8SApple OSS Distributions } else { 226*4f1223e8SApple OSS Distributions printf("\treturn (VCALL(_%s%s, VOFFSET(%s), &a));\n}\n", 227*4f1223e8SApple OSS Distributions argname[0], arg0special, name); 228*4f1223e8SApple OSS Distributions } 229*4f1223e8SApple OSS Distributions} 230*4f1223e8SApple OSS DistributionsBEGIN { 231*4f1223e8SApple OSS Distributions arg0special=""; 232*4f1223e8SApple OSS Distributions} 233*4f1223e8SApple OSS DistributionsEND { 234*4f1223e8SApple OSS Distributions printf("\n/* Special cases: */\n#include <sys/buf.h>\n#include <sys/vm.h>\n"); 235*4f1223e8SApple OSS Distributions argc=1; 236*4f1223e8SApple OSS Distributions argtype[0]="struct buf *"; 237*4f1223e8SApple OSS Distributions argname[0]="bp"; 238*4f1223e8SApple OSS Distributions arg0special="->b_vp"; 239*4f1223e8SApple OSS Distributions name="vop_strategy"; 240*4f1223e8SApple OSS Distributions doit(); 241*4f1223e8SApple OSS Distributions name="VNOP_BWRITE"; 242*4f1223e8SApple OSS Distributions doit(); 243*4f1223e8SApple OSS Distributions} 244*4f1223e8SApple OSS Distributions'"$awk_parser" | sed -e "$space_elim" 245*4f1223e8SApple OSS Distributions 246*4f1223e8SApple OSS Distributions# End stuff 247*4f1223e8SApple OSS Distributionsecho ' 248*4f1223e8SApple OSS Distributions/* End of special cases. */ 249*4f1223e8SApple OSS Distributions 250*4f1223e8SApple OSS Distributions#endif /* __APPLE_API_UNSTABLE */ 251*4f1223e8SApple OSS Distributions#endif /* !_SYS_VNODE_IF_H_ */' 252*4f1223e8SApple OSS Distributions 253*4f1223e8SApple OSS Distributions# 254*4f1223e8SApple OSS Distributions# Redirect stdout to the C file. 255*4f1223e8SApple OSS Distributions# 256*4f1223e8SApple OSS Distributionsecho "$0: Creating $out_c" 1>&2 257*4f1223e8SApple OSS Distributionsexec > $out_c 258*4f1223e8SApple OSS Distributions 259*4f1223e8SApple OSS Distributions# Begin stuff 260*4f1223e8SApple OSS Distributionsecho "$copyright" 261*4f1223e8SApple OSS Distributionsecho "$warning" 262*4f1223e8SApple OSS Distributionsecho ' 263*4f1223e8SApple OSS Distributions#include <sys/param.h> 264*4f1223e8SApple OSS Distributions#include <sys/mount.h> 265*4f1223e8SApple OSS Distributions#include <sys/vm.h> 266*4f1223e8SApple OSS Distributions#include <sys/vnode.h> 267*4f1223e8SApple OSS Distributions 268*4f1223e8SApple OSS Distributionsstruct vnodeop_desc vop_default_desc = { 269*4f1223e8SApple OSS Distributions .vdesc_offset = 0, 270*4f1223e8SApple OSS Distributions .vdesc_name = "default", 271*4f1223e8SApple OSS Distributions .vdesc_flags = 0, 272*4f1223e8SApple OSS Distributions .vdesc_vp_offsets = NULL, 273*4f1223e8SApple OSS Distributions .vdesc_vpp_offset = VDESC_NO_OFFSET, 274*4f1223e8SApple OSS Distributions .vdesc_cred_offset = VDESC_NO_OFFSET, 275*4f1223e8SApple OSS Distributions .vdesc_proc_offset = VDESC_NO_OFFSET, 276*4f1223e8SApple OSS Distributions .vdesc_componentname_offset = VDESC_NO_OFFSET, 277*4f1223e8SApple OSS Distributions .vdesc_context_offset = VDESC_NO_OFFSET, 278*4f1223e8SApple OSS Distributions .vdesc_transports = NULL, 279*4f1223e8SApple OSS Distributions}; 280*4f1223e8SApple OSS Distributions' 281*4f1223e8SApple OSS Distributions 282*4f1223e8SApple OSS Distributions# Body stuff 283*4f1223e8SApple OSS Distributionssed -e "$sed_prep" $src | $awk ' 284*4f1223e8SApple OSS Distributionsfunction do_offset(typematch) { 285*4f1223e8SApple OSS Distributions for (i=0; i<argc; i++) { 286*4f1223e8SApple OSS Distributions if (argtype[i] == typematch) { 287*4f1223e8SApple OSS Distributions printf("\tVOPARG_OFFSETOF(struct %s_args, a_%s),\n", 288*4f1223e8SApple OSS Distributions name, argname[i]); 289*4f1223e8SApple OSS Distributions return i; 290*4f1223e8SApple OSS Distributions }; 291*4f1223e8SApple OSS Distributions }; 292*4f1223e8SApple OSS Distributions print "\tVDESC_NO_OFFSET,"; 293*4f1223e8SApple OSS Distributions return -1; 294*4f1223e8SApple OSS Distributions} 295*4f1223e8SApple OSS Distributions 296*4f1223e8SApple OSS Distributionsfunction doit() { 297*4f1223e8SApple OSS Distributions # Define offsets array 298*4f1223e8SApple OSS Distributions printf("\nint %s_vp_offsets[] = {\n", name); 299*4f1223e8SApple OSS Distributions for (i=0; i<argc; i++) { 300*4f1223e8SApple OSS Distributions if (argtype[i] == "struct vnode *") { 301*4f1223e8SApple OSS Distributions printf ("\tVOPARG_OFFSETOF(struct %s_args,a_%s),\n", 302*4f1223e8SApple OSS Distributions name, argname[i]); 303*4f1223e8SApple OSS Distributions } 304*4f1223e8SApple OSS Distributions } 305*4f1223e8SApple OSS Distributions print "\tVDESC_NO_OFFSET"; 306*4f1223e8SApple OSS Distributions print "};"; 307*4f1223e8SApple OSS Distributions # Define F_desc 308*4f1223e8SApple OSS Distributions printf("struct vnodeop_desc %s_desc = {\n", name); 309*4f1223e8SApple OSS Distributions # offset 310*4f1223e8SApple OSS Distributions printf ("\t0,\n"); 311*4f1223e8SApple OSS Distributions # printable name 312*4f1223e8SApple OSS Distributions printf ("\t\"%s\",\n", name); 313*4f1223e8SApple OSS Distributions # flags 314*4f1223e8SApple OSS Distributions printf("\t0"); 315*4f1223e8SApple OSS Distributions vpnum = 0; 316*4f1223e8SApple OSS Distributions for (i=0; i<argc; i++) { 317*4f1223e8SApple OSS Distributions if (match(argtype[i], "struct vnode *") == 1) { 318*4f1223e8SApple OSS Distributions if (willrele[i]) { 319*4f1223e8SApple OSS Distributions if (argdir[i] ~ /OUT/) { 320*4f1223e8SApple OSS Distributions printf(" | VDESC_VPP_WILLRELE"); 321*4f1223e8SApple OSS Distributions } else { 322*4f1223e8SApple OSS Distributions printf(" | VDESC_VP%s_WILLRELE", vpnum); 323*4f1223e8SApple OSS Distributions }; 324*4f1223e8SApple OSS Distributions } 325*4f1223e8SApple OSS Distributions vpnum++; 326*4f1223e8SApple OSS Distributions } 327*4f1223e8SApple OSS Distributions } 328*4f1223e8SApple OSS Distributions print ","; 329*4f1223e8SApple OSS Distributions # vp offsets 330*4f1223e8SApple OSS Distributions printf ("\t%s_vp_offsets,\n", name); 331*4f1223e8SApple OSS Distributions # vpp (if any) 332*4f1223e8SApple OSS Distributions do_offset("struct vnode **"); 333*4f1223e8SApple OSS Distributions # cred (if any) 334*4f1223e8SApple OSS Distributions do_offset("kauth_credential_t"); 335*4f1223e8SApple OSS Distributions # proc (if any) 336*4f1223e8SApple OSS Distributions do_offset("struct proc *"); 337*4f1223e8SApple OSS Distributions # componentname 338*4f1223e8SApple OSS Distributions do_offset("struct componentname *"); 339*4f1223e8SApple OSS Distributions # transport layer information 340*4f1223e8SApple OSS Distributions printf ("\tNULL,\n};\n"); 341*4f1223e8SApple OSS Distributions} 342*4f1223e8SApple OSS DistributionsEND { 343*4f1223e8SApple OSS Distributions printf("\n/* Special cases: */\n"); 344*4f1223e8SApple OSS Distributions argc=1; 345*4f1223e8SApple OSS Distributions argdir[0]="IN"; 346*4f1223e8SApple OSS Distributions argtype[0]="struct buf *"; 347*4f1223e8SApple OSS Distributions argname[0]="bp"; 348*4f1223e8SApple OSS Distributions willrele[0]=0; 349*4f1223e8SApple OSS Distributions name="vop_strategy"; 350*4f1223e8SApple OSS Distributions doit(); 351*4f1223e8SApple OSS Distributions name="VNOP_BWRITE"; 352*4f1223e8SApple OSS Distributions doit(); 353*4f1223e8SApple OSS Distributions} 354*4f1223e8SApple OSS Distributions'"$awk_parser" | sed -e "$space_elim" 355*4f1223e8SApple OSS Distributions 356*4f1223e8SApple OSS Distributions# End stuff 357*4f1223e8SApple OSS Distributionsecho ' 358*4f1223e8SApple OSS Distributions/* End of special cases. */' 359*4f1223e8SApple OSS Distributions 360*4f1223e8SApple OSS Distributions# Add the vfs_op_descs array to the C file. 361*4f1223e8SApple OSS Distributions# Begin stuff 362*4f1223e8SApple OSS Distributionsecho ' 363*4f1223e8SApple OSS Distributionsstruct vnodeop_desc *vfs_op_descs[] = { 364*4f1223e8SApple OSS Distributions &vop_default_desc, /* MUST BE FIRST */ 365*4f1223e8SApple OSS Distributions &vop_strategy_desc, /* XXX: SPECIAL CASE */ 366*4f1223e8SApple OSS Distributions &VNOP_BWRITE_desc, /* XXX: SPECIAL CASE */ 367*4f1223e8SApple OSS Distributions' 368*4f1223e8SApple OSS Distributions 369*4f1223e8SApple OSS Distributions# Body stuff 370*4f1223e8SApple OSS Distributionssed -e "$sed_prep" $src | $awk ' 371*4f1223e8SApple OSS Distributionsfunction doit() { 372*4f1223e8SApple OSS Distributions printf("\t&%s_desc,\n", name); 373*4f1223e8SApple OSS Distributions} 374*4f1223e8SApple OSS Distributions'"$awk_parser" 375*4f1223e8SApple OSS Distributions 376*4f1223e8SApple OSS Distributions# End stuff 377*4f1223e8SApple OSS Distributionsecho ' NULL 378*4f1223e8SApple OSS Distributions}; 379*4f1223e8SApple OSS Distributions' 380*4f1223e8SApple OSS Distributions 381*4f1223e8SApple OSS Distributionsexit 0 382*4f1223e8SApple OSS Distributions 383*4f1223e8SApple OSS Distributions# Local Variables: 384*4f1223e8SApple OSS Distributions# tab-width: 4 385*4f1223e8SApple OSS Distributions# End: 386