# XHCI Ring Data Structures

DevFeed: [XHCI Ring Data Structures](<https://devfeed.tech/articles/xhci-ring-data-structures-33061.md>)

Original publisher: [Read original article](<https://reactos.org/blogs/xhci-ring-data-structures/>)

Published: 2017-07-18T00:00:00Z

Content type: article

Language: en

Sources: [Front Page on ReactOS Website](<https://devfeed.tech/sources/front-page-on-reactos-website.md>)

Topics: [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [array](<https://devfeed.tech/tags/array.md>), [block](<https://devfeed.tech/tags/block.md>), [command](<https://devfeed.tech/tags/command.md>), [commands](<https://devfeed.tech/tags/commands.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [free](<https://devfeed.tech/tags/free.md>), [implement](<https://devfeed.tech/tags/implement.md>), [linux](<https://devfeed.tech/tags/linux.md>), [memory](<https://devfeed.tech/tags/memory.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [os](<https://devfeed.tech/tags/os.md>), [pointers](<https://devfeed.tech/tags/pointers.md>), [queue](<https://devfeed.tech/tags/queue.md>), [react](<https://devfeed.tech/tags/react.md>), [reactos](<https://devfeed.tech/tags/reactos.md>), [win32](<https://devfeed.tech/tags/win32.md>), [winapi](<https://devfeed.tech/tags/winapi.md>)

## AI overview

This article explains XHCI ring data structures, including command, event, and transfer rings, and describes how rings use Transfer Request Blocks and linked segments. It compares implementations in Linux and Haiku and notes that the author's implementation initially follows Haiku's approach, with a goal of eventually matching Linux's design.

## Source excerpt

xHC functioning mostly depends on different ring data structures. In this blog post I'm going to detail what a ring is in XHCI and various implementations by Linux and Haiku. A ring is a circular queue of data structures. There are three kinds of rings in xHC. 1. Command ring 2. Event Ring 3. Transfer Ring These rings are the basis of communication with the Controller. Command Ring is used to send commands to the controller.