KVM_GETFILES(3) | Library Functions Manual | KVM_GETFILES(3)

# NAME

`kvm_getfiles` — survey open files

# SYNOPSIS

Kernel Data Access Library (libkvm, -lkvm)
`#include <kvm.h>`
`#include <sys/types.h>`
`#include <sys/sysctl.h>`

struct kinfo_file *
`kvm_getfiles`(kvm_t *kd, int op, int arg, size_t elemsize, int *cnt);

# DESCRIPTION

`kvm_getfiles`() returns a (sub-)set of the open files in the kernel indicated by kd. The op and arg arguments constitute a predicate which limits the set of files returned. The value of op describes the filtering predicate as follows:

`KERN_FILE_BYFILE`
  all open files with type arg (0 for all files)
`KERN_FILE_BYPID`
  files opened by process ID arg (-1 for all processes)
`KERN_FILE_BYUID`
  files opened by processes with effective user ID arg (-1 for all users)

Files associated with a process will include information about the process that has the file open.

For `KERN_FILE_BYFILE` the recognized file types are defined in `<sys/file.h>`:

`DTYPE_VNODE`
  files and devices
`DTYPE_SOCKET`
  sockets, regardless of domain
`DTYPE_PIPE`
  pipes and FIFOs
`DTYPE_KQUEUE`
  kqueues

Only the first elemsize bytes of each array entry are returned. If the size of the kinfo_file structure increases in size in a future release of OpenBSD, the kernel will only return the requested amount of data for each array entry and programs that use `kvm_getfiles`() will continue to function without the need for recompilation.

# RETURN VALUES

The files are returned as a contiguous array of kinfo_file structures. The number of structures found is returned in the reference parameter cnt. This memory is owned by kvm and will be overwritten by subsequent calls to `kvm_getfiles`() and destroyed by `kvm_close`(). Data should be copied out if it needs to be saved.

`kvm_getfiles`() will return `NULL` on failure.

# ERRORS

`kvm_getfiles`() will fail if:

[`ENOMEM`]
  Could not allocate enough memory for internal buffer.
[`ESRCH`]
  The op argument has `KERN_FILE_BYPID` value and the process specified by arg was not found.

# SEE ALSO

kvm(3), kvm_geterr(3), kvm_nlist(3), kvm_open(3), kvm_read(3)

# BUGS

This routine does not belong in the kvm interface.

June 6, 2025 | Debian