---
name: "VOP_OPEN"
section: "9"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/VOP_CLOSE"
---

# VOP\_OPEN(9)

open or close a file

Part of [VOP\_CLOSE(9)](/VOP_CLOSE/9.md).

## NAME

**VOP\_OPEN**, **VOP\_CLOSE** – open or close a file

## SYNOPSIS

**#include \<sys/param.h\>**

**#include \<sys/vnode.h\>**

*int*\

**VOP\_OPEN**(*struct vnode \*vp*, *int mode*, *struct ucred \*cred*, *struct thread \*td*, *struct file \*fp*);

*int*\

**VOP\_CLOSE**(*struct vnode \*vp*, *int mode*, *struct ucred \*cred*, *struct thread \*td*);

## DESCRIPTION

The **VOP\_OPEN**() entry point is called before a file is accessed by a process and the **VOP\_CLOSE**() entry point is called after a file is finished with by the process.

The arguments are:

- *vp*

  The vnode of the file.

- *mode*

  The access mode required by the calling process.

- *cred*

  The caller's credentials.

- *td*

  The thread which is accessing the file.

- *fp*

  The file being opened.

Pointer to the file *fp* is useful for file systems which require such information, e.g., fdescfs(5). Use ‘NULL’ as *fp* argument to **VOP\_OPEN**() for in-kernel opens.

The access mode is a set of flags, including FREAD, FWRITE, O\_NONBLOCK, O\_APPEND.

The thread *td* passed to **VOP\_CLOSE**() may be ‘NULL’ if the last reference to the open file is released from a kernel context, e.g., the destruction of a socket buffer containing the file reference in a SCM\_RIGHTS message.

## LOCKS

**VOP\_OPEN**() expects *vp* to be locked on entry and will leave it locked on return.

**VOP\_CLOSE**() expects at least a reference to be associated with the vnode and does not care whether the vnode is locked or not. The lock and reference state is left unchanged on return. Note that *vn\_close* expects an unlocked, referenced vnode and will dereference the vnode prior to returning.

## RETURN VALUES

Zero is returned on success, otherwise an error code is returned.

## SEE ALSO

[vnode(9)](/vnode/9.md), [VOP\_LOOKUP(9)](/VOP_LOOKUP/9.md)

## AUTHORS

This manual page was written by Doug Rabson.
