50
50
# define VIR_FORCE_CLOSE(FD) ignore_value(virFileClose(&(FD), true))
51
51
# define VIR_FORCE_FCLOSE(FILE) ignore_value(virFileFclose(&(FILE), true))
53
/* Opaque type for managing a wrapper around an O_DIRECT fd. */
54
struct _virFileDirectFd;
53
/* Opaque type for managing a wrapper around a fd. */
54
struct _virFileWrapperFd;
56
typedef struct _virFileDirectFd virFileDirectFd;
57
typedef virFileDirectFd *virFileDirectFdPtr;
56
typedef struct _virFileWrapperFd virFileWrapperFd;
57
typedef virFileWrapperFd *virFileWrapperFdPtr;
59
59
int virFileDirectFdFlag(void);
61
virFileDirectFdPtr virFileDirectFdNew(int *fd, const char *name)
61
enum virFileWrapperFdFlags {
62
VIR_FILE_WRAPPER_BYPASS_CACHE = (1 << 0),
63
VIR_FILE_WRAPPER_NON_BLOCKING = (1 << 1),
66
virFileWrapperFdPtr virFileWrapperFdNew(int *fd,
62
69
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
64
int virFileDirectFdClose(virFileDirectFdPtr dfd);
71
int virFileWrapperFdClose(virFileWrapperFdPtr dfd);
66
void virFileDirectFdFree(virFileDirectFdPtr dfd);
73
void virFileWrapperFdFree(virFileWrapperFdPtr dfd);
68
75
int virFileLock(int fd, bool shared, off_t start, off_t len);
69
76
int virFileUnlock(int fd, off_t start, off_t len);
74
81
virFileRewriteFunc rewrite,
84
int virFileTouch(const char *path, mode_t mode);
86
int virFileUpdatePerm(const char *path,
77
90
#endif /* __VIR_FILES_H */