specdev.h revision 1.20.2.5 1 /* $NetBSD: specdev.h,v 1.20.2.5 2001/10/01 12:47:24 fvdl Exp $ */
2
3 /*
4 * Copyright (c) 1990, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. All advertising materials mentioning features or use of this software
16 * must display the following acknowledgement:
17 * This product includes software developed by the University of
18 * California, Berkeley and its contributors.
19 * 4. Neither the name of the University nor the names of its contributors
20 * may be used to endorse or promote products derived from this software
21 * without specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 *
35 * @(#)specdev.h 8.6 (Berkeley) 5/21/95
36 */
37
38 /*
39 * Special device management
40 */
41 #define SPECHSZ 64
42 #if ((SPECHSZ&(SPECHSZ-1)) == 0)
43 #define SPECHASH(rdev) (((rdev>>5)+(rdev))&(SPECHSZ-1))
44 #else
45 #define SPECHASH(rdev) (((unsigned)((rdev>>5)+(rdev)))%SPECHSZ)
46 #endif
47
48 struct vnode *speclisth[SPECHSZ];
49
50 /*
51 * Prototypes for special file operations on vnodes.
52 */
53 extern int (**spec_vnodeop_p) __P((void *));
54 struct nameidata;
55 struct componentname;
56 struct ucred;
57 struct flock;
58 struct buf;
59 struct uio;
60
61 int spec_lookup (void *);
62 #define spec_create genfs_badop
63 #define spec_mknod genfs_badop
64 int spec_open (void *);
65 int spec_close (void *);
66 int spec_access (void *);
67 int spec_getattr (void *);
68 #define spec_setattr genfs_ebadf /* XXX allow for clones? */
69 int spec_read (void *);
70 int spec_write (void *);
71 #define spec_lease_check genfs_nullop
72 #define spec_fcntl genfs_fcntl
73 int spec_ioctl (void *);
74 int spec_poll (void *);
75 #define spec_revoke genfs_revoke
76 #define spec_mmap genfs_mmap
77 int spec_fsync (void *);
78 #define spec_seek genfs_nullop /* XXX should query device */
79 #define spec_remove genfs_badop
80 #define spec_link genfs_badop
81 #define spec_rename genfs_badop
82 #define spec_mkdir genfs_badop
83 #define spec_rmdir genfs_badop
84 #define spec_symlink genfs_badop
85 #define spec_readdir genfs_badop
86 #define spec_readlink genfs_badop
87 #define spec_abortop genfs_badop
88 #define spec_reclaim genfs_nullop
89 int spec_inactive (void *);
90 int spec_lock (void *);
91 int spec_unlock (void *);
92 int spec_bmap (void *);
93 int spec_strategy (void *);
94 int spec_print (void *);
95 int spec_islocked (void *);
96 int spec_pathconf (void *);
97 int spec_advlock (void *);
98 #define spec_blkatoff genfs_badop
99 #define spec_valloc genfs_badop
100 #define spec_reallocblks genfs_badop
101 #define spec_vfree genfs_badop
102 #define spec_truncate genfs_nullop
103 #define spec_update genfs_nullop
104 #define spec_bwrite vn_bwrite
105 #define spec_getpages genfs_getpages
106 #define spec_putpages genfs_putpages
107