commit acce5499735e62c93f8383df281037b16f76b753
parent 1c4f3ff0aa165ed13b3706047dc001447f274f39
Author: Roberto Vargas <roberto.vargas@arm.com>
Date: Tue, 5 Mar 2019 12:27:25 +0000
[dev] Add devseek()
This function is like seek() but it acts over channels
instead of file descriptors.
Change-Id: I25463f460e6df3d1a6dc1015d239de3556da877f
Diffstat:
2 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/drivers/dev.c b/drivers/dev.c
@@ -380,18 +380,8 @@ devwrite(Chan *c, void *buf, int n)
}
int
-seek(int fd, long long off, int whence)
+devseek(Chan *c, long long off, int whence)
{
- Chan *c;
-
- if ((c = fd2chan(fd)) == NULL)
- return -1;
-
- if (c->qid & CHDIR) {
- errno = EISDIR;
- return -1;
- }
-
switch (whence) {
case 0:
c->offset = off;
@@ -408,6 +398,22 @@ seek(int fd, long long off, int whence)
}
int
+seek(int fd, long long off, int whence)
+{
+ Chan *c;
+
+ if ((c = fd2chan(fd)) == NULL)
+ return -1;
+
+ if (c->qid & CHDIR) {
+ errno = EISDIR;
+ return -1;
+ }
+
+ return devseek(c, off,whence);
+}
+
+int
bind(char *new, char *where)
{
int i;
diff --git a/drivers/dev.h b/drivers/dev.h
@@ -41,6 +41,9 @@ struct attr {
char *value;
};
+
+extern int devseek(Chan *c, long long off, int whence);
+extern Chan * namec(const char *name, int mode);
extern Chan *clone(Chan *c, Chan *nc);
extern void chanclose(Chan *c);
extern int buf2chan(Chan *c,