---
name: "devctl_notify"
section: "9"
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/devctl_notify"
---

# devctl\_notify(9)

Send a message, via devctl, to userland

## NAME

**devctl\_notify** – Send a message, via devctl, to userland

## SYNOPSIS

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

*void*\

**devctl\_notify**(*const char \*system*, *const char \*subsystem*, *const char \*type*, *const char \*data*);

## DESCRIPTION

Send a notification to user land via [devctl(4)](/devctl/4.md). See [devctl(4)](/devctl/4.md) for the format of these messages.

The **devctl\_notify** function creates a string using the following template:

```
snprintf(buffer, sizeof(buffer), "!system=%s subsystem=%s type=%s",
   system, subsystem, type);
```

The *system*, *subsystem*, and *type* pointers cannot be NULL.

The *data* argument may be NULL (for no additions) or a message formatted properly for [devctl(4)](/devctl/4.md). A space will be added to the above template and this argument copied verbatim to form the message passed to userland. Senders should balance between only passing data that userland can not discover itself and sending all the data userland will want to use to decide what to do with the message.

The current total message length limit is just under 1kb. Senders should try to remain well below this limit.

## SEE ALSO

[devctl(4)](/devctl/4.md), [devd(8)](/devd/8.md)

## AUTHORS

This manual page was written by M. Warner Losh
