#include "util/u_string.h"
#include "util/u_inlines.h"
#include "util/u_memory.h"
-#include "util/simple_list.h"
#include "util/u_network.h"
#include "util/os_time.h"
static struct rbug_context *
rbug_get_context_locked(struct rbug_screen *rb_screen, rbug_context_t ctx)
{
- struct rbug_context *rb_context = NULL;
- struct rbug_list *ptr;
+ struct rbug_context *rb_context;
- foreach(ptr, &rb_screen->contexts) {
- rb_context = container_of(ptr, struct rbug_context, list);
+ LIST_FOR_EACH_ENTRY(rb_context, &rb_screen->contexts, list) {
if (ctx == VOID2U64(rb_context))
break;
rb_context = NULL;
static struct rbug_shader *
rbug_get_shader_locked(struct rbug_context *rb_context, rbug_shader_t shdr)
{
- struct rbug_shader *tr_shdr = NULL;
- struct rbug_list *ptr;
+ struct rbug_shader *tr_shdr;
- foreach(ptr, &rb_context->shaders) {
- tr_shdr = container_of(ptr, struct rbug_shader, list);
+ LIST_FOR_EACH_ENTRY(tr_shdr, &rb_context->shaders, list) {
if (shdr == VOID2U64(tr_shdr))
break;
tr_shdr = NULL;
rbug_texture_list(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
{
struct rbug_screen *rb_screen = tr_rbug->rb_screen;
- struct rbug_resource *tr_tex = NULL;
- struct rbug_list *ptr;
+ struct rbug_resource *tr_tex;
rbug_texture_t *texs;
int i = 0;
mtx_lock(&rb_screen->list_mutex);
texs = MALLOC(rb_screen->num_resources * sizeof(rbug_texture_t));
- foreach(ptr, &rb_screen->resources) {
- tr_tex = container_of(ptr, struct rbug_resource, list);
+ LIST_FOR_EACH_ENTRY(tr_tex, &rb_screen->resources, list) {
texs[i++] = VOID2U64(tr_tex);
}
mtx_unlock(&rb_screen->list_mutex);
rbug_texture_info(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
{
struct rbug_screen *rb_screen = tr_rbug->rb_screen;
- struct rbug_resource *tr_tex = NULL;
+ struct rbug_resource *tr_tex;
struct rbug_proto_texture_info *gpti = (struct rbug_proto_texture_info *)header;
- struct rbug_list *ptr;
struct pipe_resource *t;
uint16_t num_layers;
mtx_lock(&rb_screen->list_mutex);
- foreach(ptr, &rb_screen->resources) {
- tr_tex = container_of(ptr, struct rbug_resource, list);
+ LIST_FOR_EACH_ENTRY(tr_tex, &rb_screen->resources, list) {
if (gpti->texture == VOID2U64(tr_tex))
break;
tr_tex = NULL;
struct rbug_proto_texture_read *gptr = (struct rbug_proto_texture_read *)header;
struct rbug_screen *rb_screen = tr_rbug->rb_screen;
- struct rbug_resource *tr_tex = NULL;
- struct rbug_list *ptr;
+ struct rbug_resource *tr_tex;
struct pipe_context *context = rb_screen->private_context;
struct pipe_resource *tex;
void *map;
mtx_lock(&rb_screen->list_mutex);
- foreach(ptr, &rb_screen->resources) {
- tr_tex = container_of(ptr, struct rbug_resource, list);
+ LIST_FOR_EACH_ENTRY(tr_tex, &rb_screen->resources, list) {
if (gptr->texture == VOID2U64(tr_tex))
break;
tr_tex = NULL;
rbug_context_list(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
{
struct rbug_screen *rb_screen = tr_rbug->rb_screen;
- struct rbug_list *ptr;
- struct rbug_context *rb_context = NULL;
+ struct rbug_context *rb_context, *next;
rbug_context_t *ctxs;
int i = 0;
mtx_lock(&rb_screen->list_mutex);
ctxs = MALLOC(rb_screen->num_contexts * sizeof(rbug_context_t));
- foreach(ptr, &rb_screen->contexts) {
- rb_context = container_of(ptr, struct rbug_context, list);
+ LIST_FOR_EACH_ENTRY_SAFE(rb_context, next, &rb_screen->contexts, list) {
ctxs[i++] = VOID2U64(rb_context);
}
mtx_unlock(&rb_screen->list_mutex);
struct rbug_screen *rb_screen = tr_rbug->rb_screen;
struct rbug_context *rb_context = NULL;
- struct rbug_shader *tr_shdr = NULL;
- struct rbug_list *ptr;
+ struct rbug_shader *tr_shdr, *next;
rbug_shader_t *shdrs;
int i = 0;
mtx_lock(&rb_context->list_mutex);
shdrs = MALLOC(rb_context->num_shaders * sizeof(rbug_shader_t));
- foreach(ptr, &rb_context->shaders) {
- tr_shdr = container_of(ptr, struct rbug_shader, list);
+ LIST_FOR_EACH_ENTRY_SAFE(tr_shdr, next, &rb_context->shaders, list) {
shdrs[i++] = VOID2U64(tr_shdr);
}
#include "pipe/p_screen.h"
#include "pipe/p_defines.h"
+#include "util/list.h"
#include "os/os_thread.h"
-struct rbug_list {
- struct rbug_list *next;
- struct rbug_list *prev;
-};
-
struct rbug_screen
{
int num_resources;
int num_surfaces;
int num_transfers;
- struct rbug_list contexts;
- struct rbug_list resources;
- struct rbug_list surfaces;
- struct rbug_list transfers;
+ struct list_head contexts;
+ struct list_head resources;
+ struct list_head surfaces;
+ struct list_head transfers;
};
static inline struct rbug_screen *
#define rbug_screen_add_to_list(scr, name, obj) \
do { \
mtx_lock(&scr->list_mutex); \
- insert_at_head(&scr->name, &obj->list); \
+ list_add(&scr->name, &obj->list); \
scr->num_##name++; \
mtx_unlock(&scr->list_mutex); \
} while (0)
#define rbug_screen_remove_from_list(scr, name, obj) \
do { \
mtx_lock(&scr->list_mutex); \
- remove_from_list(&obj->list); \
+ list_del(&obj->list); \
scr->num_##name--; \
mtx_unlock(&scr->list_mutex); \
} while (0)