linux/arch/um/drivers/null.c
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{linux.intel,addtoit}.com)
   3 * Licensed under the GPL
   4 */
   5
   6#include <stddef.h>
   7#include <errno.h>
   8#include <fcntl.h>
   9#include "chan_user.h"
  10#include <os.h>
  11
  12/* This address is used only as a unique identifier */
  13static int null_chan;
  14
  15static void *null_init(char *str, int device, const struct chan_opts *opts)
  16{
  17        return &null_chan;
  18}
  19
  20static int null_open(int input, int output, int primary, void *d,
  21                     char **dev_out)
  22{
  23        int fd;
  24
  25        *dev_out = NULL;
  26
  27        fd = open(DEV_NULL, O_RDWR);
  28        return (fd < 0) ? -errno : fd;
  29}
  30
  31static int null_read(int fd, char *c_out, void *unused)
  32{
  33        return -ENODEV;
  34}
  35
  36static void null_free(void *data)
  37{
  38}
  39
  40const struct chan_ops null_ops = {
  41        .type           = "null",
  42        .init           = null_init,
  43        .open           = null_open,
  44        .close          = generic_close,
  45        .read           = null_read,
  46        .write          = generic_write,
  47        .console_write  = generic_console_write,
  48        .window_size    = generic_window_size,
  49        .free           = null_free,
  50        .winch          = 0,
  51};
  52