PCI Express endpoint (source code)

= PCI Express endpoint
{c}

A <PCI Express endpoint> is a device at which <PCI Express> transactions originate or terminate, rather than a port whose principal role is forwarding traffic between links. Storage controllers, network adapters and accelerators can expose endpoint functions. The host discovers their configuration information and assigns resources for communication.

For example, a <device driver> can configure an endpoint's addressable control region and then exchange commands with the device. The Linux endpoint framework distinguishes the endpoint controller from the function implemented over it and supplies operations for configuration headers, address windows and <interrupts>.<PCI Endpoint Framework in the Linux kernel documentation>[§§9.1–9.2.1, controller/function distinction, write_header, set_bar and raise_irq]{ref} An endpoint is a role in the interconnect topology; one chip can expose several functions, and some controllers support either endpoint or root-complex operation.