From f6853114c1dfeb041b1dc02a81a45bee05fc1ffd Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Tue, 16 May 2017 23:26:18 -0700 Subject: [PATCH] dll: fuse: implement fuse_exited --- inc/fuse/fuse.h | 9 +++++++++ src/dll/fuse/fuse.c | 7 +++++++ src/dll/fuse/library.h | 1 + 3 files changed, 17 insertions(+) diff --git a/inc/fuse/fuse.h b/inc/fuse/fuse.h index fc698daf..307a42ba 100644 --- a/inc/fuse/fuse.h +++ b/inc/fuse/fuse.h @@ -118,6 +118,8 @@ FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_loop_mt)(struct fsp_fuse_env *env, struct fuse *f); FSP_FUSE_API void FSP_FUSE_API_NAME(fsp_fuse_exit)(struct fsp_fuse_env *env, struct fuse *f); +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_exited)(struct fsp_fuse_env *env, + struct fuse *f); FSP_FUSE_API struct fuse_context *FSP_FUSE_API_NAME(fsp_fuse_get_context)(struct fsp_fuse_env *env); FSP_FUSE_SYM( @@ -171,6 +173,13 @@ void fuse_exit(struct fuse *f), (fsp_fuse_env(), f); }) +FSP_FUSE_SYM( +int fuse_exited(struct fuse *f), +{ + return FSP_FUSE_API_CALL(fsp_fuse_exited) + (fsp_fuse_env(), f); +}) + FSP_FUSE_SYM( struct fuse_context *fuse_get_context(void), { diff --git a/src/dll/fuse/fuse.c b/src/dll/fuse/fuse.c index c4583439..6f03ab3d 100644 --- a/src/dll/fuse/fuse.c +++ b/src/dll/fuse/fuse.c @@ -687,6 +687,13 @@ FSP_FUSE_API void fsp_fuse_exit(struct fsp_fuse_env *env, { if (0 != f->Service) FspServiceStop(f->Service); + f->exited = 1; +} + +FSP_FUSE_API int FSP_FUSE_API_NAME(fsp_fuse_exited)(struct fsp_fuse_env *env, + struct fuse *f) +{ + return f->exited; } FSP_FUSE_API struct fuse_context *fsp_fuse_get_context(struct fsp_fuse_env *env) diff --git a/src/dll/fuse/library.h b/src/dll/fuse/library.h index f5b87be9..2a0b2b60 100644 --- a/src/dll/fuse/library.h +++ b/src/dll/fuse/library.h @@ -50,6 +50,7 @@ struct fuse PWSTR MountPoint; FSP_FILE_SYSTEM *FileSystem; FSP_SERVICE *Service; /* weak */ + volatile int exited; }; struct fsp_fuse_context_header