console.c

来自「RTEMS (Real-Time Executive for Multiproc」· C语言 代码 · 共 155 行

C
155
字号
/* *  This file contains the hardware specific portions of the TTY driver *  for the serial ports on the erc32. * *  COPYRIGHT (c) 1989-1997. *  On-Line Applications Research Corporation (OAR). * *  The license and distribution terms for this file may be *  found in the file LICENSE in this distribution or at *  http://www.rtems.com/license/LICENSE. * *  $Id: console.c,v 1.2.4.1 2003/09/04 18:43:53 joel Exp $ */#include <bsp.h>#include <rtems/libio.h>#include <stdlib.h>#include <assert.h>#include <simio.h>/* *  console_outbyte_polled * *  This routine transmits a character using polling. */void console_outbyte_polled(  int  port,  char ch);/* *  console_inbyte_nonblocking  * *  This routine polls for a character. */int console_inbyte_nonblocking(  int port);/* *  Console Termios Support Entry Points * */int console_write_support (  int minor,  const char *bufarg,  int len){  int nwrite = 0;  const char *buf = bufarg;  while (nwrite < len) {    if ( *buf )      console_outbyte_polled( minor, *buf & 0x7f );    buf++;    nwrite++;  }  return nwrite;}/* *  Console Device Driver Entry Points * */ rtems_device_driver console_initialize(  rtems_device_major_number  major,  rtems_device_minor_number  minor,  void                      *arg){  rtems_status_code status;  rtems_termios_initialize();  /*   *  Register Device Names   */  status = rtems_io_register_name( "/dev/console", major, 0 );  if (status != RTEMS_SUCCESSFUL)    rtems_fatal_error_occurred(status);  return RTEMS_SUCCESSFUL;}rtems_device_driver console_open(  rtems_device_major_number major,  rtems_device_minor_number minor,  void                    * arg){  rtems_status_code sc;  static const rtems_termios_callbacks pollCallbacks = {    NULL,                        /* firstOpen */    NULL,                        /* lastClose */    console_inbyte_nonblocking,  /* pollRead */    console_write_support,       /* write */    NULL,                        /* setAttributes */    NULL,                        /* stopRemoteTx */    NULL,                        /* startRemoteTx */    0                            /* outputUsesInterrupts */  };  assert( minor <= 1 );  if ( minor > 2 )    return RTEMS_INVALID_NUMBER;   sc = rtems_termios_open (major, minor, arg, &pollCallbacks );  return RTEMS_SUCCESSFUL;} rtems_device_driver console_close(  rtems_device_major_number major,  rtems_device_minor_number minor,  void                    * arg){  return rtems_termios_close (arg);} rtems_device_driver console_read(  rtems_device_major_number major,  rtems_device_minor_number minor,  void                    * arg){  return rtems_termios_read (arg);} rtems_device_driver console_write(  rtems_device_major_number major,  rtems_device_minor_number minor,  void                    * arg){  return rtems_termios_write (arg);} rtems_device_driver console_control(  rtems_device_major_number major,  rtems_device_minor_number minor,  void                    * arg){  return rtems_termios_ioctl (arg);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?