Message ID | 1445270883-8069-5-git-send-email-maxim.uvarov@linaro.org |
---|---|
State | Superseded |
Headers | show |
On 19 October 2015 at 18:07, Maxim Uvarov <maxim.uvarov@linaro.org> wrote: > Add flag ODPH_RING_NO_LIST to ring to not link it to linked list. > And the purpose of this is? Either we want to be able to look up resources by name or not. Is there any specific reason why this is a per-object (per-ring) configuration? > > Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> > --- > helper/include/odp/helper/ring.h | 7 ++++--- > helper/ring.c | 3 ++- > 2 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/helper/include/odp/helper/ring.h > b/helper/include/odp/helper/ring.h > index 5e640a7..c3c2f6a 100644 > --- a/helper/include/odp/helper/ring.h > +++ b/helper/include/odp/helper/ring.h > @@ -156,10 +156,11 @@ typedef struct odph_ring { > } odph_ring_t; > > > -#define ODPH_RING_F_SP_ENQ 0x0001 /* The default enqueue is > "single-producer".*/ > -#define ODPH_RING_F_SC_DEQ 0x0002 /* The default dequeue is > "single-consumer".*/ > -#define ODPH_RING_SHM_PROC 0x0004 /* If set - ring is visible from > different > +#define ODPH_RING_F_SP_ENQ (1 << 0) /* The default enqueue is > "single-producer".*/ > +#define ODPH_RING_F_SC_DEQ (1 << 1) /* The default dequeue is > "single-consumer".*/ > +#define ODPH_RING_SHM_PROC (1 << 2) /* If set - ring is visible from > different > processes. Default is thread visible. > */ > +#define ODPH_RING_NO_LIST (1 << 3) /* Do not link ring to linked list. */ > #define ODPH_RING_QUOT_EXCEED (1 << 31) /* Quota exceed for burst ops */ > #define ODPH_RING_SZ_MASK (unsigned)(0x0fffffff) /* Ring size mask */ > > diff --git a/helper/ring.c b/helper/ring.c > index 6bb2bda..fe01c5d 100644 > --- a/helper/ring.c > +++ b/helper/ring.c > @@ -199,7 +199,8 @@ odph_ring_create(const char *name, unsigned count, > unsigned flags) > r->prod.tail = 0; > r->cons.tail = 0; > > - TAILQ_INSERT_TAIL(&odp_ring_list, r, next); > + if (!(flags & ODPH_RING_NO_LIST)) > + TAILQ_INSERT_TAIL(&odp_ring_list, r, next); > } else { > ODPH_ERR("Cannot reserve memory\n"); > } > -- > 1.9.1 > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org > https://lists.linaro.org/mailman/listinfo/lng-odp >
On 10/19/2015 19:13, Ola Liljedahl wrote: > On 19 October 2015 at 18:07, Maxim Uvarov <maxim.uvarov@linaro.org > <mailto:maxim.uvarov@linaro.org>> wrote: > > Add flag ODPH_RING_NO_LIST to ring to not link it to linked list. > > And the purpose of this is? > Either we want to be able to look up resources by name or not. Is > there any specific reason why this is a per-object (per-ring) > configuration? ring used odp_shm_reserve() with the same name. It's possible to find that name and free. If original core is used then I have to init odp helper ring list pointer so that all new created odph_rings attached to it. I found it's ugly and prefer just to not add each link to that linked list. Maxim. > > Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org > <mailto:maxim.uvarov@linaro.org>> > --- > helper/include/odp/helper/ring.h | 7 ++++--- > helper/ring.c | 3 ++- > 2 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/helper/include/odp/helper/ring.h > b/helper/include/odp/helper/ring.h > index 5e640a7..c3c2f6a 100644 > --- a/helper/include/odp/helper/ring.h > +++ b/helper/include/odp/helper/ring.h > @@ -156,10 +156,11 @@ typedef struct odph_ring { > } odph_ring_t; > > > -#define ODPH_RING_F_SP_ENQ 0x0001 /* The default enqueue is > "single-producer".*/ > -#define ODPH_RING_F_SC_DEQ 0x0002 /* The default dequeue is > "single-consumer".*/ > -#define ODPH_RING_SHM_PROC 0x0004 /* If set - ring is visible > from different > +#define ODPH_RING_F_SP_ENQ (1 << 0) /* The default enqueue is > "single-producer".*/ > +#define ODPH_RING_F_SC_DEQ (1 << 1) /* The default dequeue is > "single-consumer".*/ > +#define ODPH_RING_SHM_PROC (1 << 2) /* If set - ring is visible > from different > processes. Default is thread > visible. */ > +#define ODPH_RING_NO_LIST (1 << 3) /* Do not link ring to linked > list. */ > #define ODPH_RING_QUOT_EXCEED (1 << 31) /* Quota exceed for > burst ops */ > #define ODPH_RING_SZ_MASK (unsigned)(0x0fffffff) /* Ring size > mask */ > > diff --git a/helper/ring.c b/helper/ring.c > index 6bb2bda..fe01c5d 100644 > --- a/helper/ring.c > +++ b/helper/ring.c > @@ -199,7 +199,8 @@ odph_ring_create(const char *name, unsigned > count, unsigned flags) > r->prod.tail = 0; > r->cons.tail = 0; > > - TAILQ_INSERT_TAIL(&odp_ring_list, r, next); > + if (!(flags & ODPH_RING_NO_LIST)) > + TAILQ_INSERT_TAIL(&odp_ring_list, r, next); > } else { > ODPH_ERR("Cannot reserve memory\n"); > } > -- > 1.9.1 > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org> > https://lists.linaro.org/mailman/listinfo/lng-odp > >
diff --git a/helper/include/odp/helper/ring.h b/helper/include/odp/helper/ring.h index 5e640a7..c3c2f6a 100644 --- a/helper/include/odp/helper/ring.h +++ b/helper/include/odp/helper/ring.h @@ -156,10 +156,11 @@ typedef struct odph_ring { } odph_ring_t; -#define ODPH_RING_F_SP_ENQ 0x0001 /* The default enqueue is "single-producer".*/ -#define ODPH_RING_F_SC_DEQ 0x0002 /* The default dequeue is "single-consumer".*/ -#define ODPH_RING_SHM_PROC 0x0004 /* If set - ring is visible from different +#define ODPH_RING_F_SP_ENQ (1 << 0) /* The default enqueue is "single-producer".*/ +#define ODPH_RING_F_SC_DEQ (1 << 1) /* The default dequeue is "single-consumer".*/ +#define ODPH_RING_SHM_PROC (1 << 2) /* If set - ring is visible from different processes. Default is thread visible. */ +#define ODPH_RING_NO_LIST (1 << 3) /* Do not link ring to linked list. */ #define ODPH_RING_QUOT_EXCEED (1 << 31) /* Quota exceed for burst ops */ #define ODPH_RING_SZ_MASK (unsigned)(0x0fffffff) /* Ring size mask */ diff --git a/helper/ring.c b/helper/ring.c index 6bb2bda..fe01c5d 100644 --- a/helper/ring.c +++ b/helper/ring.c @@ -199,7 +199,8 @@ odph_ring_create(const char *name, unsigned count, unsigned flags) r->prod.tail = 0; r->cons.tail = 0; - TAILQ_INSERT_TAIL(&odp_ring_list, r, next); + if (!(flags & ODPH_RING_NO_LIST)) + TAILQ_INSERT_TAIL(&odp_ring_list, r, next); } else { ODPH_ERR("Cannot reserve memory\n"); }
Add flag ODPH_RING_NO_LIST to ring to not link it to linked list. Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> --- helper/include/odp/helper/ring.h | 7 ++++--- helper/ring.c | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-)