linux/fs/ntfs/sysctl.c
<<
>>
Prefs
   1/*
   2 * sysctl.c - Code for sysctl handling in NTFS Linux kernel driver. Part of
   3 *            the Linux-NTFS project. Adapted from the old NTFS driver,
   4 *            Copyright (C) 1997 Martin von Löwis, Régis Duchesne
   5 *
   6 * Copyright (c) 2002-2005 Anton Altaparmakov
   7 *
   8 * This program/include file is free software; you can redistribute it and/or
   9 * modify it under the terms of the GNU General Public License as published
  10 * by the Free Software Foundation; either version 2 of the License, or
  11 * (at your option) any later version.
  12 *
  13 * This program/include file is distributed in the hope that it will be
  14 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
  15 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16 * GNU General Public License for more details.
  17 *
  18 * You should have received a copy of the GNU General Public License
  19 * along with this program (in the main directory of the Linux-NTFS
  20 * distribution in the file COPYING); if not, write to the Free Software
  21 * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  22 */
  23
  24#ifdef DEBUG
  25
  26#include <linux/module.h>
  27
  28#ifdef CONFIG_SYSCTL
  29
  30#include <linux/proc_fs.h>
  31#include <linux/sysctl.h>
  32
  33#include "sysctl.h"
  34#include "debug.h"
  35
  36/* Definition of the ntfs sysctl. */
  37static struct ctl_table ntfs_sysctls[] = {
  38        {
  39                .procname       = "ntfs-debug",
  40                .data           = &debug_msgs,          /* Data pointer and size. */
  41                .maxlen         = sizeof(debug_msgs),
  42                .mode           = 0644,                 /* Mode, proc handler. */
  43                .proc_handler   = proc_dointvec
  44        },
  45        {}
  46};
  47
  48/* Define the parent directory /proc/sys/fs. */
  49static struct ctl_table sysctls_root[] = {
  50        {
  51                .procname       = "fs",
  52                .mode           = 0555,
  53                .child          = ntfs_sysctls
  54        },
  55        {}
  56};
  57
  58/* Storage for the sysctls header. */
  59static struct ctl_table_header *sysctls_root_table;
  60
  61/**
  62 * ntfs_sysctl - add or remove the debug sysctl
  63 * @add:        add (1) or remove (0) the sysctl
  64 *
  65 * Add or remove the debug sysctl. Return 0 on success or -errno on error.
  66 */
  67int ntfs_sysctl(int add)
  68{
  69        if (add) {
  70                BUG_ON(sysctls_root_table);
  71                sysctls_root_table = register_sysctl_table(sysctls_root);
  72                if (!sysctls_root_table)
  73                        return -ENOMEM;
  74        } else {
  75                BUG_ON(!sysctls_root_table);
  76                unregister_sysctl_table(sysctls_root_table);
  77                sysctls_root_table = NULL;
  78        }
  79        return 0;
  80}
  81
  82#endif /* CONFIG_SYSCTL */
  83#endif /* DEBUG */
  84