1170808Sdelphij/*	$NetBSD: tmpfs_fifoops.c,v 1.5 2005/12/11 12:24:29 christos Exp $	*/
2170808Sdelphij
3182739Sdelphij/*-
4170808Sdelphij * Copyright (c) 2005 The NetBSD Foundation, Inc.
5170808Sdelphij * All rights reserved.
6170808Sdelphij *
7170808Sdelphij * This code is derived from software contributed to The NetBSD Foundation
8170808Sdelphij * by Julio M. Merino Vidal, developed as part of Google's Summer of Code
9170808Sdelphij * 2005 program.
10170808Sdelphij *
11170808Sdelphij * Redistribution and use in source and binary forms, with or without
12170808Sdelphij * modification, are permitted provided that the following conditions
13170808Sdelphij * are met:
14170808Sdelphij * 1. Redistributions of source code must retain the above copyright
15170808Sdelphij *    notice, this list of conditions and the following disclaimer.
16170808Sdelphij * 2. Redistributions in binary form must reproduce the above copyright
17170808Sdelphij *    notice, this list of conditions and the following disclaimer in the
18170808Sdelphij *    documentation and/or other materials provided with the distribution.
19170808Sdelphij *
20170808Sdelphij * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
21170808Sdelphij * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22170808Sdelphij * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23170808Sdelphij * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24170808Sdelphij * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25170808Sdelphij * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26170808Sdelphij * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27170808Sdelphij * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28170808Sdelphij * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29170808Sdelphij * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30170808Sdelphij * POSSIBILITY OF SUCH DAMAGE.
31170808Sdelphij */
32170808Sdelphij
33170808Sdelphij/*
34170808Sdelphij * tmpfs vnode interface for named pipes.
35170808Sdelphij */
36170808Sdelphij#include <sys/cdefs.h>
37170808Sdelphij __FBSDID("$FreeBSD: stable/11/sys/fs/tmpfs/tmpfs_fifoops.c 346286 2019-04-16 17:43:14Z kib $");
38170808Sdelphij
39170808Sdelphij#include <sys/param.h>
40170808Sdelphij#include <sys/filedesc.h>
41170808Sdelphij#include <sys/proc.h>
42170808Sdelphij#include <sys/vnode.h>
43170808Sdelphij
44170808Sdelphij#include <vm/vm.h>
45170808Sdelphij#include <vm/vm_object.h>
46170808Sdelphij
47170808Sdelphij#include <fs/tmpfs/tmpfs.h>
48170808Sdelphij#include <fs/tmpfs/tmpfs_fifoops.h>
49170808Sdelphij#include <fs/tmpfs/tmpfs_vnops.h>
50170808Sdelphij
51171069Sdelphijstatic int
52170808Sdelphijtmpfs_fifo_close(struct vop_close_args *v)
53170808Sdelphij{
54170808Sdelphij	struct tmpfs_node *node;
55312066Skib
56170808Sdelphij	node = VP_TO_TMPFS_NODE(v->a_vp);
57346286Skib	tmpfs_set_status(VFS_TO_TMPFS(v->a_vp->v_mount), node,
58346286Skib	    TMPFS_NODE_ACCESSED);
59170808Sdelphij	tmpfs_update(v->a_vp);
60312066Skib	return (fifo_specops.vop_close(v));
61170808Sdelphij}
62171069Sdelphij
63171069Sdelphij/*
64171069Sdelphij * vnode operations vector used for fifos stored in a tmpfs file system.
65171069Sdelphij */
66171069Sdelphijstruct vop_vector tmpfs_fifoop_entries = {
67171069Sdelphij	.vop_default =			&fifo_specops,
68171069Sdelphij	.vop_close =			tmpfs_fifo_close,
69171069Sdelphij	.vop_reclaim =			tmpfs_reclaim,
70171069Sdelphij	.vop_access =			tmpfs_access,
71171069Sdelphij	.vop_getattr =			tmpfs_getattr,
72171069Sdelphij	.vop_setattr =			tmpfs_setattr,
73328298Sjhb	.vop_pathconf =                 tmpfs_pathconf,
74328295Sjhb	.vop_print =			tmpfs_print,
75171069Sdelphij};
76