Lines Matching defs:ptyfs
75 * ptyfs vnode interface
105 #include <fs/ptyfs/ptyfs.h>
142 * ptyfs vnode operations.
221 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
223 if (ptyfs->ptyfs_type == PTYFSptc)
224 ptyfs_clr_active(vp->v_mount, ptyfs->ptyfs_pty);
279 struct ptyfsnode *ptyfs = VTOPTYFS(ap->a_vp);
282 ptyfs->ptyfs_type, ptyfs->ptyfs_pty);
295 struct ptyfsnode *ptyfs = VTOPTYFS(ap->a_vp);
297 switch (ptyfs->ptyfs_type) {
313 * this is relatively minimal for ptyfs.
323 struct ptyfsnode *ptyfs = VTOPTYFS(ap->a_vp);
326 PTYFS_ITIMES(ptyfs, NULL, NULL, NULL);
334 vap->va_fileid = ptyfs->ptyfs_fileno;
339 vap->va_atime = ptyfs->ptyfs_atime;
340 vap->va_mtime = ptyfs->ptyfs_mtime;
341 vap->va_ctime = ptyfs->ptyfs_ctime;
342 vap->va_birthtime = ptyfs->ptyfs_birthtime;
343 vap->va_mode = ptyfs->ptyfs_mode;
344 vap->va_flags = ptyfs->ptyfs_flags;
345 vap->va_uid = ptyfs->ptyfs_uid;
346 vap->va_gid = ptyfs->ptyfs_gid;
348 switch (ptyfs->ptyfs_type) {
351 if (pty_isfree(ptyfs->ptyfs_pty, 1))
380 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
389 switch (ptyfs->ptyfs_type) {
404 /* Immutable and append-only flags are not supported on ptyfs. */
409 if ((vap->va_flags & SF_SNAPSHOT) != (ptyfs->ptyfs_flags & SF_SNAPSHOT))
412 if ((ptyfs->ptyfs_flags & SF_SETTABLE) != (vap->va_flags & SF_SETTABLE)) {
418 genfs_can_chflags(vp, cred, ptyfs->ptyfs_uid,
424 ptyfs->ptyfs_flags = vap->va_flags;
426 ptyfs->ptyfs_flags &= SF_SETTABLE;
427 ptyfs->ptyfs_flags |= (vap->va_flags & UF_SETTABLE);
429 ptyfs->ptyfs_status |= PTYFS_CHANGE;
447 if ((ptyfs->ptyfs_flags & SF_SNAPSHOT) != 0)
450 NULL, genfs_can_chtimes(vp, cred, ptyfs->ptyfs_uid,
456 ptyfs->ptyfs_status |= PTYFS_ACCESS;
458 ptyfs->ptyfs_status |= PTYFS_CHANGE | PTYFS_MODIFY;
460 ptyfs->ptyfs_status |= PTYFS_ACCESS;
463 ptyfs->ptyfs_birthtime = vap->va_birthtime;
464 ptyfs->ptyfs_status |= PTYFS_CHANGE;
472 if ((ptyfs->ptyfs_flags & SF_SNAPSHOT) != 0 &&
490 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
494 NULL, genfs_can_chmod(vp, cred, ptyfs->ptyfs_uid, ptyfs->ptyfs_gid,
499 ptyfs->ptyfs_mode &= ~ALLPERMS;
500 ptyfs->ptyfs_mode |= (mode & ALLPERMS);
512 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
516 uid = ptyfs->ptyfs_uid;
518 gid = ptyfs->ptyfs_gid;
521 NULL, genfs_can_chown(vp, cred, ptyfs->ptyfs_uid, ptyfs->ptyfs_gid,
526 ptyfs->ptyfs_gid = gid;
527 ptyfs->ptyfs_uid = uid;
588 struct ptyfsnode *ptyfs;
602 ptyfs = VTOPTYFS(dvp);
603 switch (ptyfs->ptyfs_type) {
634 * the strategy here with ptyfs is to generate a single
638 * the number of calls to uiomove(). for ptyfs, this is
656 struct ptyfsnode *ptyfs;
665 ptyfs = VTOPTYFS(vp);
679 if (ptyfs->ptyfs_type != PTYFSroot) {
751 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
753 switch (ptyfs->ptyfs_type) {
773 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
777 PTYFS_ITIMES(ptyfs, NULL, NULL, NULL);
780 switch (ptyfs->ptyfs_type) {
802 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
808 ptyfs->ptyfs_status |= PTYFS_ACCESS;
809 /* hardclock() resolution is good enough for ptyfs */
813 switch (ptyfs->ptyfs_type) {
836 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
839 ptyfs->ptyfs_status |= PTYFS_MODIFY;
843 switch (ptyfs->ptyfs_type) {
866 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
868 switch (ptyfs->ptyfs_type) {
886 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
888 switch (ptyfs->ptyfs_type) {
905 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
907 switch (ptyfs->ptyfs_type) {
920 struct ptyfsnode *ptyfs = VTOPTYFS(vp);
925 PTYFS_ITIMES(ptyfs, acc, mod, NULL);
930 ptyfs_itimes(struct ptyfsnode *ptyfs, const struct timespec *acc,
935 KASSERT(ptyfs->ptyfs_status & (PTYFS_ACCESS|PTYFS_CHANGE|PTYFS_MODIFY));
938 if (ptyfs->ptyfs_status & PTYFS_ACCESS) {
941 ptyfs->ptyfs_atime = *acc;
943 if (ptyfs->ptyfs_status & PTYFS_MODIFY) {
946 ptyfs->ptyfs_mtime = *mod;
948 if (ptyfs->ptyfs_status & PTYFS_CHANGE) {
951 ptyfs->ptyfs_ctime = *cre;
953 ptyfs->ptyfs_status &= ~(PTYFS_ACCESS|PTYFS_CHANGE|PTYFS_MODIFY);