The thread/proc pointer argument in the VFS subsystem originally existed
[dragonfly.git] / sys / sys / file2.h
CommitLineData
7d655058
MD
1/*
2 * Copyright (c) 1982, 1986, 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)file.h 8.3 (Berkeley) 1/9/95
34 * $FreeBSD: src/sys/sys/file.h,v 1.22.2.7 2002/11/21 23:39:24 sam Exp $
87de5057 35 * $DragonFly: src/sys/sys/file2.h,v 1.4 2006/05/06 02:43:13 dillon Exp $
7d655058
MD
36 */
37
38#ifndef _SYS_FILE2_H_
39#define _SYS_FILE2_H_
40
41#ifdef _KERNEL
42
43static __inline void
44fhold(struct file *fp)
45{
46 fp->f_count++;
47}
48
49static __inline int
50fo_read(
51 struct file *fp,
52 struct uio *uio,
53 struct ucred *cred,
87de5057 54 int flags
7d655058
MD
55) {
56 int error;
57
58 fhold(fp);
87de5057
MD
59 error = (*fp->f_ops->fold_read)(fp, uio, cred, flags);
60 fdrop(fp, curthread);
7d655058
MD
61 return (error);
62}
63
64static __inline int
65fo_write(
66 struct file *fp,
67 struct uio *uio,
68 struct ucred *cred,
87de5057 69 int flags
7d655058
MD
70) {
71 int error;
72
73 fhold(fp);
87de5057
MD
74 error = (*fp->f_ops->fold_write)(fp, uio, cred, flags);
75 fdrop(fp, curthread);
7d655058
MD
76 return (error);
77}
78
79static __inline int
80fo_ioctl(
81 struct file *fp,
82 u_long com,
83 caddr_t data,
87de5057 84 struct ucred *cred
7d655058
MD
85) {
86 int error;
87
88 fhold(fp);
87de5057
MD
89 error = (*fp->f_ops->fold_ioctl)(fp, com, data, cred);
90 fdrop(fp, curthread);
7d655058
MD
91 return (error);
92}
93
94static __inline int
95fo_poll(
96 struct file *fp,
97 int events,
87de5057 98 struct ucred *cred
7d655058
MD
99) {
100 int error;
101
102 fhold(fp);
87de5057
MD
103 error = (*fp->f_ops->fold_poll)(fp, events, cred);
104 fdrop(fp, curthread);
7d655058
MD
105 return (error);
106}
107
108static __inline int
87de5057 109fo_stat(struct file *fp, struct stat *sb, struct ucred *cred)
7d655058
MD
110{
111 int error;
112
113 fhold(fp);
87de5057
MD
114 error = (*fp->f_ops->fold_stat)(fp, sb, cred);
115 fdrop(fp, curthread);
7d655058
MD
116 return (error);
117}
118
119static __inline int
87de5057 120fo_close(struct file *fp)
7d655058 121{
87de5057 122 return ((*fp->f_ops->fold_close)(fp));
7d655058
MD
123}
124
004d2de5 125static __inline int
87de5057 126fo_shutdown(struct file *fp, int how)
004d2de5 127{
87de5057 128 return ((*fp->f_ops->fold_shutdown)(fp, how));
004d2de5
MD
129}
130
7d655058
MD
131static __inline int
132fo_kqfilter(struct file *fp, struct knote *kn)
133{
f53ede20 134 return ((*fp->f_ops->fold_kqfilter)(fp, kn));
7d655058
MD
135}
136
137#endif /* _KERNEL */
138
139#endif /* !SYS_FILE2_H */
140