diff --git a/sys/src/kern/port/devcons.c b/sys/src/kern/port/devcons.c index 94266e0..7cebd59 100644 --- a/sys/src/kern/port/devcons.c +++ b/sys/src/kern/port/devcons.c @@ -674,7 +674,6 @@ enum{ Qkprint, Qhostdomain, Qhostowner, - Qnull, Qosversion, Qrandom, Qreboot, @@ -684,7 +683,6 @@ enum{ Qtime, Quser, Qusers, - Qzero, }; enum @@ -704,7 +702,6 @@ static Dirtab consdir[]={ "hostowner", {Qhostowner}, 0, 0664, "kmesg", {Qkmesg}, 0, 0440, "kprint", {Qkprint, 0, QTEXCL}, 0, DMEXCL|0440, - "null", {Qnull}, 0, 0666, "osversion", {Qosversion}, 0, 0444, "random", {Qrandom}, 0, 0444, "reboot", {Qreboot}, 0, 0664, @@ -714,7 +711,6 @@ static Dirtab consdir[]={ "time", {Qtime}, NUMSIZE+3*VLNUMSIZE, 0664, "user", {Quser}, 0, 0666, "users", {Qusers}, 0, 0644, - "zero", {Qzero}, 0, 0444, }; int @@ -956,9 +952,6 @@ consread(Chan *c, void *buf, long n, int64_t off) free(b); return n; - case Qnull: - return 0; - // case Qconfig: // return readstr((uint32_t)offset, buf, n, configfile); @@ -1036,10 +1029,6 @@ consread(Chan *c, void *buf, long n, int64_t off) case Qdrivers: return devtabread(c, buf, n, off); - case Qzero: - memset(buf, 0, n); - return n; - case Qosversion: return readstr(offset, buf, n, "2000"); @@ -1127,9 +1116,6 @@ conswrite(Chan *c, void *va, long n, int64_t off) case Qusers: return userswrite(a, n); - case Qnull: - break; - // case Qconfig: // error(Eperm); // break; diff --git a/sys/src/kern/port/devself.c b/sys/src/kern/port/devself.c index 572f60d..d2abee9 100644 --- a/sys/src/kern/port/devself.c +++ b/sys/src/kern/port/devself.c @@ -40,6 +40,11 @@ typedef enum SelfNodes Qsegments, Qpipes, Qwdir, + + /* safe resources */ + Qnull, + Qzero, + } SelfNodes; typedef enum SegmentsCmd @@ -71,6 +76,9 @@ static Dirtab selfdir[]={ "segments", {Qsegments}, 0, 0644, "pipes", {Qpipes}, 0, 0, "wdir", {Qwdir}, 0, 0644, + + "null", {Qnull}, 0, 0666, + "zero", {Qzero}, 0, 0444, }; @@ -319,6 +327,12 @@ selfread(Chan *c, void *va, long n, int64_t off) case Qpgrpid: return readnum(offset, va, n, up->pgrp->pgrpid, NUMSIZE); + case Qnull: + return 0; + case Qzero: + memset(va, 0, n); + return n; + default: error(Egreg); } @@ -466,6 +480,9 @@ selfwrite(Chan *c, void *va, long n, int64_t off) return procsegctl(up, va, n); case Qwdir: return write_working_dir(up, va, n, off); + + case Qnull: + return n; } }