📄 termiostypes.h
字号:
/** * @file rtems/termiostypes.h *//* * RTEMS termios device support internal data structures * * COPYRIGHT (c) 1989-2000. * 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: termiostypes.h,v 1.9 2005/02/02 00:06:18 joel Exp $ */#ifndef TERMIOSTYPES_H#define TERMIOSTYPES_H#include <rtems.h>#include <rtems/libio.h>#ifdef __cplusplusextern "C" {#endif/* * Wakeup callback data structure */struct ttywakeup { void (*sw_pfn)(struct termios *tty, void *arg); void *sw_arg;};/* * Variables associated with the character buffer */struct rtems_termios_rawbuf { char *theBuf; volatile unsigned int Head; volatile unsigned int Tail; volatile unsigned int Size; rtems_id Semaphore;};/* * Variables associated with each termios instance. * One structure for each hardware I/O device. */struct rtems_termios_tty { /* * Linked-list of active TERMIOS devices */ struct rtems_termios_tty *forw; struct rtems_termios_tty *back; /* * How many times has this device been opened */ int refcount; /* * This device */ rtems_device_major_number major; rtems_device_major_number minor; /* * Mutual-exclusion semaphores */ rtems_id isem; rtems_id osem; /* * The canonical (cooked) character buffer */ char *cbuf; int ccount; int cindex; /* * Keep track of cursor (printhead) position */ int column; int read_start_column; /* * The ioctl settings */ struct termios termios; rtems_interval vtimeTicks; /* * Raw input character buffer */ struct rtems_termios_rawbuf rawInBuf; uint32_t rawInBufSemaphoreOptions; rtems_interval rawInBufSemaphoreTimeout; rtems_interval rawInBufSemaphoreFirstTimeout; unsigned int rawInBufDropped; /* Statistics */ /* * Raw output character buffer */ struct rtems_termios_rawbuf rawOutBuf; int t_dqlen; /* count of characters dequeued from device */ enum {rob_idle, rob_busy, rob_wait } rawOutBufState; /* * Callbacks to device-specific routines */ rtems_termios_callbacks device; volatile unsigned int flow_ctrl; unsigned int lowwater,highwater; /* * I/O task IDs (for task-driven drivers) */ rtems_id rxTaskId; rtems_id txTaskId; /* * line discipline related stuff */ int t_line; /* id of line discipline */ void *t_sc; /* hook for discipline-specific data structure */ /* * Wakeup callback variables */ struct ttywakeup tty_snd; struct ttywakeup tty_rcv; int tty_rcvwakeup;};struct linesw { int (*l_open) (struct rtems_termios_tty *tp); int (*l_close)(struct rtems_termios_tty *tp); int (*l_read )(struct rtems_termios_tty *tp,rtems_libio_rw_args_t *args); int (*l_write)(struct rtems_termios_tty *tp,rtems_libio_rw_args_t *args); int (*l_rint )(int c,struct rtems_termios_tty *tp); int (*l_start)(struct rtems_termios_tty *tp); int (*l_ioctl)(struct rtems_termios_tty *tp,rtems_libio_ioctl_args_t *args); int (*l_modem)(struct rtems_termios_tty *tp,int flags);};/* * FIXME: this should move to libio.h! * values for rtems_termios_callbacks.outputUsesInterrupts */#define TERMIOS_POLLED 0#define TERMIOS_IRQ_DRIVEN 1#define TERMIOS_TASK_DRIVEN 2/* * FIXME: this should move to termios.h! */void rtems_termios_rxirq_occured(struct rtems_termios_tty *tty);/* * FIXME: this should move to termios.h! * put a string to output ring buffer */void rtems_termios_puts (const void *buf, int len, struct rtems_termios_tty *tty);/* * global hooks for line disciplines */extern struct linesw linesw[];extern int nlinesw;#define TTYDISC 0 /* termios tty line discipline */#define TABLDISC 3 /* tablet discipline */#define SLIPDISC 4 /* serial IP discipline */#define PPPDISC 5 /* PPP discipline */#define MAXLDISC 8#ifdef __cplusplus}#endif#endif /* TERMIOSTYPES_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -