Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 | ||
730760e9 | 11 | /* This address is used only as a unique identifer */ |
1da177e4 LT |
12 | static int null_chan; |
13 | ||
5e7672ec | 14 | static void *null_init(char *str, int device, const struct chan_opts *opts) |
1da177e4 LT |
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 | ||
5e7672ec | 35 | const struct chan_ops null_ops = { |
1da177e4 LT |
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 | */ |