void memory_region_add_eventfd(MemoryRegion *mr,
                               hwaddr addr,
                               unsigned size,
                               bool match_data,
                               uint64_t data,
                               EventNotifier *e)
{
    MemoryRegionIoeventfd mrfd = {
        .addr.start = int128_make64(addr),
        .addr.size = int128_make64(size),
        .match_data = match_data,
        .data = data,
        .e = e,
    };
    unsigned i;
    if (size) {
        adjust_endianness(mr, &mrfd.data, size);
    memory_region_transaction_begin();
    for (i = 0; i < mr->ioeventfd_nb; ++i) {
        if (memory_region_ioeventfd_before(mrfd, mr->ioeventfds[i])) {
            break;
    ++mr->ioeventfd_nb;
    mr->ioeventfds = g_realloc(mr->ioeventfds,
                                  sizeof(*mr->ioeventfds) * mr->ioeventfd_nb);
    memmove(&mr->ioeventfds[i+1], &mr->ioeventfds[i],
            sizeof(*mr->ioeventfds) * (mr->ioeventfd_nb-1 - i));
    mr->ioeventfds[i] = mrfd;
    ioeventfd_update_pending |= mr->enabled;
    memory_region_transaction_commit();
void memory_region_add_eventfd(MemoryRegion *mr,
                               hwaddr addr,
                               unsigned size,
                               bool match_data,
                               uint64_t data,
                               EventNotifier *e)
{
    MemoryRegionIoeventfd mrfd = {
        .addr.start = int128_make64(addr),
        .addr.size = int128_make64(size),
        .match_data = match_data,
        .data = data,
        .e = e,
    };
    unsigned i;
    if (size) {
        adjust_endianness(mr, &mrfd.data, size);
    memory_region_transaction_begin();
    for (i = 0; i < mr->ioeventfd_nb; ++i) {
        if (memory_region_ioeventfd_before(mrfd, mr->ioeventfds[i])) {
            break;
    ++mr->ioeventfd_nb;
    mr->ioeventfds = g_realloc(mr->ioeventfds,
                                  sizeof(*mr->ioeventfds) * mr->ioeventfd_nb);
    memmove(&mr->ioeventfds[i+1], &mr->ioeventfds[i],
            sizeof(*mr->ioeventfds) * (mr->ioeventfd_nb-1 - i));
    mr->ioeventfds[i] = mrfd;
    ioeventfd_update_pending |= mr->enabled;
    memory_region_transaction_commit();
void FUNC_0(MemoryRegion *VAR_0,
                               hwaddr VAR_1,
                               unsigned VAR_2,
                               bool VAR_3,
                               uint64_t VAR_4,
                               EventNotifier *VAR_5)
{
    MemoryRegionIoeventfd mrfd = {
        .VAR_1.start = int128_make64(VAR_1),
        .VAR_1.VAR_2 = int128_make64(VAR_2),
        .VAR_3 = VAR_3,
        .VAR_4 = VAR_4,
        .VAR_5 = VAR_5,
    };
    unsigned VAR_6;
    if (VAR_2) {
        adjust_endianness(VAR_0, &mrfd.VAR_4, VAR_2);
    memory_region_transaction_begin();
    for (VAR_6 = 0; VAR_6 < VAR_0->ioeventfd_nb; ++VAR_6) {
        if (memory_region_ioeventfd_before(mrfd, VAR_0->ioeventfds[VAR_6])) {
            break;
    ++VAR_0->ioeventfd_nb;
    VAR_0->ioeventfds = g_realloc(VAR_0->ioeventfds,
                                  sizeof(*VAR_0->ioeventfds) * VAR_0->ioeventfd_nb);
    memmove(&VAR_0->ioeventfds[VAR_6+1], &VAR_0->ioeventfds[VAR_6],
            sizeof(*VAR_0->ioeventfds) * (VAR_0->ioeventfd_nb-1 - VAR_6));
    VAR_0->ioeventfds[VAR_6] = mrfd;
    ioeventfd_update_pending |= VAR_0->enabled;
    memory_region_transaction_commit();
void FUNC_0(MemoryRegion *VAR_0,
hwaddr VAR_1,
unsigned VAR_2,
bool VAR_3,
uint64_t VAR_4,
EventNotifier *VAR_5)
{ MemoryRegionIoeventfd mrfd = { .VAR_1.start = int128_make64(VAR_1),
.VAR_1.VAR_2 = int128_make64(VAR_2),
.VAR_3 = VAR_3,
.VAR_4 = VAR_4,
.VAR_5 = VAR_5,
}; unsigned VAR_6; if (VAR_2) { adjust_endianness(VAR_0, &mrfd.VAR_4, VAR_2); memory_region_transaction_begin(); for (VAR_6 = 0; VAR_6 < VAR_0->ioeventfd_nb; ++VAR_6) { if (memory_region_ioeventfd_before(mrfd, VAR_0->ioeventfds[VAR_6])) { break; ++VAR_0->ioeventfd_nb; VAR_0->ioeventfds = g_realloc(VAR_0->ioeventfds,
sizeof(*VAR_0->ioeventfds) * VAR_0->ioeventfd_nb); memmove(&VAR_0->ioeventfds[VAR_6+1], &VAR_0->ioeventfds[VAR_6],
sizeof(*VAR_0->ioeventfds) * (VAR_0->ioeventfd_nb-1 - VAR_6)); VAR_0->ioeventfds[VAR_6] = mrfd; ioeventfd_update_pending |= VAR_0->enabled; memory_region_transaction_commit();