about summary refs log tree commit diff
path: root/support/descriptors.h
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2018-12-06 15:39:42 +0100
committerFlorian Weimer <fweimer@redhat.com>2018-12-06 15:39:42 +0100
commitf255336a9301619519045548acb2e1027065a837 (patch)
tree7b0774eba027b876db3c6242c5ac5a3f92f357b4 /support/descriptors.h
parent35caceb145ff23340edcd67dd813bfd95f1ff6e6 (diff)
downloadglibc-f255336a9301619519045548acb2e1027065a837.tar.gz
glibc-f255336a9301619519045548acb2e1027065a837.tar.xz
glibc-f255336a9301619519045548acb2e1027065a837.zip
support: Implement <support/descriptors.h> to track file descriptors
Diffstat (limited to 'support/descriptors.h')
-rw-r--r--support/descriptors.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/support/descriptors.h b/support/descriptors.h
new file mode 100644
index 0000000000..8ec4cbbdfb
--- /dev/null
+++ b/support/descriptors.h
@@ -0,0 +1,47 @@
+/* Monitoring file descriptor usage.
+   Copyright (C) 2018 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef SUPPORT_DESCRIPTORS_H
+#define SUPPORT_DESCRIPTORS_H
+
+#include <stdio.h>
+
+/* Opaque pointer, for capturing file descriptor lists.  */
+struct support_descriptors;
+
+/* Record the currently open file descriptors and store them in the
+   returned list.  Terminate the process if the listing operation
+   fails.  */
+struct support_descriptors *support_descriptors_list (void);
+
+/* Deallocate the list of descriptors.  */
+void support_descriptors_free (struct support_descriptors *);
+
+/* Write the list of descriptors to STREAM, adding PREFIX to each
+   line.  */
+void support_descriptors_dump (struct support_descriptors *,
+                               const char *prefix, FILE *stream);
+
+/* Check for file descriptor leaks and other file descriptor changes:
+   Compare the current list of descriptors with the passed list.
+   Record a test failure if there are additional open descriptors,
+   descriptors have been closed, or if a change in file descriptor can
+   be detected.  */
+void support_descriptors_check (struct support_descriptors *);
+
+#endif /* SUPPORT_DESCRIPTORS_H */