> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/man/man9/device_get_state.9.md).

# device\_get\_state.9

`device_get_state` — 操作设备状态

## 名称

`device_get_state`, `device_busy`, `device_unbusy`, `device_is_alive`, `device_is_attached`

## 概要

```c
#include <sys/param.h>
#include <sys/bus.h>

device_state_t
device_get_state(device_t dev);

void
device_busy(device_t dev);

void
device_unbusy(device_t dev);

int
device_is_alive(device_t dev);

int
device_is_attached(device_t dev);
```

## 描述

通过调用 `device_get_state` 访问设备的当前状态，该函数返回 `DS_NOTPRESENT`、`DS_ALIVE`、`DS_ATTACHED` 或 `DS_BUSY`（在 [device(9)](/man/man9/device.9.md) 中描述）。要测试设备是否已被成功探测，调用 `device_is_alive`，当状态大于或等于 `DS_ALIVE` 时该函数简单地返回。要测试设备是否已被成功 attach，调用 `device_is_attached`，当状态大于或等于 `DS_ATTACHED` 时该函数简单地返回。

每个设备都有一个 busy 计数，调用 `device_busy` 时递增，调用 `device_unbusy` 时递减。若设备状态小于 `DS_ATTACHED`，这两个函数都会返回错误。

当对处于 `DS_ATTACHED` 状态的设备调用 `device_busy` 时，设备会转为 `DS_BUSY` 状态。当调用 `device_unbusy` 且递减后设备的 busy 计数为零时，设备会转为 `DS_ATTACHED` 状态。

## 参见

[device(9)](/man/man9/device.9.md)

## 作者

本手册页由 Doug Rabson 编写。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://book.bsdcn.org/man/man9/device_get_state.9.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
