Remove extern "C" from internal headers
[lttng-tools.git] / src / common / fd-tracker / fd-tracker.h
index d321181ae9f2a3a9f40189944b3bfaae6cfcbde1..5c9810749371071000437c9e49b5e2d2f33df5f3 100644 (file)
@@ -1,23 +1,15 @@
 /*
- * Copyright (C) 2018 Jérémie Galarneau <jeremie.galarneau@efficios.com>
+ * Copyright (C) 2018 Jérémie Galarneau <jeremie.galarneau@efficios.com>
  *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License, version 2 only, as
- * published by the Free Software Foundation.
+ * SPDX-License-Identifier: GPL-2.0-only
  *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef FD_TRACKER_H
 #define FD_TRACKER_H
 
+#include <common/compat/directory-handle.h>
+#include <common/macros.h>
 #include <stdint.h>
 #include <sys/types.h>
 
@@ -52,8 +44,13 @@ typedef int (*fd_close_cb)(void *, int *in_fds);
  * Set the maximal number of fds that the process should be allowed to open at
  * any given time. This function must be called before any other of this
  * interface.
+ *
+ * The unlinked_file_path is an absolute path (which does not need to exist)
+ * under which unlinked files will be stored for as long as a reference to them
+ * is held.
  */
-struct fd_tracker *fd_tracker_create(unsigned int capacity);
+struct fd_tracker *fd_tracker_create(const char *unlinked_file_path,
+               unsigned int capacity);
 
 /* Returns an error if file descriptors are leaked. */
 int fd_tracker_destroy(struct fd_tracker *tracker);
@@ -81,6 +78,7 @@ int fd_tracker_destroy(struct fd_tracker *tracker);
  * open.
  */
 struct fs_handle *fd_tracker_open_fs_handle(struct fd_tracker *tracker,
+               struct lttng_directory_handle *directory,
                const char *path,
                int flags,
                mode_t *mode);
@@ -105,7 +103,7 @@ struct fs_handle *fd_tracker_open_fs_handle(struct fd_tracker *tracker,
  * 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.
  */
 int fd_tracker_open_unsuspendable_fd(struct fd_tracker *tracker,
                int *out_fds,
@@ -140,46 +138,4 @@ int fd_tracker_close_unsuspendable_fd(struct fd_tracker *tracker,
  */
 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.
- */
-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.
- */
-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.
- */
-int fs_handle_unlink(struct fs_handle *handle);
-
-/*
- * Frees the handle and discards the underlying fd.
- */
-int fs_handle_close(struct fs_handle *handle);
-
 #endif /* FD_TRACKER_H */
This page took 0.024492 seconds and 4 git commands to generate.