xref: /openbmc/linux/arch/um/drivers/null.c (revision dbddf429)
1dbddf429SAlex Dewar // SPDX-License-Identifier: GPL-2.0
21da177e4SLinus Torvalds /*
3e99525f9SJeff Dike  * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{linux.intel,addtoit}.com)
41da177e4SLinus Torvalds  */
51da177e4SLinus Torvalds 
6e99525f9SJeff Dike #include <stddef.h>
71da177e4SLinus Torvalds #include <errno.h>
8e99525f9SJeff Dike #include <fcntl.h>
9e99525f9SJeff Dike #include "chan_user.h"
1037185b33SAl Viro #include <os.h>
111da177e4SLinus Torvalds 
12b60745b9SSimon Arlott /* This address is used only as a unique identifier */
131da177e4SLinus Torvalds static int null_chan;
141da177e4SLinus Torvalds 
null_init(char * str,int device,const struct chan_opts * opts)155e7672ecSJeff Dike static void *null_init(char *str, int device, const struct chan_opts *opts)
161da177e4SLinus Torvalds {
17e99525f9SJeff Dike 	return &null_chan;
181da177e4SLinus Torvalds }
191da177e4SLinus Torvalds 
null_open(int input,int output,int primary,void * d,char ** dev_out)201da177e4SLinus Torvalds static int null_open(int input, int output, int primary, void *d,
211da177e4SLinus Torvalds 		     char **dev_out)
221da177e4SLinus Torvalds {
23e99525f9SJeff Dike 	int fd;
24e99525f9SJeff Dike 
251da177e4SLinus Torvalds 	*dev_out = NULL;
26e99525f9SJeff Dike 
27e99525f9SJeff Dike 	fd = open(DEV_NULL, O_RDWR);
28e99525f9SJeff Dike 	return (fd < 0) ? -errno : fd;
291da177e4SLinus Torvalds }
301da177e4SLinus Torvalds 
null_read(int fd,char * c_out,void * unused)311da177e4SLinus Torvalds static int null_read(int fd, char *c_out, void *unused)
321da177e4SLinus Torvalds {
33e99525f9SJeff Dike 	return -ENODEV;
341da177e4SLinus Torvalds }
351da177e4SLinus Torvalds 
null_free(void * data)361da177e4SLinus Torvalds static void null_free(void *data)
371da177e4SLinus Torvalds {
381da177e4SLinus Torvalds }
391da177e4SLinus Torvalds 
405e7672ecSJeff Dike const struct chan_ops null_ops = {
411da177e4SLinus Torvalds 	.type		= "null",
421da177e4SLinus Torvalds 	.init		= null_init,
431da177e4SLinus Torvalds 	.open		= null_open,
441da177e4SLinus Torvalds 	.close		= generic_close,
451da177e4SLinus Torvalds 	.read		= null_read,
461da177e4SLinus Torvalds 	.write		= generic_write,
471da177e4SLinus Torvalds 	.console_write	= generic_console_write,
481da177e4SLinus Torvalds 	.window_size	= generic_window_size,
491da177e4SLinus Torvalds 	.free		= null_free,
501da177e4SLinus Torvalds 	.winch		= 0,
511da177e4SLinus Torvalds };
52