---
name: "bus_generic_detach"
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/bus_generic_detach"
---

# bus\_generic\_detach(9)

generic implementation of DEVICE\_DETACH for buses

## NAME

**bus\_generic\_detach** – generic implementation of DEVICE\_DETACH for buses

## SYNOPSIS

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

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

*int*\

**bus\_generic\_detach**(*device\_t dev*);

## DESCRIPTION

This function provides an implementation of the [DEVICE\_DETACH(9)](/DEVICE_DETACH/9.md) method which can be used by most bus code. It uses [bus\_detach\_children(9)](/bus_detach_children/9.md) to detach drivers from all child devices giving them a chance to veto the detach request. If **bus\_detach\_children**() succeeds, **bus\_generic\_detach**() calls [device\_delete\_children(9)](/device_delete_children/9.md) to delete all child devices.

## RETURN VALUES

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

## SEE ALSO

[bus\_detach\_children(9)](/bus_detach_children/9.md), [device(9)](/device/9.md), [device\_delete\_children(9)](/device_delete_children/9.md), [driver(9)](/driver/9.md)

## AUTHORS

This manual page was written by Doug Rabson.
