---
title: VNOP_READ
framework: Kernel
role: symbol
role_heading: Function
platforms: [macOS 10.4+]
path: kernel/1586326-vnop_read
---

# VNOP_READ

Call down to a filesystem to read file data.

## Declaration

```occ
errno_t VNOP_READ(vnode_t vp, struct uio *uio, int ioflag, vfs_context_t ctx);
```

## Parameters

- `vp`: The vnode to read from.
- `uio`: Description of request, including file offset, amount of data requested, destination address for data, and whether that destination is in kernel or user space.
- `ctx`: Context against which to authenticate read request.

## Return Value

Return Value 0 for success or a filesystem-specific error. VNOP_READ() can return success even if less data was read than originally requested; returning an error value should indicate that something actually went wrong.

## Discussion

Discussion VNOP_READ() is where the hard work of of the read() system call happens. The filesystem may use the buffer cache, the cluster layer, or an alternative method to get its data; uio routines will be used to see that data is copied to the correct virtual address in the correct address space and will update its uio argument to indicate how much data has been moved.

## See Also

### Support

- [nop_access](kernel/1523716-nop_access.md)
- [nop_advlock](kernel/1523779-nop_advlock.md)
- [nop_allocate](kernel/1523773-nop_allocate.md)
- [nop_blktooff](kernel/1523748-nop_blktooff.md)
- [nop_blockmap](kernel/1523729-nop_blockmap.md)
- [nop_bwrite](kernel/1523755-nop_bwrite.md)
- [nop_close](kernel/1523718-nop_close.md)
- [nop_copyfile](kernel/1523720-nop_copyfile.md)
- [nop_create](kernel/1523722-nop_create.md)
- [nop_exchange](kernel/1523694-nop_exchange.md)
- [nop_fsync](kernel/1523723-nop_fsync.md)
- [nop_getattr](kernel/1523698-nop_getattr.md)
- [nop_inactive](kernel/1523711-nop_inactive.md)
- [nop_ioctl](kernel/1523715-nop_ioctl.md)
- [nop_link](kernel/1523693-nop_link.md)
- [nop_mkdir](kernel/1523677-nop_mkdir.md)
- [nop_mknod](kernel/1523731-nop_mknod.md)
- [nop_mmap](kernel/1523753-nop_mmap.md)
- [nop_offtoblk](kernel/1523783-nop_offtoblk.md)
- [nop_open](kernel/1523733-nop_open.md)
- [nop_pagein](kernel/1523686-nop_pagein.md)
- [nop_pageout](kernel/1523770-nop_pageout.md)
- [nop_pathconf](kernel/1523727-nop_pathconf.md)
- [nop_read](kernel/1523765-nop_read.md)
- [nop_readdir](kernel/1523710-nop_readdir.md)
- [nop_readdirattr](kernel/1523717-nop_readdirattr.md)
- [nop_readlink](kernel/1523774-nop_readlink.md)
- [nop_reclaim](kernel/1523708-nop_reclaim.md)
- [nop_remove](kernel/1523713-nop_remove.md)
- [nop_rename](kernel/1523741-nop_rename.md)
- [nop_revoke](kernel/1523764-nop_revoke.md)
- [nop_rmdir](kernel/1523767-nop_rmdir.md)
- [nop_searchfs](kernel/1523744-nop_searchfs.md)
- [nop_select](kernel/1523738-nop_select.md)
- [nop_setattr](kernel/1523719-nop_setattr.md)
- [nop_strategy](kernel/1523746-nop_strategy.md)
- [nop_symlink](kernel/1523696-nop_symlink.md)
- [nop_whiteout](kernel/1523682-nop_whiteout.md)
- [nop_write](kernel/1523695-nop_write.md)
- [err_access](kernel/1523742-err_access.md)
- [err_advlock](kernel/1523766-err_advlock.md)
- [err_allocate](kernel/1523740-err_allocate.md)
- [err_blktooff](kernel/1523777-err_blktooff.md)
- [err_blockmap](kernel/1523771-err_blockmap.md)
- [err_bwrite](kernel/1523737-err_bwrite.md)
- [err_close](kernel/1523768-err_close.md)
- [err_copyfile](kernel/1523763-err_copyfile.md)
- [err_create](kernel/1523690-err_create.md)
- [err_exchange](kernel/1523683-err_exchange.md)
- [err_fsync](kernel/1523761-err_fsync.md)
- [err_getattr](kernel/1523757-err_getattr.md)
- [err_inactive](kernel/1523681-err_inactive.md)
- [err_ioctl](kernel/1523684-err_ioctl.md)
- [err_link](kernel/1523732-err_link.md)
- [err_mkdir](kernel/1523751-err_mkdir.md)
- [err_mknod](kernel/1523750-err_mknod.md)
- [err_mmap](kernel/1523704-err_mmap.md)
- [err_offtoblk](kernel/1523781-err_offtoblk.md)
- [err_open](kernel/1523735-err_open.md)
- [err_pagein](kernel/1523688-err_pagein.md)
- [err_pageout](kernel/1523700-err_pageout.md)
- [err_pathconf](kernel/1523679-err_pathconf.md)
- [err_read](kernel/1523775-err_read.md)
- [err_readdir](kernel/1523691-err_readdir.md)
- [err_readdirattr](kernel/1523705-err_readdirattr.md)
- [err_readlink](kernel/1523739-err_readlink.md)
- [err_reclaim](kernel/1523726-err_reclaim.md)
- [err_remove](kernel/1523769-err_remove.md)
- [err_rename](kernel/1523706-err_rename.md)
- [err_revoke](kernel/1523736-err_revoke.md)
- [err_rmdir](kernel/1523772-err_rmdir.md)
- [err_searchfs](kernel/1523702-err_searchfs.md)
- [err_select](kernel/1523714-err_select.md)
- [err_setattr](kernel/1523786-err_setattr.md)
- [err_strategy](kernel/1523730-err_strategy.md)
- [err_symlink](kernel/1523759-err_symlink.md)
- [err_whiteout](kernel/1523785-err_whiteout.md)
- [err_write](kernel/1523725-err_write.md)
- [advisory_read](kernel/1463716-advisory_read.md)
- [advisory_read_ext](kernel/1463707-advisory_read_ext.md)
- [VNOP_BWRITE](kernel/1585961-vnop_bwrite.md)
- [VNOP_FSYNC](kernel/1586212-vnop_fsync.md)
- [VNOP_GETXATTR](kernel/1586289-vnop_getxattr.md)
- [VNOP_IOCTL](kernel/1586258-vnop_ioctl.md)
- [VNOP_SETXATTR](kernel/1586200-vnop_setxattr.md)
- [VNOP_STRATEGY](kernel/1586257-vnop_strategy.md)
- [VNOP_WRITE](kernel/1586129-vnop_write.md)
- [cache_enter](kernel/1562285-cache_enter.md)
- [cache_lookup](kernel/1562195-cache_lookup.md)
- [cache_purge](kernel/1562225-cache_purge.md)
- [cache_purge_negatives](kernel/1562456-cache_purge_negatives.md)
