mirror of
https://github.com/libfuse/libfuse.git
synced 2026-07-07 14:47:41 +08:00
d07e5f3668
This makes use of the bidirectional fusermount. Added is doc/README.mount, which explains the new bidirectional communication with fusermount. Signed-off-by: Bernd Schubert <bschubert@ddn.com>
89 lines
2.4 KiB
C
89 lines
2.4 KiB
C
/*
|
|
* FUSE: Filesystem in Userspace
|
|
* Copyright (C) 2026 Bernd Schubert <bsbernd.com>
|
|
*
|
|
* This program can be distributed under the terms of the GNU LGPLv2.
|
|
* See the file COPYING.LIB.
|
|
*
|
|
*/
|
|
|
|
#ifndef FUSE_DAEMONIZE_H_
|
|
#define FUSE_DAEMONIZE_H_
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* Flags for fuse_daemonize_start()
|
|
*/
|
|
#define FUSE_DAEMONIZE_NO_CHDIR (1 << 0)
|
|
#define FUSE_DAEMONIZE_NO_BACKGROUND (1 << 1)
|
|
|
|
/**
|
|
* Start daemonization process.
|
|
*
|
|
* Unless FUSE_DAEMONIZE_NO_BACKGROUND is set, this forks the process.
|
|
* The parent waits for a signal from the child via fuse_daemonize_success()
|
|
* or fuse_daemonize_fail().
|
|
* The child returns from this call and continues setup.
|
|
*
|
|
* Unless FUSE_DAEMONIZE_NO_CHDIR is set, changes directory to "/".
|
|
*
|
|
* Must be called before fuse_session_mount().
|
|
*
|
|
* @param flags combination of FUSE_DAEMONIZE_* flags
|
|
* @return 0 on success, negative errno on error
|
|
*/
|
|
int fuse_daemonize_early_start(unsigned int flags);
|
|
|
|
/**
|
|
* Signal daemonization success to parent and cleanup.
|
|
*
|
|
* To be called from the child process after a successful mount, when
|
|
* synchronous FUSE_INIT is used (FUSE_INIT as part of the mount).
|
|
*
|
|
* Automatically called for async FUSE_INIT.
|
|
*
|
|
*/
|
|
void fuse_daemonize_early_success(void);
|
|
|
|
/**
|
|
*
|
|
* Note: For synchronous FUSE_INIT, this must be called after
|
|
* fuse_session_mount() and before the first call to
|
|
* fuse_session_loop*(). For asynchronous FUSE_INIT, this should
|
|
* be called in the file system ->init() callback.
|
|
*
|
|
* In order to simplify application code, this should be called from
|
|
* the file system ->init() callback *and* after fuse_session_mount.
|
|
* Libfuse knows internally if this is a sync or async FUSE_INIT
|
|
* and will only signal the parent if the mount was completed.
|
|
* Signal daemonization failure to parent and cleanup.
|
|
*
|
|
* To be called from the child process on any kind of error.
|
|
*
|
|
* @param err Error code passed to the parent and used as process exit code.
|
|
|
|
*/
|
|
void fuse_daemonize_early_fail(int err);
|
|
|
|
/**
|
|
* Check if daemonization is active and waiting for signal.
|
|
*
|
|
* Can be called from the child process to check state of daemonization.
|
|
*
|
|
* @return true if active, false otherwise
|
|
*/
|
|
bool fuse_daemonize_early_is_active(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* FUSE_DAEMONIZE_H_ */
|
|
|