summaryrefslogtreecommitdiff
path: root/sys/miscfs/tcfs/tcfs_fileinfo.c
diff options
context:
space:
mode:
authorNiels Provos <provos@cvs.openbsd.org>2000-06-17 17:16:08 +0000
committerNiels Provos <provos@cvs.openbsd.org>2000-06-17 17:16:08 +0000
commit883d8fd44467302c3565033377329596ff584353 (patch)
tree6a4fab996854c794c5bbb82961a34807efb5bdb0 /sys/miscfs/tcfs/tcfs_fileinfo.c
parente5891f818a179b348802443c30c18b6ab4adfed8 (diff)
initial import of tcfs.
Diffstat (limited to 'sys/miscfs/tcfs/tcfs_fileinfo.c')
-rw-r--r--sys/miscfs/tcfs/tcfs_fileinfo.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/sys/miscfs/tcfs/tcfs_fileinfo.c b/sys/miscfs/tcfs/tcfs_fileinfo.c
new file mode 100644
index 00000000000..7077ee8f134
--- /dev/null
+++ b/sys/miscfs/tcfs/tcfs_fileinfo.c
@@ -0,0 +1,75 @@
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/proc.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/vnode.h>
+#include <sys/mount.h>
+#include <sys/namei.h>
+#include <sys/malloc.h>
+#include <sys/buf.h>
+#include <sys/stat.h>
+#include <miscfs/tcfs/tcfs.h>
+#include "tcfs_rw.h"
+
+
+tcfs_fileinfo tcfs_xgetflags(struct vnode *v, struct proc *p, struct ucred *c)
+{
+ tcfs_fileinfo r;
+ struct vop_getattr_args x;
+ struct vattr att;
+ int retval;
+
+ att=va_null;
+ x.a_desc=VDESC(vop_getattr);
+ x.a_vp=v;
+ x.a_vap=&att;
+ x.a_cred=c;
+ x.a_p=p;
+
+ retval=tcfs_bypass((void*)&x);
+ r.flag=(unsigned long)(x.a_vap->va_flags);
+ r.end_of_file=x.a_vap->va_size;
+
+ return r;
+}
+
+int tcfs_xsetflags(struct vnode *v, struct proc *p, struct ucred *c, tcfs_fileinfo *i)
+{
+ struct vop_setattr_args x;
+ struct vattr att;
+ int retval;
+
+ att=va_null;
+
+ att.va_flags=i->flag;
+
+ x.a_desc=VDESC(vop_setattr);
+ x.a_vp=v;
+ x.a_vap=&att;
+ x.a_cred=c;
+ x.a_p=p;
+
+ retval=tcfs_bypass((void*)&x);
+ return retval;
+}
+
+
+
+tcfs_fileinfo tcfs_get_fileinfo(void *a)
+{
+ struct vop_read_args *arg;
+
+ arg=(struct vop_read_args*)a;
+ return tcfs_xgetflags(arg->a_vp,arg->a_uio->uio_procp,arg->a_cred);
+}
+
+
+int tcfs_set_fileinfo(void *a, tcfs_fileinfo *i)
+{
+ struct vop_read_args *arg;
+
+ arg=(struct vop_read_args*)a;
+ return tcfs_xsetflags(arg->a_vp, arg->a_uio->uio_procp,arg->a_cred,i); ;
+}
+