hw/9pfs: Add yield support for open and opendir coroutine

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
This commit is contained in:
Aneesh Kumar K.V 2011-05-07 18:12:42 +05:30
parent e4e414a427
commit f6b7f0ab5c
3 changed files with 34 additions and 0 deletions

View file

@ -83,3 +83,19 @@ int v9fs_co_mkdir(V9fsState *s, char *name, mode_t mode, uid_t uid, gid_t gid)
});
return err;
}
int v9fs_co_opendir(V9fsState *s, V9fsFidState *fidp)
{
int err;
v9fs_co_run_in_worker(
{
fidp->fs.dir = s->ops->opendir(&s->ctx, fidp->path.data);
if (!fidp->fs.dir) {
err = -errno;
} else {
err = 0;
}
});
return err;
}

View file

@ -44,3 +44,19 @@ int v9fs_co_fstat(V9fsState *s, int fd, struct stat *stbuf)
});
return err;
}
int v9fs_co_open(V9fsState *s, V9fsFidState *fidp, int flags)
{
int err;
v9fs_co_run_in_worker(
{
fidp->fs.fd = s->ops->open(&s->ctx, fidp->path.data, flags);
if (fidp->fs.fd == -1) {
err = -errno;
} else {
err = 0;
}
});
return err;
}

View file

@ -77,4 +77,6 @@ extern int v9fs_co_mkdir(V9fsState *, char *, mode_t, uid_t, gid_t);
extern int v9fs_co_remove(V9fsState *, V9fsString *);
extern int v9fs_co_rename(V9fsState *, V9fsString *, V9fsString *);
extern int v9fs_co_fstat(V9fsState *, int, struct stat *);
extern int v9fs_co_opendir(V9fsState *, V9fsFidState *);
extern int v9fs_co_open(V9fsState *, V9fsFidState *, int);
#endif