本文整理汇总了C++中serial_paranoia_check函数的典型用法代码示例。如果您正苦于以下问题:C++ serial_paranoia_check函数的具体用法?C++ serial_paranoia_check怎么用?C++ serial_paranoia_check使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了serial_paranoia_check函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: rs_flush_buffer
static void rs_flush_buffer(struct tty_struct *tty)
{
struct m68k_serial *info = (struct m68k_serial *)tty->driver_data;
unsigned long flags;
if (serial_paranoia_check(info, tty->name, "rs_flush_buffer"))
return;
local_irq_save(flags);
info->xmit_cnt = info->xmit_head = info->xmit_tail = 0;
local_irq_restore(flags);
tty_wakeup(tty);
}
示例2: rs_throttle
/*
* ------------------------------------------------------------
* rs_throttle()
*
* This routine is called by the upper-layer tty layer to signal that
* incoming characters should be throttled.
* ------------------------------------------------------------
*/
static void rs_throttle(struct tty_struct * tty)
{
struct m68k_serial *info = (struct m68k_serial *)tty->driver_data;
if (serial_paranoia_check(info, tty->name, "rs_throttle"))
return;
if (I_IXOFF(tty))
info->x_char = STOP_CHAR(tty);
/* Turn off RTS line (do this atomic) */
}
示例3: rs_write_room
static int rs_write_room(struct tty_struct *tty)
{
struct m68k_serial *info = (struct m68k_serial *)tty->driver_data;
int ret;
if (serial_paranoia_check(info, tty->name, "rs_write_room"))
return 0;
ret = SERIAL_XMIT_SIZE - info->xmit_cnt - 1;
if (ret < 0)
ret = 0;
return ret;
}
示例4: rs_360_write
static int rs_360_write(struct tty_struct * tty,
const unsigned char *buf, int count)
{
int c, ret = 0;
ser_info_t *info = (ser_info_t *)tty->driver_data;
volatile QUICC_BD *bdp;
#ifdef CONFIG_KGDB
/* Try to let stub handle output. Returns true if it did. */
if (kgdb_output_string(buf, count))
return ret;
#endif
if (serial_paranoia_check(info, tty->name, "rs_write"))
return 0;
if (!tty)
return 0;
bdp = info->tx_cur;
while (1) {
c = min(count, TX_BUF_SIZE);
if (c <= 0)
break;
if (bdp->status & BD_SC_READY) {
info->flags |= TX_WAKEUP;
break;
}
/* memcpy(__va(bdp->buf), buf, c); */
memcpy((void *)bdp->buf, buf, c);
bdp->length = c;
bdp->status |= BD_SC_READY;
buf += c;
count -= c;
ret += c;
/* Get next BD.
*/
if (bdp->status & BD_SC_WRAP)
bdp = info->tx_bd_base;
else
bdp++;
info->tx_cur = (QUICC_BD *)bdp;
}
return ret;
}
示例5: rs_360_flush_buffer
static void rs_360_flush_buffer(struct tty_struct *tty)
{
ser_info_t *info = (ser_info_t *)tty->driver_data;
if (serial_paranoia_check(info, tty->name, "rs_flush_buffer"))
return;
/* There is nothing to "flush", whatever we gave the CPM
* is on its way out.
*/
tty_wakeup(tty);
info->flags &= ~TX_WAKEUP;
}
示例6: rs_stop
/*
* ------------------------------------------------------------
* rs_stop() and rs_start()
*
* This routines are called before setting or resetting tty->stopped.
* They enable or disable transmitter interrupts, as necessary.
* ------------------------------------------------------------
*/
static void rs_stop(struct tty_struct *tty)
{
struct NIOS_serial *info = (struct NIOS_serial *)tty->driver_data;
np_uart * uart= (np_uart *)(info->port);
unsigned long flags;
if (serial_paranoia_check(info, tty->device, "rs_stop"))
return;
save_flags(flags); cli();
uart->np_uartcontrol &= ~np_uartcontrol_itrdy_mask;
restore_flags(flags);
}
示例7: xmbrs_start
static void xmbrs_start(struct tty_struct *tty)
{
volatile unsigned int *uartp;
struct xmb_serial *info = (struct xmb_serial *)tty->driver_data;
unsigned long flags;
if (serial_paranoia_check(info, tty->device, "xmbrs_start"))
return;
uartp = (volatile unsigned int *) info->addr;
save_flags_cli(flags);
EnableInterrupts(uartp);
restore_flags(flags);
}
示例8: rs_start
static void rs_start(struct tty_struct *tty)
{
struct LEON_serial *info = (struct LEON_serial *)tty->driver_data;
unsigned long flags;
if (serial_paranoia_check(info, tty->device, "rs_start"))
return;
save_flags(flags); cli();
if (info->xmit_cnt && info->xmit_buf && !(leon->uartctrl1 & UCTRL_TE))
leon->uartctrl1 |= UCTRL_TE | UCTRL_TI;
restore_flags(flags);
}
示例9: rs_flush_buffer
static void rs_flush_buffer(struct tty_struct *tty)
{
struct cnxt_serial *info = (struct cnxt_serial *)tty->driver_data;
if (serial_paranoia_check(info, tty->device, "rs_flush_buffer"))
return;
cli();
info->xmit_cnt = info->xmit_head = info->xmit_tail = 0;
sti();
wake_up_interruptible(&tty->write_wait);
if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) &&
tty->ldisc.write_wakeup)
(tty->ldisc.write_wakeup)(tty);
}
示例10: rs_stop
static void rs_stop(struct tty_struct *tty)
{
struct cnxt_serial *info = (struct cnxt_serial *)tty->driver_data;
if (serial_paranoia_check(info, tty->device, "rs_stop"))
return;
#if 0
save_flags(flags); cli();
tx_stop(info->uart);
restore_flags(flags);
#endif
}
示例11: rs_stop
/*
* ------------------------------------------------------------
* rs_stop() and rs_start()
*
* This routines are called before setting or resetting tty->stopped.
* They enable or disable transmitter interrupts, as necessary.
* ------------------------------------------------------------
*/
static void rs_stop(struct tty_struct *tty)
{
struct bf535_serial *info = (struct bf535_serial *)tty->driver_data;
unsigned long flags = 0;
unsigned int idx = (unsigned int) info->hub2;
if (serial_paranoia_check(info, tty->device, "rs_stop"))
return;
save_flags(flags); cli();
ACCESS_PORT_IER(idx) /* Change access to IER & data port */
UART_IER(idx) = 0;
restore_flags(flags);
}
示例12: rs_start
static void rs_start(struct tty_struct *tty)
{
struct s3c3410_serial *info = (struct s3c3410_serial *) tty->driver_data;
unsigned long flags = 0;
if (serial_paranoia_check(info, tty->device, "rs_start"))
return;
save_flags(flags);
cli();
rx_start(info->use_ints);
tx_start(info->use_ints);
restore_flags(flags);
}
示例13: rs_open
/*
* This routine is called whenever a serial port is opened. It
* enables interrupts for a serial port, linking in its S structure into
* the IRQ chain. It also performs the serial-specific
* initialization for the tty structure.
*/
int rs_open(struct tty_struct *tty, struct file * filp)
{
int retval, line;
struct cnxt_serial *info;
line = MINOR(tty->device) - tty->driver.minor_start;
if (line != 0) /* we have exactly one */
return -ENODEV;
info = &uart_info;
if (serial_paranoia_check(info, tty->device, "rs_open"))
return -ENODEV;
info->count++;
tty->driver_data = info;
info->tty = tty;
/*
* Start up serial port
*/
retval = startup(info);
if (retval)
return retval;
retval = block_til_ready(tty, filp, info);
if (retval) {
printk("rs_open returning after block_til_ready with %d\n",
retval);
return retval;
}
if ((info->count == 1) && (info->flags & S_SPLIT_TERMIOS)) {
if (tty->driver.subtype == SERIAL_TYPE_NORMAL)
*tty->termios = info->normal_termios;
else
*tty->termios = info->callout_termios;
change_speed(info);
}
info->session = current->session;
info->pgrp = current->pgrp;
// Enable GPIO interrupt line for console uart
SetGPIOIntEnable(GPIOINT_UART1, IRQ_ON);
return 0;
}
示例14: rs_start
static void rs_start(struct tty_struct *tty)
{
unsigned long flags;
struct cnxt_serial *info = (struct cnxt_serial *)tty->driver_data;
if (serial_paranoia_check(info,tty->device, "rs_start"))
return;
save_flags(flags);
cli();
tx_start(info->uart, info->use_ints);
start_rx();
restore_flags(flags);
}
示例15: rs_hangup
/*
* rs_hangup() --- called by tty_hangup() when a hangup is signaled.
*/
void rs_hangup(struct tty_struct *tty)
{
struct m68k_serial * info = (struct m68k_serial *)tty->driver_data;
if (serial_paranoia_check(info, tty->name, "rs_hangup"))
return;
rs_flush_buffer(tty);
shutdown(info, tty);
info->tport.count = 0;
info->tport.flags &= ~ASYNC_NORMAL_ACTIVE;
tty_port_tty_set(&info->tport, NULL);
wake_up_interruptible(&info->tport.open_wait);
}