11e9ea7e0SNamjae Jeon // SPDX-License-Identifier: GPL-2.0-or-later 21e9ea7e0SNamjae Jeon /* 35218cd10SNamjae Jeon * Code for sysctl handling in NTFS Linux kernel driver. 41e9ea7e0SNamjae Jeon * 55218cd10SNamjae Jeon * Copyright (C) 1997 Martin von Löwis, Régis Duchesne 61e9ea7e0SNamjae Jeon * Copyright (c) 2002-2005 Anton Altaparmakov 71e9ea7e0SNamjae Jeon */ 81e9ea7e0SNamjae Jeon 91e9ea7e0SNamjae Jeon #ifdef DEBUG 101e9ea7e0SNamjae Jeon 111e9ea7e0SNamjae Jeon #include <linux/module.h> 121e9ea7e0SNamjae Jeon 131e9ea7e0SNamjae Jeon #ifdef CONFIG_SYSCTL 141e9ea7e0SNamjae Jeon 151e9ea7e0SNamjae Jeon #include <linux/proc_fs.h> 161e9ea7e0SNamjae Jeon #include <linux/sysctl.h> 171e9ea7e0SNamjae Jeon 181e9ea7e0SNamjae Jeon #include "sysctl.h" 191e9ea7e0SNamjae Jeon #include "debug.h" 201e9ea7e0SNamjae Jeon 211e9ea7e0SNamjae Jeon /* Definition of the ntfs sysctl. */ 225218cd10SNamjae Jeon static const struct ctl_table ntfs_sysctls[] = { 231e9ea7e0SNamjae Jeon { 241e9ea7e0SNamjae Jeon .procname = "ntfs-debug", 251e9ea7e0SNamjae Jeon .data = &debug_msgs, /* Data pointer and size. */ 261e9ea7e0SNamjae Jeon .maxlen = sizeof(debug_msgs), 271e9ea7e0SNamjae Jeon .mode = 0644, /* Mode, proc handler. */ 281e9ea7e0SNamjae Jeon .proc_handler = proc_dointvec 291e9ea7e0SNamjae Jeon }, 301e9ea7e0SNamjae Jeon }; 311e9ea7e0SNamjae Jeon 321e9ea7e0SNamjae Jeon /* Storage for the sysctls header. */ 331e9ea7e0SNamjae Jeon static struct ctl_table_header *sysctls_root_table; 341e9ea7e0SNamjae Jeon 355218cd10SNamjae Jeon /* 361e9ea7e0SNamjae Jeon * ntfs_sysctl - add or remove the debug sysctl 371e9ea7e0SNamjae Jeon * @add: add (1) or remove (0) the sysctl 381e9ea7e0SNamjae Jeon * 391e9ea7e0SNamjae Jeon * Add or remove the debug sysctl. Return 0 on success or -errno on error. 401e9ea7e0SNamjae Jeon */ 411e9ea7e0SNamjae Jeon int ntfs_sysctl(int add) 421e9ea7e0SNamjae Jeon { 431e9ea7e0SNamjae Jeon if (add) { 44*a8fde8beSNamjae Jeon sysctls_root_table = register_sysctl("fs/ntfs", ntfs_sysctls); 451e9ea7e0SNamjae Jeon if (!sysctls_root_table) 461e9ea7e0SNamjae Jeon return -ENOMEM; 471e9ea7e0SNamjae Jeon } else { 481e9ea7e0SNamjae Jeon unregister_sysctl_table(sysctls_root_table); 491e9ea7e0SNamjae Jeon sysctls_root_table = NULL; 501e9ea7e0SNamjae Jeon } 511e9ea7e0SNamjae Jeon return 0; 521e9ea7e0SNamjae Jeon } 531e9ea7e0SNamjae Jeon #endif /* CONFIG_SYSCTL */ 541e9ea7e0SNamjae Jeon #endif /* DEBUG */ 55