summaryrefslogtreecommitdiff
path: root/sys/src/cmd/rio/fsys.c
diff options
context:
space:
mode:
authorJacob Moody <moody@posixcafe.org>2022-08-15 02:59:49 +0000
committerJacob Moody <moody@posixcafe.org>2022-08-15 02:59:49 +0000
commit8906ad7c15744271d0f6a41ae2f590a8bc31bf21 (patch)
treeed459c7f4f912774921642a911949f75058f5d9e /sys/src/cmd/rio/fsys.c
parent4df168d98fb7b73e50d702b70ceffcaddfe8203c (diff)
rio: add /dev/kbdtap
Diffstat (limited to 'sys/src/cmd/rio/fsys.c')
-rw-r--r--sys/src/cmd/rio/fsys.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/sys/src/cmd/rio/fsys.c b/sys/src/cmd/rio/fsys.c
index be81a1d57..49c9c7d2f 100644
--- a/sys/src/cmd/rio/fsys.c
+++ b/sys/src/cmd/rio/fsys.c
@@ -37,6 +37,7 @@ Dirtab dirtab[]=
{ "wctl", QTFILE, Qwctl, 0600 },
{ "window", QTFILE, Qwindow, 0400 },
{ "wsys", QTDIR, Qwsys, 0500|DMDIR },
+ { "kbdtap", QTFILE, Qtap, 0660 },
{ nil, }
};
@@ -115,6 +116,16 @@ cexecpipe(int *p0, int *p1)
return 0;
}
+void
+toggletap(char mode)
+{
+ Tapmesg m;
+
+ m.type = mode;
+ m.s = nil;
+ send(fromtap, &m);
+}
+
Filsys*
filsysinit(Channel *cxfidalloc)
{
@@ -506,7 +517,9 @@ filsysopen(Filsys *fs, Xfid *x, Fid *f)
}
if(((f->dir->perm&~(DMDIR|DMAPPEND))&m) != m)
goto Deny;
-
+
+ if(FILE(f->qid) == Qtap)
+ toggletap(Fon);
sendp(x->c, xfidopen);
return nil;
@@ -616,6 +629,8 @@ filsysclunk(Filsys *fs, Xfid *x, Fid *f)
if(f->open){
f->busy = FALSE;
f->open = FALSE;
+ if(FILE(f->qid) == Qtap)
+ toggletap(Foff);
sendp(x->c, xfidclose);
return nil;
}