The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/fs/ntfs/debug.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * debug.c - NTFS kernel debug support. Part of the Linux-NTFS project.
    3  *
    4  * Copyright (c) 2001-2004 Anton Altaparmakov
    5  *
    6  * This program/include file is free software; you can redistribute it and/or
    7  * modify it under the terms of the GNU General Public License as published
    8  * by the Free Software Foundation; either version 2 of the License, or
    9  * (at your option) any later version.
   10  *
   11  * This program/include file is distributed in the hope that it will be
   12  * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
   13  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   14  * GNU General Public License for more details.
   15  *
   16  * You should have received a copy of the GNU General Public License
   17  * along with this program (in the main directory of the Linux-NTFS
   18  * distribution in the file COPYING); if not, write to the Free Software
   19  * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   20  */
   21 
   22 #include "debug.h"
   23 
   24 /*
   25  * A static buffer to hold the error string being displayed and a spinlock
   26  * to protect concurrent accesses to it.
   27  */
   28 static char err_buf[1024];
   29 static DEFINE_SPINLOCK(err_buf_lock);
   30 
   31 /**
   32  * __ntfs_warning - output a warning to the syslog
   33  * @function:   name of function outputting the warning
   34  * @sb:         super block of mounted ntfs filesystem
   35  * @fmt:        warning string containing format specifications
   36  * @...:        a variable number of arguments specified in @fmt
   37  *
   38  * Outputs a warning to the syslog for the mounted ntfs filesystem described
   39  * by @sb.
   40  *
   41  * @fmt and the corresponding @... is printf style format string containing
   42  * the warning string and the corresponding format arguments, respectively.
   43  *
   44  * @function is the name of the function from which __ntfs_warning is being
   45  * called.
   46  *
   47  * Note, you should be using debug.h::ntfs_warning(@sb, @fmt, @...) instead
   48  * as this provides the @function parameter automatically.
   49  */
   50 void __ntfs_warning(const char *function, const struct super_block *sb,
   51                 const char *fmt, ...)
   52 {
   53         va_list args;
   54         int flen = 0;
   55 
   56 #ifndef DEBUG
   57         if (!printk_ratelimit())
   58                 return;
   59 #endif
   60         if (function)
   61                 flen = strlen(function);
   62         spin_lock(&err_buf_lock);
   63         va_start(args, fmt);
   64         vsnprintf(err_buf, sizeof(err_buf), fmt, args);
   65         va_end(args);
   66         if (sb)
   67                 printk(KERN_ERR "NTFS-fs warning (device %s): %s(): %s\n",
   68                                 sb->s_id, flen ? function : "", err_buf);
   69         else
   70                 printk(KERN_ERR "NTFS-fs warning: %s(): %s\n",
   71                                 flen ? function : "", err_buf);
   72         spin_unlock(&err_buf_lock);
   73 }
   74 
   75 /**
   76  * __ntfs_error - output an error to the syslog
   77  * @function:   name of function outputting the error
   78  * @sb:         super block of mounted ntfs filesystem
   79  * @fmt:        error string containing format specifications
   80  * @...:        a variable number of arguments specified in @fmt
   81  *
   82  * Outputs an error to the syslog for the mounted ntfs filesystem described
   83  * by @sb.
   84  *
   85  * @fmt and the corresponding @... is printf style format string containing
   86  * the error string and the corresponding format arguments, respectively.
   87  *
   88  * @function is the name of the function from which __ntfs_error is being
   89  * called.
   90  *
   91  * Note, you should be using debug.h::ntfs_error(@sb, @fmt, @...) instead
   92  * as this provides the @function parameter automatically.
   93  */
   94 void __ntfs_error(const char *function, const struct super_block *sb,
   95                 const char *fmt, ...)
   96 {
   97         va_list args;
   98         int flen = 0;
   99 
  100 #ifndef DEBUG
  101         if (!printk_ratelimit())
  102                 return;
  103 #endif
  104         if (function)
  105                 flen = strlen(function);
  106         spin_lock(&err_buf_lock);
  107         va_start(args, fmt);
  108         vsnprintf(err_buf, sizeof(err_buf), fmt, args);
  109         va_end(args);
  110         if (sb)
  111                 printk(KERN_ERR "NTFS-fs error (device %s): %s(): %s\n",
  112                                 sb->s_id, flen ? function : "", err_buf);
  113         else
  114                 printk(KERN_ERR "NTFS-fs error: %s(): %s\n",
  115                                 flen ? function : "", err_buf);
  116         spin_unlock(&err_buf_lock);
  117 }
  118 
  119 #ifdef DEBUG
  120 
  121 /* If 1, output debug messages, and if 0, don't. */
  122 int debug_msgs = 0;
  123 
  124 void __ntfs_debug (const char *file, int line, const char *function,
  125                 const char *fmt, ...)
  126 {
  127         va_list args;
  128         int flen = 0;
  129 
  130         if (!debug_msgs)
  131                 return;
  132         if (function)
  133                 flen = strlen(function);
  134         spin_lock(&err_buf_lock);
  135         va_start(args, fmt);
  136         vsnprintf(err_buf, sizeof(err_buf), fmt, args);
  137         va_end(args);
  138         printk(KERN_DEBUG "NTFS-fs DEBUG (%s, %d): %s(): %s\n", file, line,
  139                         flen ? function : "", err_buf);
  140         spin_unlock(&err_buf_lock);
  141 }
  142 
  143 /* Dump a runlist. Caller has to provide synchronisation for @rl. */
  144 void ntfs_debug_dump_runlist(const runlist_element *rl)
  145 {
  146         int i;
  147         const char *lcn_str[5] = { "LCN_HOLE         ", "LCN_RL_NOT_MAPPED",
  148                                    "LCN_ENOENT       ", "LCN_unknown      " };
  149 
  150         if (!debug_msgs)
  151                 return;
  152         printk(KERN_DEBUG "NTFS-fs DEBUG: Dumping runlist (values in hex):\n");
  153         if (!rl) {
  154                 printk(KERN_DEBUG "Run list not present.\n");
  155                 return;
  156         }
  157         printk(KERN_DEBUG "VCN              LCN               Run length\n");
  158         for (i = 0; ; i++) {
  159                 LCN lcn = (rl + i)->lcn;
  160 
  161                 if (lcn < (LCN)0) {
  162                         int index = -lcn - 1;
  163 
  164                         if (index > -LCN_ENOENT - 1)
  165                                 index = 3;
  166                         printk(KERN_DEBUG "%-16Lx %s %-16Lx%s\n",
  167                                         (long long)(rl + i)->vcn, lcn_str[index],
  168                                         (long long)(rl + i)->length,
  169                                         (rl + i)->length ? "" :
  170                                                 " (runlist end)");
  171                 } else
  172                         printk(KERN_DEBUG "%-16Lx %-16Lx  %-16Lx%s\n",
  173                                         (long long)(rl + i)->vcn,
  174                                         (long long)(rl + i)->lcn,
  175                                         (long long)(rl + i)->length,
  176                                         (rl + i)->length ? "" :
  177                                                 " (runlist end)");
  178                 if (!(rl + i)->length)
  179                         break;
  180         }
  181 }
  182 
  183 #endif

Cache object: f278e89ee3d99824978d0481c1f67dbb


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.