rem: devfs_read(fs_cookie _fs, fs_vnode _v, file_cookie _cookie, void *buf, off_t pos, size_t *len)
add: devfs_read(fs_cookie _fs, fs_vnode _v, file_cookie _cookie, void *buffer, off_t pos, size_t *length)
context: devfs_read(fs_cookie _fs, fs_vnode _v, file_cookie _cookie, void *buf, off_t pos, size_t *len){	struct devfs *fs = _fs;	struct devfs_vnode *v = _v;	struct devfs_cookie *cookie = _cookie;	bool is_locked = false;	ssize_t err = 0;		TRACE(("devfs_read: vnode 0x%x, cookie 0x%x, pos 0x%x 0x%x, len 0x%x\n", v, cookie, pos, len));	switch (cookie->s->type) {		case STREAM_TYPE_DEVICE: {			struct devfs_part_map *part_map = v->stream.u.dev.part_map;						if (part_map) {				if( pos < 0 )					pos = 0;				if (pos > part_map->size)					return 0;				*len = min(*len, part_map->size - pos );				pos += part_map->offset;			}			// pass the call through to the device			err = v->stream.u.dev.calls->read(cookie->u.dev.dcookie, pos, buf, len);			break;		}		default:			err = EINVAL;	}err:	if (is_locked)		mutex_unlock(&fs->lock);	return err;}