Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:12

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /**
0004  * @file
0005  *
0006  * @brief Manages the Trace and Debugging Features of the
0007  * RTEMS RFS File System
0008  *
0009  * @ingroup rtems_rfs
0010  *
0011  * RTEMS File Systems Trace manages the trace and debugging features of the
0012  * RTEMS RFS file system. The design allows all tracing code and strings to be
0013  * removed from the target code for small footprint systems.
0014  */
0015 
0016 /*
0017  *  COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
0018  *
0019  * Redistribution and use in source and binary forms, with or without
0020  * modification, are permitted provided that the following conditions
0021  * are met:
0022  * 1. Redistributions of source code must retain the above copyright
0023  *    notice, this list of conditions and the following disclaimer.
0024  * 2. Redistributions in binary form must reproduce the above copyright
0025  *    notice, this list of conditions and the following disclaimer in the
0026  *    documentation and/or other materials provided with the distribution.
0027  *
0028  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0029  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0030  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0031  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0032  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0033  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0034  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0035  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0036  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0037  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0038  * POSSIBILITY OF SUCH DAMAGE.
0039  */
0040 
0041 
0042 #if !defined (_RTEMS_RFS_TRACE_H_)
0043 #define _RTEMS_RFS_TRACE_H_
0044 
0045 #include <stddef.h>
0046 #include <stdbool.h>
0047 #include <stdint.h>
0048 #include <stdio.h>
0049 
0050 /**
0051  * Is tracing enabled ?
0052  */
0053 #if !defined (RTEMS_RFS_TRACE)
0054 #define RTEMS_RFS_TRACE 1
0055 #endif
0056 
0057 /**
0058  * The type of the mask.
0059  */
0060 typedef uint64_t rtems_rfs_trace_mask;
0061 
0062 /**
0063  * List of tracing bits for the various parts of the file system.
0064  */
0065 #define RTEMS_RFS_TRACE_ALL                    (0xffffffffffffffffULL)
0066 #define RTEMS_RFS_TRACE_OPEN                   (1ULL << 0)
0067 #define RTEMS_RFS_TRACE_CLOSE                  (1ULL << 1)
0068 #define RTEMS_RFS_TRACE_MUTEX                  (1ULL << 2)
0069 #define RTEMS_RFS_TRACE_BUFFER_OPEN            (1ULL << 3)
0070 #define RTEMS_RFS_TRACE_BUFFER_CLOSE           (1ULL << 4)
0071 #define RTEMS_RFS_TRACE_BUFFER_SYNC            (1ULL << 5)
0072 #define RTEMS_RFS_TRACE_BUFFER_RELEASE         (1ULL << 6)
0073 #define RTEMS_RFS_TRACE_BUFFER_CHAINS          (1ULL << 7)
0074 #define RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST  (1ULL << 8)
0075 #define RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE  (1ULL << 9)
0076 #define RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE      (1ULL << 10)
0077 #define RTEMS_RFS_TRACE_BUFFERS_RELEASE        (1ULL << 11)
0078 #define RTEMS_RFS_TRACE_BLOCK_FIND             (1ULL << 12)
0079 #define RTEMS_RFS_TRACE_BLOCK_MAP_GROW         (1ULL << 13)
0080 #define RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK       (1ULL << 14)
0081 #define RTEMS_RFS_TRACE_GROUP_OPEN             (1ULL << 15)
0082 #define RTEMS_RFS_TRACE_GROUP_CLOSE            (1ULL << 16)
0083 #define RTEMS_RFS_TRACE_GROUP_BITMAPS          (1ULL << 17)
0084 #define RTEMS_RFS_TRACE_INODE_OPEN             (1ULL << 18)
0085 #define RTEMS_RFS_TRACE_INODE_CLOSE            (1ULL << 19)
0086 #define RTEMS_RFS_TRACE_INODE_LOAD             (1ULL << 20)
0087 #define RTEMS_RFS_TRACE_INODE_UNLOAD           (1ULL << 21)
0088 #define RTEMS_RFS_TRACE_INODE_CREATE           (1ULL << 22)
0089 #define RTEMS_RFS_TRACE_INODE_DELETE           (1ULL << 23)
0090 #define RTEMS_RFS_TRACE_LINK                   (1ULL << 24)
0091 #define RTEMS_RFS_TRACE_UNLINK                 (1ULL << 25)
0092 #define RTEMS_RFS_TRACE_DIR_LOOKUP_INO         (1ULL << 26)
0093 #define RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK   (1ULL << 27)
0094 #define RTEMS_RFS_TRACE_DIR_LOOKUP_INO_FOUND   (1ULL << 28)
0095 #define RTEMS_RFS_TRACE_DIR_ADD_ENTRY          (1ULL << 29)
0096 #define RTEMS_RFS_TRACE_DIR_DEL_ENTRY          (1ULL << 30)
0097 #define RTEMS_RFS_TRACE_DIR_READ               (1ULL << 31)
0098 #define RTEMS_RFS_TRACE_DIR_EMPTY              (1ULL << 32)
0099 #define RTEMS_RFS_TRACE_SYMLINK                (1ULL << 33)
0100 #define RTEMS_RFS_TRACE_SYMLINK_READ           (1ULL << 34)
0101 #define RTEMS_RFS_TRACE_FILE_OPEN              (1ULL << 35)
0102 #define RTEMS_RFS_TRACE_FILE_CLOSE             (1ULL << 36)
0103 #define RTEMS_RFS_TRACE_FILE_IO                (1ULL << 37)
0104 #define RTEMS_RFS_TRACE_FILE_SET               (1ULL << 38)
0105 
0106 /**
0107  * Call to check if this part is bring traced. If RTEMS_RFS_TRACE is defined to
0108  * 0 the code is dead code elminiated when built with -Os, -O2, or higher.
0109  *
0110  * @param[in] mask is the part of the API to trace.
0111  *
0112  * @retval true Tracing is active for the mask.
0113  * @retval false Do not trace.
0114  */
0115 #if RTEMS_RFS_TRACE
0116 bool rtems_rfs_trace (rtems_rfs_trace_mask mask);
0117 #else
0118 #define rtems_rfs_trace(_m) (0)
0119 #endif
0120 
0121 /**
0122  * Set the mask.
0123  *
0124  * @param[in] mask are the mask bits to set.
0125  *
0126  * @retval mask The previous mask.
0127  */
0128 #if RTEMS_RFS_TRACE
0129 rtems_rfs_trace_mask rtems_rfs_trace_set_mask (rtems_rfs_trace_mask mask);
0130 #else
0131 #define rtems_rfs_trace_set_mask(_m)
0132 #endif
0133 
0134 /**
0135  * Clear the mask.
0136  *
0137  * @param[in] mask are the mask bits to clear.
0138  *
0139  * @retval mask The previous mask.
0140  */
0141 #if RTEMS_RFS_TRACE
0142 rtems_rfs_trace_mask rtems_rfs_trace_clear_mask (rtems_rfs_trace_mask mask);
0143 #else
0144 #define rtems_rfs_trace_clear_mask(_m)
0145 #endif
0146 
0147 /**
0148  * Add shell trace shell command.
0149  */
0150 #if RTEMS_RFS_TRACE
0151 int rtems_rfs_trace_shell_command (int argc, char *argv[]);
0152 #endif
0153 
0154 #endif