fifo_vnops.c (6fde64c778e3d740d65c6a1e3db36df6cdd8ee68) fifo_vnops.c (aec0fb7b40e4cf877bea663f2d86dd07c3524fe8)
1/*
2 * Copyright (c) 1990, 1993, 1995
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

--- 86 unchanged lines hidden (view full) ---

95static void filt_fifowdetach(struct knote *kn);
96static int filt_fifowrite(struct knote *kn, long hint);
97
98static struct filterops fiforead_filtops =
99 { 1, NULL, filt_fifordetach, filt_fiforead };
100static struct filterops fifowrite_filtops =
101 { 1, NULL, filt_fifowdetach, filt_fifowrite };
102
1/*
2 * Copyright (c) 1990, 1993, 1995
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

--- 86 unchanged lines hidden (view full) ---

95static void filt_fifowdetach(struct knote *kn);
96static int filt_fifowrite(struct knote *kn, long hint);
97
98static struct filterops fiforead_filtops =
99 { 1, NULL, filt_fifordetach, filt_fiforead };
100static struct filterops fifowrite_filtops =
101 { 1, NULL, filt_fifowdetach, filt_fifowrite };
102
103vop_t **fifo_vnodeop_p;
104static struct vnodeopv_entry_desc fifo_vnodeop_entries[] = {
105 { &vop_default_desc, (vop_t *) vop_defaultop },
106 { &vop_access_desc, (vop_t *) vop_ebadf },
107 { &vop_advlock_desc, (vop_t *) fifo_advlock },
108 { &vop_close_desc, (vop_t *) fifo_close },
109 { &vop_create_desc, (vop_t *) vop_panic },
110 { &vop_getattr_desc, (vop_t *) vop_ebadf },
111 { &vop_ioctl_desc, (vop_t *) fifo_ioctl },
112 { &vop_kqfilter_desc, (vop_t *) fifo_kqfilter },
113 { &vop_lease_desc, (vop_t *) vop_null },
114 { &vop_link_desc, (vop_t *) vop_panic },
115 { &vop_mkdir_desc, (vop_t *) vop_panic },
116 { &vop_mknod_desc, (vop_t *) vop_panic },
117 { &vop_open_desc, (vop_t *) fifo_open },
118 { &vop_pathconf_desc, (vop_t *) fifo_pathconf },
119 { &vop_print_desc, (vop_t *) fifo_print },
120 { &vop_readdir_desc, (vop_t *) vop_panic },
121 { &vop_readlink_desc, (vop_t *) vop_panic },
122 { &vop_reallocblks_desc, (vop_t *) vop_panic },
123 { &vop_reclaim_desc, (vop_t *) vop_null },
124 { &vop_remove_desc, (vop_t *) vop_panic },
125 { &vop_rename_desc, (vop_t *) vop_panic },
126 { &vop_rmdir_desc, (vop_t *) vop_panic },
127 { &vop_setattr_desc, (vop_t *) vop_ebadf },
128 { &vop_symlink_desc, (vop_t *) vop_panic },
129 { NULL, NULL }
103struct vop_vector fifo_specops = {
104 .vop_default = &default_vnodeops,
105 .vop_access = VOP_EBADF,
106 .vop_advlock = fifo_advlock,
107 .vop_close = fifo_close,
108 .vop_create = VOP_PANIC,
109 .vop_getattr = VOP_EBADF,
110 .vop_ioctl = fifo_ioctl,
111 .vop_kqfilter = fifo_kqfilter,
112 .vop_lease = VOP_NULL,
113 .vop_link = VOP_PANIC,
114 .vop_mkdir = VOP_PANIC,
115 .vop_mknod = VOP_PANIC,
116 .vop_open = fifo_open,
117 .vop_pathconf = fifo_pathconf,
118 .vop_print = fifo_print,
119 .vop_readdir = VOP_PANIC,
120 .vop_readlink = VOP_PANIC,
121 .vop_reallocblks = VOP_PANIC,
122 .vop_reclaim = VOP_NULL,
123 .vop_remove = VOP_PANIC,
124 .vop_rename = VOP_PANIC,
125 .vop_rmdir = VOP_PANIC,
126 .vop_setattr = VOP_EBADF,
127 .vop_symlink = VOP_PANIC,
130};
128};
131static struct vnodeopv_desc fifo_vnodeop_opv_desc =
132 { &fifo_vnodeop_p, fifo_vnodeop_entries };
133
129
134VNODEOP_SET(fifo_vnodeop_opv_desc);
135
136struct mtx fifo_mtx;
137MTX_SYSINIT(fifo, &fifo_mtx, "fifo mutex", MTX_DEF);
138
130struct mtx fifo_mtx;
131MTX_SYSINIT(fifo, &fifo_mtx, "fifo mutex", MTX_DEF);
132
139int
140fifo_vnoperate(ap)
141 struct vop_generic_args /* {
142 struct vnodeop_desc *a_desc;
143 <other random data follows, presumably>
144 } */ *ap;
145{
146 return (VOCALL(fifo_vnodeop_p, ap->a_desc->vdesc_offset, ap));
147}
148
149/*
150 * Dispose of fifo resources.
151 */
152static void
153fifo_cleanup(struct vnode *vp)
154{
155 struct fifoinfo *fip = vp->v_fifoinfo;
156

--- 549 unchanged lines hidden ---
133/*
134 * Dispose of fifo resources.
135 */
136static void
137fifo_cleanup(struct vnode *vp)
138{
139 struct fifoinfo *fip = vp->v_fifoinfo;
140

--- 549 unchanged lines hidden ---