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

# kldunloadf(2)

unload kld files

Part of [kldunload(2)](/kldunload/2.md).

## NAME

**kldunload**, **kldunloadf** – unload kld files

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

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

*int*\

**kldunload**(*int fileid*);

*int*\

**kldunloadf**(*int fileid*, *int flags*);

## DESCRIPTION

The **kldunload**() system call unloads a kld file from the kernel that was previously linked via [kldload(2)](/kldload/2.md).

The **kldunloadf**() system call accepts an additional flags argument, which may be one of LINKER\_UNLOAD\_NORMAL, giving the same behavior as **kldunload**(), or LINKER\_UNLOAD\_FORCE, which causes the unload to ignore a failure to quiesce the module.

## RETURN VALUES

The **kldunload()** function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

## ERRORS

The file referred to by *fileid* is unloaded unless:

- \[EPERM\]

  You do not have access to unlink the file from the kernel.

- \[ENOENT\]

  The file was not found.

- \[EBUSY\]

  You attempted to unload a file linked by the kernel.

- \[EINVAL\]

  The **kldunloadf**() system call was passed invalid flags.

## SEE ALSO

[kldfind(2)](/kldfind/2.md), [kldfirstmod(2)](/kldfirstmod/2.md), [kldload(2)](/kldload/2.md), [kldnext(2)](/kldnext/2.md), [kldstat(2)](/kldstat/2.md), [kldsym(2)](/kldsym/2.md), [modfind(2)](/modfind/2.md), [modfnext(2)](/modfnext/2.md), [modnext(2)](/modnext/2.md), [modstat(2)](/modstat/2.md), [kld(4)](/kld/4.md), [kldunload(8)](/kldunload/8.md)

## HISTORY

The **kld** interface first appeared in FreeBSD 3.0.
