Changeset c657bd7 in mainline for uspace/drv/char/pl050/pl050.c


Ignore:
Timestamp:
2017-11-20T10:06:59Z (6 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
19ea61d
Parents:
5d50c419
git-author:
Jiri Svoboda <jiri@…> (2017-11-19 22:05:26)
git-committer:
Jiri Svoboda <jiri@…> (2017-11-20 10:06:59)
Message:

Less is sometimes more. Need chardev_read to be able to return less bytes than requested if less is available. Otherwise cannot read variable-sized packets except yte-by-byte.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/char/pl050/pl050.c

    r5d50c419 rc657bd7  
    246246        left = size;
    247247        while (left > 0) {
    248                 while (pl050->buf_rp == pl050->buf_wp)
     248                while (left == size && pl050->buf_rp == pl050->buf_wp)
    249249                        fibril_condvar_wait(&pl050->buf_cv, &pl050->buf_lock);
     250                if (pl050->buf_rp == pl050->buf_wp)
     251                        break;
    250252                *bp++ = pl050->buffer[pl050->buf_rp];
    251253                --left;
     
    255257        fibril_mutex_unlock(&pl050->buf_lock);
    256258
    257         return size;
     259        return size - left;
    258260}
    259261
Note: See TracChangeset for help on using the changeset viewer.