source: rtems/cpukit/libfs/src/rfs/rtems-rfs-trace.c @ ce8cc899

4.10
Last change on this file since ce8cc899 was ce8cc899, checked in by Chris Johns <chrisj@…>, on 10/11/10 at 21:12:48

The patch to the 4.10 branch did not apply correctly. This fixes it.

  • Property mode set to 100644
File size: 3.2 KB
Line 
1/*
2 *  COPYRIGHT (c) 2010 Chris Johns <chrisj@rtems.org>
3 *
4 *  The license and distribution terms for this file may be
5 *  found in the file LICENSE in this distribution or at
6 *  http://www.rtems.com/license/LICENSE.
7 *
8 *  $Id$
9 */
10/**
11 * @file
12 *
13 * @ingroup rtems-rfs
14 *
15 * RTEMS File Systems Trace Support
16 */
17
18#if HAVE_CONFIG_H
19#include "config.h"
20#endif
21
22#include <string.h>
23#include <rtems/rfs/rtems-rfs-trace.h>
24
25#if RTEMS_RFS_TRACE
26static rtems_rfs_trace_mask rtems_rfs_trace_flags;
27
28bool
29rtems_rfs_trace (rtems_rfs_trace_mask mask)
30{
31  bool result = false;
32  if (mask & rtems_rfs_trace_flags)
33    result = true;
34  return result;
35}
36
37rtems_rfs_trace_mask
38rtems_rfs_trace_set_mask (rtems_rfs_trace_mask mask)
39{
40  rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
41  rtems_rfs_trace_flags |= mask;
42  return state;
43}
44
45rtems_rfs_trace_mask
46rtems_rfs_trace_clear_mask (rtems_rfs_trace_mask mask)
47{
48  rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
49  rtems_rfs_trace_flags &= ~mask;
50  return state;
51}
52
53int
54rtems_rfs_trace_shell_command (int argc, char *argv[])
55{
56  const char* table[] =
57  {
58    "open",
59    "close",
60    "mutex",
61    "buffer-open",
62    "buffer-close",
63    "buffer-sync",
64    "buffer-release",
65    "buffer-chains",
66    "buffer-handle-request",
67    "buffer-handle-release",
68    "buffer-setblksize",
69    "buffers-release",
70    "block-find",
71    "block-map-grow",
72    "block-map-shrink",
73    "group-open",
74    "group-close",
75    "group-bitmaps",
76    "inode-open",
77    "inode-close",
78    "inode-load",
79    "inode-unload",
80    "inode-create",
81    "inode-delete",
82    "link",
83    "unlink",
84    "dir-lookup-ino",
85    "dir-lookup-ino-check",
86    "dir-lookup-ino-found",
87    "dir-add-entry",
88    "dir-del-entry",
89    "dir-read",
90    "dir-empty",
91    "symlink",
92    "symlink-read",
93    "file-open",
94    "file-close",
95    "file-io"
96  };
97
98  rtems_rfs_trace_mask set_value = 0;
99  rtems_rfs_trace_mask clear_value = 0;
100  bool                 set = true;
101  int                  arg;
102  int                  t;
103 
104  for (arg = 1; arg < argc; arg++)
105  {
106    if (argv[arg][0] == '-')
107    {
108      switch (argv[arg][1])
109      {
110        case 'h':
111          printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);
112          return 0;
113        case 'l':
114          printf ("%s: valid flags to set or clear are:\n", argv[0]);
115          for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
116            printf ("  %s\n", table[t]);
117          return 0;
118        default:
119          printf ("error: unknown option\n");
120          return 1;
121      }
122    }
123    else
124    {
125      if (strcmp (argv[arg], "set") == 0)
126        set = true;
127      if (strcmp (argv[arg], "clear") == 0)
128        set = false;
129      else if (strcmp (argv[arg], "all") == 0)
130      {
131        if (set)
132          set_value = RTEMS_RFS_TRACE_ALL;
133        else
134          clear_value = RTEMS_RFS_TRACE_ALL;
135      }
136      else
137      {
138        for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
139        {
140          if (strcmp (argv[arg], table[t]) == 0)
141          {
142            if (set)
143              set_value = 1 << t;
144            else
145              clear_value = 1 << t;
146            break;
147          }
148        }
149      }
150
151      rtems_rfs_trace_flags |= set_value;
152      rtems_rfs_trace_flags &= ~clear_value;
153    }
154  }
155
156  return 0;
157}
158
159#endif
Note: See TracBrowser for help on using the repository browser.