_io(msnd_fifo *f, char __iomem *buf, size_t len) {  int count = 0;   while ((count < len) && (f->len != f->n)) {    int nwritten;    if (f->head <= f->tail) {    nwritten = len - count;    if (nwritten > f->n - f->tail)     nwritten = f->n - f->tail;   }   else {    nwritten = f->head - f->tail;    if (nwritten > len - count)     nwritten = len - count;   }    memcpy