Re: [take10 1/2] kevent: Core files.

Evgeniy Polyakov
2006-08-16T12:45:05Z

On Wed, Aug 16, 2006 at 03:37:30PM +0300, Mika Penttilä (mika.penttila@kolumbus.fi) wrote:
> +void kevent_user_ring_add_event(struct kevent *k)
> +{
> + unsigned int pidx, off;
> + struct kevent_mring *ring, *copy_ring;
> +
> + ring = (struct kevent_mring *)k->user->pring[0];
> +
> + pidx = ring->index/KEVENTS_ON_PAGE;
> + off = ring->index%KEVENTS_ON_PAGE;
> +
> + copy_ring = (struct kevent_mring *)k->user->pring[pidx];
> +
> + copy_ring->event[off].id.raw[0] = k->event.id.raw[0];
> + copy_ring->event[off].id.raw[1] = k->event.id.raw[1];
> + copy_ring->event[off].ret_flags = k->event.ret_flags;
> +
> + if (++ring->index >= KEVENT_MAX_EVENTS)
> + ring->index = 0;
> +}
>
> Can you assume that the page at pidx is already allocated and why?

It is checked and allocated if needed in kevent_user_ring_grow(), which
is called for each new kevent.

> --Mika
>

--
Evgeniy Polyakov