1 // SPDX-License-Identifier: GPL-2.0 2 #include <linux/types.h> 3 #include <linux/errno.h> 4 #include <linux/tty.h> 5 #include <linux/module.h> 6 7 /* 8 * n_null.c - Null line discipline used in the failure path 9 * 10 * Copyright (C) Intel 2017 11 */ 12 13 static ssize_t n_null_read(struct tty_struct *tty, struct file *file, 14 unsigned char *buf, size_t nr, 15 void **cookie, unsigned long offset) 16 { 17 return -EOPNOTSUPP; 18 } 19 20 static ssize_t n_null_write(struct tty_struct *tty, struct file *file, 21 const unsigned char *buf, size_t nr) 22 { 23 return -EOPNOTSUPP; 24 } 25 26 static struct tty_ldisc_ops null_ldisc = { 27 .owner = THIS_MODULE, 28 .num = N_NULL, 29 .name = "n_null", 30 .read = n_null_read, 31 .write = n_null_write, 32 }; 33 34 static int __init n_null_init(void) 35 { 36 BUG_ON(tty_register_ldisc(&null_ldisc)); 37 return 0; 38 } 39 40 static void __exit n_null_exit(void) 41 { 42 tty_unregister_ldisc(&null_ldisc); 43 } 44 45 module_init(n_null_init); 46 module_exit(n_null_exit); 47 48 MODULE_LICENSE("GPL"); 49 MODULE_AUTHOR("Alan Cox"); 50 MODULE_ALIAS_LDISC(N_NULL); 51 MODULE_DESCRIPTION("Null ldisc driver"); 52