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 --- |