9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit f879ad5e1049dfa365868aee963cfe7d6a5d32b9
parent 1c8fd7585b7625481e9fd45a17861c4d820d9608
Author: Roberto Vargas <roberto.vargas@arm.com>
Date:   Thu, 21 Feb 2019 21:35:37 +0000

[dev] Multiple fixes for devices

Change-Id: Ie5ce7d051782e49e9a3d31cd252dbe5ff85a9d4c

Diffstat:
Mdrivers/dev.c | 23++++++++++-------------
Mdrivers/devroot.c | 10+++++-----
2 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/drivers/dev.c b/drivers/dev.c @@ -186,6 +186,7 @@ devclone(Chan *c, Chan *nc) nc->dev = c->dev; nc->mode = c->mode; nc->offset = c->offset; + nc->type = c->type; return nc; } @@ -214,13 +215,12 @@ devwalk(Chan *c, const char *name, const Dirtab *tab, int ntab, Devgen *gen) if (name[0] == '.' && name[1] == '\0') return 1; - for (i = 0; ;i++) { + for (i = 0; ; i++) { switch ((*gen)(c, tab, ntab, i, &dir)) { - case -1: - errno = ENOENT; - return 0; case 0: - continue; + errno = ENOENT; + case -1: + return -1; case 1: if (strcmp(name, dir.name)) continue; @@ -228,15 +228,13 @@ devwalk(Chan *c, const char *name, const Dirtab *tab, int ntab, Devgen *gen) return 1; } } - - return 0; } int dirread(Chan *c, - unsigned char *buf, int nbytes, - const Dirtab *tab, int ntab, - Devgen *gen) + unsigned char *buf, int nbytes, + const Dirtab *tab, int ntab, + Devgen *gen) { int cnt, i, n; Dir dir; @@ -405,10 +403,9 @@ err0: void idev(void) { - Chan *c, *clim; + Chan *c; - clim = &fdset[NR_CHANS]; - for (c = fdset; c < clim; c++) + for (c = fdset; c < &fdset[NR_CHANS]; c++) c->type = NODEV; if ((c = devattach('/', 0)) == NULL) diff --git a/drivers/devroot.c b/drivers/devroot.c @@ -23,7 +23,7 @@ static const Dirtab devfstab[] = { static Chan *bindpoint[Qmax]; static int -gettab(Qid qid, const Dirtab **tab) +roottab(Qid qid, const Dirtab **tab) { switch (qid) { case Qroot: @@ -37,7 +37,7 @@ gettab(Qid qid, const Dirtab **tab) *tab = NULL; return 0; default: - panic("gettab"); + panic("roottab"); } } @@ -49,7 +49,7 @@ rootwalk(Chan *c, const char *name) Chan *mnt; const Dirtab *tab; - n = gettab(c->qid & ~CHDIR, &tab); + n = roottab(c->qid & ~CHDIR, &tab); if (devwalk(c, name, tab, n, devgen) < 0) return -1; @@ -99,9 +99,9 @@ rootread(Chan *c, void *buf, int n) if ((c->qid & CHDIR) == 0) return -1; - ntab = gettab(c->qid, &tab); + ntab = roottab(c->qid & ~CHDIR, &tab); - return dirread(c, buf, n, dirtab, ntab, devgen); + return dirread(c, buf, n, tab, ntab, devgen); } static int