Chinaunix

标题: 内存屏障疑问 [打印本页]

作者: 枫露清愁    时间: 2015-07-16 12:27
标题: 内存屏障疑问
最近看代码看到了内存屏障,之前大概了解过它的功能,但对下面这段代码有点疑问:
static void pl011_console_putchar(struct uart_port *port, int ch)
{
    struct uart_amba_port *uap = (struct uart_amba_port *)port;

    while (readw(uap->port.membase + UART01x_FR) & UART01x_FR_TXFF)
        barrier();
    writew(ch, uap->port.membase + UART01x_DR);
}

这里的功能应该是保证读写寄存器的顺序吧,但为什么把barrier函数放在了while里面?内核中很多地方都是这么干的


作者: 枫露清愁    时间: 2015-07-16 15:35
自己顶一下
作者: 枫露清愁    时间: 2015-07-16 19:15
求助大神啊




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2