linux/fs/ntfs/sysctl.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0-or-later
   2/*
   3 * sysctl.c - Code for sysctl handling in NTFS Linux kernel driver. Part of
   4 *            the Linux-NTFS project. Adapted from the old NTFS driver,
   5 *            Copyright (C) 1997 Martin von Löwis, Régis Duchesne
   6 *
   7 * Copyright (c) 2002-2005 Anton Altaparmakov
   8 */
   9
  10#ifdef DEBUG
  11
  12#include <linux/module.h>
  13
  14#ifdef CONFIG_SYSCTL
  15
  16#include <linux/proc_fs.h>
  17#include <linux/sysctl.h>
  18
  19#include "sysctl.h"
  20#include "debug.h"
  21
  22/* Definition of the ntfs sysctl. */
  23static struct ctl_table ntfs_sysctls[] = {
  24        {
  25                .procname       = "ntfs-debug",
  26                .data           = &debug_msgs,          /* Data pointer and size. */
  27                .maxlen         = sizeof(debug_msgs),
  28                .mode           = 0644,                 /* Mode, proc handler. */
  29                .proc_handler   = proc_dointvec
  30        },
  31        {}
  32};
  33
  34/* Define the parent directory /proc/sys/fs. */
  35static struct ctl_table sysctls_root[] = {
  36        {
  37                .procname       = "fs",
  38                .mode           = 0555,
  39                .child          = ntfs_sysctls
  40        },
  41        {}
  42};
  43
  44/* Storage for the sysctls header. */
  45static struct ctl_table_header *sysctls_root_table;
  46
  47/**
  48 * ntfs_sysctl - add or remove the debug sysctl
  49 * @add:        add (1) or remove (0) the sysctl
  50 *
  51 * Add or remove the debug sysctl. Return 0 on success or -errno on error.
  52 */
  53int ntfs_sysctl(int add)
  54{
  55        if (add) {
  56                BUG_ON(sysctls_root_table);
  57                sysctls_root_table = register_sysctl_table(sysctls_root);
  58                if (!sysctls_root_table)
  59                        return -ENOMEM;
  60        } else {
  61                BUG_ON(!sysctls_root_table);
  62                unregister_sysctl_table(sysctls_root_table);
  63                sysctls_root_table = NULL;
  64        }
  65        return 0;
  66}
  67
  68#endif /* CONFIG_SYSCTL */
  69#endif /* DEBUG */
  70