1. An apparatus, comprising: one or more communication units, wherein each of the one or more communication units is configured to receive an interrupt or message from a respective endpoint device; and an interface unit coupled to each of the one or more communication units, wherein the interface unit is configured to: update a first pointer included within a first data structure responsive to a request from a given one of the one or more communication units, wherein the first data structure is located in a memory; store data indicative of the received interrupt or message in a second data structure responsive to updating the first pointer, wherein the second data is located in the memory; reading a second pointer and the first pointer from the first data structure; and send an interrupt responsive to a determination that a value of the first pointer and a value of the second pointer are equal.