Line data Source code
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 0 : static int n_null_open(struct tty_struct *tty) 14 : { 15 0 : return 0; 16 : } 17 : 18 0 : static void n_null_close(struct tty_struct *tty) 19 : { 20 0 : } 21 : 22 0 : static ssize_t n_null_read(struct tty_struct *tty, struct file *file, 23 : unsigned char *buf, size_t nr, 24 : void **cookie, unsigned long offset) 25 : { 26 0 : return -EOPNOTSUPP; 27 : } 28 : 29 0 : static ssize_t n_null_write(struct tty_struct *tty, struct file *file, 30 : const unsigned char *buf, size_t nr) 31 : { 32 0 : return -EOPNOTSUPP; 33 : } 34 : 35 0 : static void n_null_receivebuf(struct tty_struct *tty, 36 : const unsigned char *cp, char *fp, 37 : int cnt) 38 : { 39 0 : } 40 : 41 : static struct tty_ldisc_ops null_ldisc = { 42 : .owner = THIS_MODULE, 43 : .magic = TTY_LDISC_MAGIC, 44 : .name = "n_null", 45 : .open = n_null_open, 46 : .close = n_null_close, 47 : .read = n_null_read, 48 : .write = n_null_write, 49 : .receive_buf = n_null_receivebuf 50 : }; 51 : 52 1 : static int __init n_null_init(void) 53 : { 54 1 : BUG_ON(tty_register_ldisc(N_NULL, &null_ldisc)); 55 1 : return 0; 56 : } 57 : 58 0 : static void __exit n_null_exit(void) 59 : { 60 0 : tty_unregister_ldisc(N_NULL); 61 0 : } 62 : 63 : module_init(n_null_init); 64 : module_exit(n_null_exit); 65 : 66 : MODULE_LICENSE("GPL"); 67 : MODULE_AUTHOR("Alan Cox"); 68 : MODULE_ALIAS_LDISC(N_NULL); 69 : MODULE_DESCRIPTION("Null ldisc driver");