X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Ffd-tracker%2Ffd-tracker.h;h=5c9810749371071000437c9e49b5e2d2f33df5f3;hb=4878de5c7deb512bbdac4fdfc498907efa06fb7c;hp=d321181ae9f2a3a9f40189944b3bfaae6cfcbde1;hpb=5c1f54d1d586f61a92704753411bd82c5c928218;p=lttng-tools.git diff --git a/src/common/fd-tracker/fd-tracker.h b/src/common/fd-tracker/fd-tracker.h index d321181ae..5c9810749 100644 --- a/src/common/fd-tracker/fd-tracker.h +++ b/src/common/fd-tracker/fd-tracker.h @@ -1,23 +1,15 @@ /* - * Copyright (C) 2018 - Jérémie Galarneau + * Copyright (C) 2018 Jérémie Galarneau * - * 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 +#include #include #include @@ -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 */