1 /* 2 * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) 3 * Licensed under the GPL 4 */ 5 6 #include <stdlib.h> 7 #include <errno.h> 8 #include "chan_user.h" 9 #include "os.h" 10 11 /* This address is used only as a unique identifer */ 12 static int null_chan; 13 14 static void *null_init(char *str, int device, const struct chan_opts *opts) 15 { 16 return(&null_chan); 17 } 18 19 static int null_open(int input, int output, int primary, void *d, 20 char **dev_out) 21 { 22 *dev_out = NULL; 23 return(os_open_file(DEV_NULL, of_rdwr(OPENFLAGS()), 0)); 24 } 25 26 static int null_read(int fd, char *c_out, void *unused) 27 { 28 return(-ENODEV); 29 } 30 31 static void null_free(void *data) 32 { 33 } 34 35 const struct chan_ops null_ops = { 36 .type = "null", 37 .init = null_init, 38 .open = null_open, 39 .close = generic_close, 40 .read = null_read, 41 .write = generic_write, 42 .console_write = generic_console_write, 43 .window_size = generic_window_size, 44 .free = null_free, 45 .winch = 0, 46 }; 47 48 /* 49 * Overrides for Emacs so that we follow Linus's tabbing style. 50 * Emacs will notice this stuff at the end of the file and automatically 51 * adjust the settings for this buffer only. This must remain at the end 52 * of the file. 53 * --------------------------------------------------------------------------- 54 * Local variables: 55 * c-file-style: "linux" 56 * End: 57 */ 58