]>
git.saurik.com Git - apple/xnu.git/blob - bsd/miscfs/specfs/specdev.h
   2  * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved. 
   4  * @APPLE_LICENSE_HEADER_START@ 
   6  * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved. 
   8  * This file contains Original Code and/or Modifications of Original Code 
   9  * as defined in and that are subject to the Apple Public Source License 
  10  * Version 2.0 (the 'License'). You may not use this file except in 
  11  * compliance with the License. Please obtain a copy of the License at 
  12  * http://www.opensource.apple.com/apsl/ and read it before using this 
  15  * The Original Code and all software distributed under the License are 
  16  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  17  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  18  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  19  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  20  * Please see the License for the specific language governing rights and 
  21  * limitations under the License. 
  23  * @APPLE_LICENSE_HEADER_END@ 
  26  * Copyright (c) 1995, 1998 Apple Computer, Inc. All Rights Reserved. 
  27  * Copyright (c) 1990, 1993 
  28  *      The Regents of the University of California.  All rights reserved. 
  30  * Redistribution and use in source and binary forms, with or without 
  31  * modification, are permitted provided that the following conditions 
  33  * 1. Redistributions of source code must retain the above copyright 
  34  *    notice, this list of conditions and the following disclaimer. 
  35  * 2. Redistributions in binary form must reproduce the above copyright 
  36  *    notice, this list of conditions and the following disclaimer in the 
  37  *    documentation and/or other materials provided with the distribution. 
  38  * 3. All advertising materials mentioning features or use of this software 
  39  *    must display the following acknowledgement: 
  40  *      This product includes software developed by the University of 
  41  *      California, Berkeley and its contributors. 
  42  * 4. Neither the name of the University nor the names of its contributors 
  43  *    may be used to endorse or promote products derived from this software 
  44  *    without specific prior written permission. 
  46  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 
  47  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
  48  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
  49  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 
  50  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
  51  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
  52  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
  53  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
  54  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
  55  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
  58  *      @(#)specdev.h   8.6 (Berkeley) 5/21/95 
  61 #ifndef _MISCFS_SPECFS_SPECDEV_H_ 
  62 #define _MISCFS_SPECFS_SPECDEV_H_ 
  64 #include  <sys/appleapiopts.h> 
  66 #ifdef __APPLE_API_PRIVATE 
  67 #include <vfs/vfs_support.h> 
  70  * This structure defines the information maintained about 
  71  * special devices. It is allocated in checkalias and freed 
  75         struct  vnode 
**si_hashchain
; 
  76         struct  vnode 
*si_specnext
; 
  79         daddr_t si_size
;                  /* block device size in bytes */ 
  84 #define v_rdev v_specinfo->si_rdev 
  85 #define v_hashchain v_specinfo->si_hashchain 
  86 #define v_specnext v_specinfo->si_specnext 
  87 #define v_specflags v_specinfo->si_flags 
  88 #define v_specsize v_specinfo->si_size 
  93 #define SI_MOUNTEDON    0x0001  /* block special device is mounted on */ 
  96  * Special device management 
  99 #if     ((SPECHSZ&(SPECHSZ-1)) == 0) 
 100 #define SPECHASH(rdev)  (((rdev>>5)+(rdev))&(SPECHSZ-1)) 
 102 #define SPECHASH(rdev)  (((unsigned)((rdev>>5)+(rdev)))%SPECHSZ) 
 105 extern struct vnode 
*speclisth
[SPECHSZ
]; 
 108  * Prototypes for special file operations on vnodes. 
 110 extern  int (**spec_vnodeop_p
)(void *); 
 112 struct  componentname
; 
 120 int     spec_lookup 
__P((struct vop_lookup_args 
*)); 
 121 #define spec_create ((int (*) __P((struct  vop_access_args *)))err_create) 
 122 #define spec_mknod ((int (*) __P((struct  vop_access_args *)))err_mknod) 
 123 int     spec_open 
__P((struct vop_open_args 
*)); 
 124 int     spec_close 
__P((struct vop_close_args 
*)); 
 125 #define spec_access ((int (*) __P((struct  vop_access_args *)))spec_ebadf) 
 126 #define spec_getattr ((int (*) __P((struct  vop_getattr_args *)))spec_ebadf) 
 127 #define spec_setattr ((int (*) __P((struct  vop_setattr_args *)))spec_ebadf) 
 128 int     spec_read 
__P((struct vop_read_args 
*)); 
 129 int     spec_write 
__P((struct vop_write_args 
*)); 
 130 #define spec_lease_check ((int (*) __P((struct  vop_access_args *)))nop_lease) 
 131 int     spec_ioctl 
__P((struct vop_ioctl_args 
*)); 
 132 int     spec_select 
__P((struct vop_select_args 
*)); 
 133 #define spec_revoke ((int (*) __P((struct  vop_access_args *)))nop_revoke) 
 134 #define spec_mmap ((int (*) __P((struct  vop_access_args *)))err_mmap) 
 135 int     spec_fsync 
__P((struct  vop_fsync_args 
*)); 
 136 #define spec_seek ((int (*) __P((struct  vop_access_args *)))err_seek) 
 137 #define spec_remove ((int (*) __P((struct  vop_access_args *)))err_remove) 
 138 #define spec_link ((int (*) __P((struct  vop_access_args *)))err_link) 
 139 #define spec_rename ((int (*) __P((struct  vop_access_args *)))err_rename) 
 140 #define spec_mkdir ((int (*) __P((struct  vop_access_args *)))err_mkdir) 
 141 #define spec_rmdir ((int (*) __P((struct  vop_access_args *)))err_rmdir) 
 142 #define spec_symlink ((int (*) __P((struct  vop_access_args *)))err_symlink) 
 143 #define spec_readdir ((int (*) __P((struct  vop_access_args *)))err_readdir) 
 144 #define spec_readlink ((int (*) __P((struct  vop_access_args *)))err_readlink) 
 145 #define spec_abortop ((int (*) __P((struct  vop_access_args *)))err_abortop) 
 146 #define spec_inactive ((int (*) __P((struct  vop_access_args *)))nop_inactive) 
 147 #define spec_reclaim ((int (*) __P((struct  vop_access_args *)))nop_reclaim) 
 148 #define spec_lock ((int (*) __P((struct  vop_access_args *)))nop_lock) 
 149 #define spec_unlock ((int (*) __P((struct  vop_access_args *)))nop_unlock) 
 150 int     spec_bmap 
__P((struct vop_bmap_args 
*)); 
 151 int     spec_strategy 
__P((struct vop_strategy_args 
*)); 
 152 int     spec_print 
__P((struct vop_print_args 
*)); 
 153 #define spec_islocked ((int (*) __P((struct  vop_access_args *)))nop_islocked) 
 154 int     spec_pathconf 
__P((struct vop_pathconf_args 
*)); 
 155 #define spec_advlock ((int (*) __P((struct  vop_access_args *)))err_advlock) 
 156 #define spec_blkatoff ((int (*) __P((struct  vop_access_args *)))err_blkatoff) 
 157 #define spec_valloc ((int (*) __P((struct  vop_access_args *)))err_valloc) 
 158 #define spec_vfree ((int (*) __P((struct  vop_access_args *)))err_vfree) 
 159 #define spec_truncate ((int (*) __P((struct  vop_access_args *)))nop_truncate) 
 160 #define spec_update ((int (*) __P((struct  vop_access_args *)))nop_update) 
 161 #define spec_reallocblks \ 
 162         ((int (*) __P((struct  vop_reallocblks_args *)))err_reallocblks) 
 163 #define spec_bwrite ((int (*) __P((struct  vop_bwrite_args *)))nop_bwrite) 
 164 int     spec_devblocksize 
__P((struct vop_devblocksize_args 
*)); 
 165 int spec_blktooff 
__P((struct  vop_blktooff_args 
*)); 
 166 int spec_offtoblk 
__P((struct  vop_offtoblk_args 
*)); 
 167 int spec_cmap 
__P((struct  vop_cmap_args 
*)); 
 169 #endif /* __APPLE_API_PRIVATE */ 
 170 #endif /* _MISCFS_SPECFS_SPECDEV_H_ */