162e1ddd2SSascha Wildner /*
262e1ddd2SSascha Wildner * Copyright (c) 2013 The DragonFly Project. All rights reserved.
362e1ddd2SSascha Wildner *
462e1ddd2SSascha Wildner * Redistribution and use in source and binary forms, with or without
562e1ddd2SSascha Wildner * modification, are permitted provided that the following conditions
662e1ddd2SSascha Wildner * are met:
762e1ddd2SSascha Wildner *
862e1ddd2SSascha Wildner * 1. Redistributions of source code must retain the above copyright
962e1ddd2SSascha Wildner * notice, this list of conditions and the following disclaimer.
1062e1ddd2SSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright
1162e1ddd2SSascha Wildner * notice, this list of conditions and the following disclaimer in
1262e1ddd2SSascha Wildner * the documentation and/or other materials provided with the
1362e1ddd2SSascha Wildner * distribution.
1462e1ddd2SSascha Wildner * 3. Neither the name of The DragonFly Project nor the names of its
1562e1ddd2SSascha Wildner * contributors may be used to endorse or promote products derived
1662e1ddd2SSascha Wildner * from this software without specific, prior written permission.
1762e1ddd2SSascha Wildner *
1862e1ddd2SSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1962e1ddd2SSascha Wildner * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2062e1ddd2SSascha Wildner * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
2162e1ddd2SSascha Wildner * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
2262e1ddd2SSascha Wildner * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
2362e1ddd2SSascha Wildner * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
2462e1ddd2SSascha Wildner * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
2562e1ddd2SSascha Wildner * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
2662e1ddd2SSascha Wildner * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2762e1ddd2SSascha Wildner * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
2862e1ddd2SSascha Wildner * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2962e1ddd2SSascha Wildner * SUCH DAMAGE.
3062e1ddd2SSascha Wildner */
3162e1ddd2SSascha Wildner
32*91ffdfc5SSascha Wildner #define _KERNEL_STRUCTURES
33*91ffdfc5SSascha Wildner
3462e1ddd2SSascha Wildner #include <sys/param.h>
3562e1ddd2SSascha Wildner #include <sys/stat.h>
3662e1ddd2SSascha Wildner #include <sys/time.h>
3762e1ddd2SSascha Wildner
3862e1ddd2SSascha Wildner #include <kvm.h>
3962e1ddd2SSascha Wildner #include <stdio.h>
4062e1ddd2SSascha Wildner
4162e1ddd2SSascha Wildner #include <sys/vnode.h>
4262e1ddd2SSascha Wildner #include <vfs/tmpfs/tmpfs.h>
4362e1ddd2SSascha Wildner
4462e1ddd2SSascha Wildner #include "fstat.h"
4562e1ddd2SSascha Wildner
4662e1ddd2SSascha Wildner int
tmpfs_filestat(struct vnode * vp,struct filestat * fsp)4762e1ddd2SSascha Wildner tmpfs_filestat(struct vnode *vp, struct filestat *fsp)
4862e1ddd2SSascha Wildner {
4962e1ddd2SSascha Wildner struct tmpfs_node ino;
5062e1ddd2SSascha Wildner struct mount mount_l;
5162e1ddd2SSascha Wildner
5262e1ddd2SSascha Wildner if (!kread(VTOI(vp), &ino, sizeof(ino))) {
5362e1ddd2SSascha Wildner dprintf(stderr, "can't read struct tmpfs_node at %p for pid %d\n",
5462e1ddd2SSascha Wildner VTOI(vp), Pid);
5562e1ddd2SSascha Wildner return 0;
5662e1ddd2SSascha Wildner }
5762e1ddd2SSascha Wildner if (!kread(vp->v_mount, &mount_l, sizeof(struct mount))) {
5862e1ddd2SSascha Wildner dprintf(stderr, "can't read struct mount at %p for pid %d\n",
5962e1ddd2SSascha Wildner vp->v_mount, Pid);
6062e1ddd2SSascha Wildner return 0;
6162e1ddd2SSascha Wildner }
6262e1ddd2SSascha Wildner fsp->fsid = mount_l.mnt_stat.f_fsid.val[0];
6362e1ddd2SSascha Wildner fsp->mode = ino.tn_mode | mtrans(ino.tn_type);
6462e1ddd2SSascha Wildner fsp->fileid = ino.tn_id;
6562e1ddd2SSascha Wildner fsp->size = ino.tn_size;
6662e1ddd2SSascha Wildner fsp->rdev = ino.tn_spec.tn_rdev;
6762e1ddd2SSascha Wildner return 1;
6862e1ddd2SSascha Wildner }
69