#include <stdint.h>
#include <sys/types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
struct fs_handle;
struct fd_tracker;
* under which unlinked files will be stored for as long as a reference to them
* is held.
*/
-LTTNG_HIDDEN
struct fd_tracker *fd_tracker_create(const char *unlinked_file_path,
unsigned int capacity);
/* Returns an error if file descriptors are leaked. */
-LTTNG_HIDDEN
int fd_tracker_destroy(struct fd_tracker *tracker);
/*
* (e.g. truncation) may react differently than if the file descriptor was kept
* open.
*/
-LTTNG_HIDDEN
struct fs_handle *fd_tracker_open_fs_handle(struct fd_tracker *tracker,
struct lttng_directory_handle *directory,
const char *path,
* negative tracker-specific codes may be returned:
* - ENOMEM: allocation of a new entry failed,
* - EMFILE: too many unsuspendable fds are opened and the tracker can't
- * accomodate the request for a new unsuspendable entry.
+ * accommodates the request for a new unsuspendable entry.
*/
-LTTNG_HIDDEN
int fd_tracker_open_unsuspendable_fd(struct fd_tracker *tracker,
int *out_fds,
const char **names,
* Closed fds are set to -1 in the fds array which, in the event of an error,
* allows the user to know which file descriptors are no longer being tracked.
*/
-LTTNG_HIDDEN
int fd_tracker_close_unsuspendable_fd(struct fd_tracker *tracker,
int *fds,
unsigned int fd_count,
/*
* Log the contents of the fd_tracker.
*/
-LTTNG_HIDDEN
void fd_tracker_log(struct fd_tracker *tracker);
-/*
- * Marks the handle as the most recently used and marks the 'fd' as
- * "in-use". This prevents the tracker from recycling the underlying
- * file descriptor while it is actively being used by a thread.
- *
- * Don't forget that the tracker may be initiating an fd 'suspension'
- * from another thread as the need to free an fd slot may arise from any
- * thread within the daemon.
- *
- * Note that a restorable fd should never be held for longer than
- * strictly necessary (e.g. the duration of a syscall()).
- *
- * Returns the fd on success, otherwise a negative value may be returned
- * if the restoration of the fd failed.
- */
-LTTNG_HIDDEN
-int fs_handle_get_fd(struct fs_handle *handle);
-
-/*
- * Used by the application to signify that it is no longer using the
- * underlying fd and that it may be suspended.
- */
-LTTNG_HIDDEN
-void fs_handle_put_fd(struct fs_handle *handle);
-
-/*
- * Unlink the file associated to an fs_handle. Note that the unlink
- * operation will not be performed immediately. It will only be performed
- * once all references to the underlying file (through other fs_handle objects)
- * have been released.
- *
- * However, note that the file will be renamed so as to provide the observable
- * effect of an unlink(), that is removing a name from the filesystem.
- *
- * Returns 0 on success, otherwise a negative value will be returned
- * if the operation failed.
- */
-LTTNG_HIDDEN
-int fs_handle_unlink(struct fs_handle *handle);
-
-/*
- * Frees the handle and discards the underlying fd.
- */
-LTTNG_HIDDEN
-int fs_handle_close(struct fs_handle *handle);
+#ifdef __cplusplus
+}
+#endif
#endif /* FD_TRACKER_H */