Changeset c657bd7 in mainline for uspace/drv/char/i8042/i8042.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/i8042/i8042.c

    r5d50c419 rc657bd7  
    374374        i8042_t *i8042 = port->ctl;
    375375        uint8_t *destp = (uint8_t *)dest;
     376        int rc;
     377        size_t i;
    376378       
    377379        buffer_t *buffer = (port == i8042->aux) ?
    378380            &i8042->aux_buffer : &i8042->kbd_buffer;
    379381       
    380         for (size_t i = 0; i < size; ++i)
    381                 *destp++ = buffer_read(buffer);
    382        
    383         return size;
     382        for (i = 0; i < size; ++i) {
     383                rc = buffer_read(buffer, destp, i == 0);
     384                if (rc != EOK)
     385                        break;
     386                ++destp;
     387        }
     388       
     389        return i;
    384390}
    385391
Note: See TracChangeset for help on using the changeset viewer.