console.c

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

C
181
字号
/* *  This file contains the generic console driver shell used *  by all console drivers using libchip. * *  This driver uses the termios pseudo driver. * *  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.2 2003/09/04 18:44:32 joel Exp $ */#include <bsp.h>#include <rtems/libio.h>#include <termios.h>#include "sci.h"//#include "../../../../../../rtems/c/src/lib/libbsp/m68k/opti/console/duart.h"//#include "../../../../../../rtems/c/src/lib/libc/libio_.h"/*PAGE * *  console_open * *  open a port as a termios console. * *  the console is opened in bsp_postdriver_hook() in bsppost.c * */rtems_device_driver console_open(  rtems_device_major_number major,  rtems_device_minor_number minor,  void                    * arg){    rtems_status_code status;    /* the console is opened three times at startup */    /* for standard input, output, and error */    /* Get correct callback structure for the device */    /* argument of FALSE gives us interrupt driven serial io */    /* argument of TRUE  gives us polling   based  serial io */    /* SCI internal uart */    status = rtems_termios_open( major, minor, arg, SciGetTermiosHandlers( TRUE ) );           return status;} /*PAGE * *  console_close * *  This routine closes a port that has been opened as console. */rtems_device_driver console_close(  rtems_device_major_number major,  rtems_device_minor_number minor,  void                    * arg){  return rtems_termios_close (arg);} /*PAGE * *  console_read * *  This routine uses the termios driver to read a character. */rtems_device_driver console_read(  rtems_device_major_number major,  rtems_device_minor_number minor,  void                    * arg){  return rtems_termios_read (arg);} /*PAGE * *  console_write * *  this routine uses the termios driver to write a character. */rtems_device_driver console_write(  rtems_device_major_number major,  rtems_device_minor_number minor,  void                    * arg){  return rtems_termios_write (arg);} /*PAGE * *  console_control * *  this routine uses the termios driver to process io */rtems_device_driver console_control(  rtems_device_major_number major,  rtems_device_minor_number minor,  void                    * arg){  return rtems_termios_ioctl (arg);}/*PAGE * *  console_initialize * *  Routine called to initialize the console device driver. */rtems_device_driver console_initialize(  rtems_device_major_number  major,  rtems_device_minor_number  minor_arg,  void                      *arg){  rtems_status_code          status;  /*   * initialize the termio interface.   */  rtems_termios_initialize();  /*   * register the SCI device name for termios   * do this over in the sci driver init routine?   */  status = rtems_io_register_name( "/dev/sci", major, 0 );  if (status != RTEMS_SUCCESSFUL)  {    rtems_fatal_error_occurred(status);  }  /*   * Link the uart device to the console device   */#if 1  status = rtems_io_register_name( "/dev/console", major, 0 );  if (status != RTEMS_SUCCESSFUL)  {    rtems_fatal_error_occurred(status);  }#else  if ( link( "/dev/sci", "/dev/console") < 0 )  {    rtems_fatal_error_occurred( RTEMS_IO_ERROR );  }                               #endif  /*   * Console Initialize Succesful   */  return RTEMS_SUCCESSFUL;}

⌨️ 快捷键说明

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