11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2003 Christoph Hellwig. 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Released under GPL v2. 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/errno.h> 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/init.h> 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/kernel.h> 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/sysctl.h> 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "scsi_logging.h" 1244818efbad185eea75adad0e8cab97650a7370abAdrian Bunk#include "scsi_priv.h" 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic ctl_table scsi_table[] = { 16894d2491153a9f8270dbed21175d06fde4eba6c7Eric W. Biederman { .procname = "logging_level", 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .data = &scsi_logging_level, 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .maxlen = sizeof(scsi_logging_level), 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .mode = 0644, 206d4561110a3e9fa742aeec6717248a491dfb1878Eric W. Biederman .proc_handler = proc_dointvec }, 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { } 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic ctl_table scsi_dir_table[] = { 25894d2491153a9f8270dbed21175d06fde4eba6c7Eric W. Biederman { .procname = "scsi", 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .mode = 0555, 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .child = scsi_table }, 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { } 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic ctl_table scsi_root_table[] = { 32894d2491153a9f8270dbed21175d06fde4eba6c7Eric W. Biederman { .procname = "dev", 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .mode = 0555, 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .child = scsi_dir_table }, 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { } 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic struct ctl_table_header *scsi_table_header; 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint __init scsi_init_sysctl(void) 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 420b4d414714f0d2f922d39424b0c5c82ad900a381Eric W. Biederman scsi_table_header = register_sysctl_table(scsi_root_table); 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (!scsi_table_header) 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return -ENOMEM; 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return 0; 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid scsi_exit_sysctl(void) 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unregister_sysctl_table(scsi_table_header); 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 52