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