> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/holoscan/sensor-bridge/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/holoscan/sensor-bridge/_mcp/server.

# hololink::emulation::LinuxI2CControllerCtxt

> Linux-specific I2CControllerCtxt extension.

Linux-specific [I2CControllerCtxt](i2ccontrollerctxt) extension.

`base` (the common [I2CControllerCtxt](i2ccontrollerctxt)) is the first member; the rest is Linux-only state.

Note: there is no worker thread, condition variable, or `cmd`/`peripheral_address` scratch state. The host-driven I2C transaction path is fully synchronous now — `common/i2c.cpp`'s i2c\_configure\_cb calls i2c\_transaction(...) directly inside the control-plane callback. The mutex still exists because attach\_i2c\_peripheral() may be called from the application thread while i2c\_transaction is running on the control-plane thread; both read/write i2c\_bus\_map.

```cpp showLineNumbers={false}
#include <hololink/emulation/i2c.hpp>
```

***

## Member variables

| Name          | Type                                                                              | Description |
| ------------- | --------------------------------------------------------------------------------- | ----------- |
| `base`        | `I2CControllerCtxt`                                                               |             |
| `i2c_bus_map` | `std::unordered_map< uint32_t, std::unordered_map< uint16_t, I2CPeripheral * > >` |             |
| `i2c_mutex`   | `std::mutex`                                                                      |             |