root/arch/um/os-Linux/tty.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. grantpt_cb
  2. get_pty

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
   4  */
   5 
   6 #include <stdlib.h>
   7 #include <unistd.h>
   8 #include <errno.h>
   9 #include <fcntl.h>
  10 #include <kern_util.h>
  11 #include <os.h>
  12 
  13 struct grantpt_info {
  14         int fd;
  15         int res;
  16         int err;
  17 };
  18 
  19 static void grantpt_cb(void *arg)
  20 {
  21         struct grantpt_info *info = arg;
  22 
  23         info->res = grantpt(info->fd);
  24         info->err = errno;
  25 }
  26 
  27 int get_pty(void)
  28 {
  29         struct grantpt_info info;
  30         int fd, err;
  31 
  32         fd = open("/dev/ptmx", O_RDWR);
  33         if (fd < 0) {
  34                 err = -errno;
  35                 printk(UM_KERN_ERR "get_pty : Couldn't open /dev/ptmx - "
  36                        "err = %d\n", errno);
  37                 return err;
  38         }
  39 
  40         info.fd = fd;
  41         initial_thread_cb(grantpt_cb, &info);
  42 
  43         if (info.res < 0) {
  44                 err = -info.err;
  45                 printk(UM_KERN_ERR "get_pty : Couldn't grant pty - "
  46                        "errno = %d\n", -info.err);
  47                 goto out;
  48         }
  49 
  50         if (unlockpt(fd) < 0) {
  51                 err = -errno;
  52                 printk(UM_KERN_ERR "get_pty : Couldn't unlock pty - "
  53                        "errno = %d\n", errno);
  54                 goto out;
  55         }
  56         return fd;
  57 out:
  58         close(fd);
  59         return err;
  60 }

/* [<][>][^][v][top][bottom][index][help] */