regcache-rbtree.c (c04c1b9ee8f30c7a3a25e20e406247003f634ebe) regcache-rbtree.c (bacdbe077342ecc9e7b3e374cc5a41995116706a)
1/*
2 * Register cache access API - rbtree caching support
3 *
4 * Copyright 2011 Wolfson Microelectronics plc
5 *
6 * Author: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
7 *
8 * This program is free software; you can redistribute it and/or modify

--- 124 unchanged lines hidden (view full) ---

133{
134 struct regmap *map = s->private;
135 struct regcache_rbtree_ctx *rbtree_ctx = map->cache;
136 struct regcache_rbtree_node *n;
137 struct rb_node *node;
138 unsigned int base, top;
139 int nodes = 0;
140 int registers = 0;
1/*
2 * Register cache access API - rbtree caching support
3 *
4 * Copyright 2011 Wolfson Microelectronics plc
5 *
6 * Author: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
7 *
8 * This program is free software; you can redistribute it and/or modify

--- 124 unchanged lines hidden (view full) ---

133{
134 struct regmap *map = s->private;
135 struct regcache_rbtree_ctx *rbtree_ctx = map->cache;
136 struct regcache_rbtree_node *n;
137 struct rb_node *node;
138 unsigned int base, top;
139 int nodes = 0;
140 int registers = 0;
141 int average;
142
141
143 mutex_lock(&map->lock);
142 map->lock(map);
144
145 for (node = rb_first(&rbtree_ctx->root); node != NULL;
146 node = rb_next(node)) {
147 n = container_of(node, struct regcache_rbtree_node, node);
148
149 regcache_rbtree_get_base_top_reg(n, &base, &top);
150 seq_printf(s, "%x-%x (%d)\n", base, top, top - base + 1);
151
152 nodes++;
153 registers += top - base + 1;
154 }
155
143
144 for (node = rb_first(&rbtree_ctx->root); node != NULL;
145 node = rb_next(node)) {
146 n = container_of(node, struct regcache_rbtree_node, node);
147
148 regcache_rbtree_get_base_top_reg(n, &base, &top);
149 seq_printf(s, "%x-%x (%d)\n", base, top, top - base + 1);
150
151 nodes++;
152 registers += top - base + 1;
153 }
154
156 if (nodes)
157 average = registers / nodes;
158 else
159 average = 0;
160
161 seq_printf(s, "%d nodes, %d registers, average %d registers\n",
155 seq_printf(s, "%d nodes, %d registers, average %d registers\n",
162 nodes, registers, average);
156 nodes, registers, registers / nodes);
163
157
164 mutex_unlock(&map->lock);
158 map->unlock(map);
165
166 return 0;
167}
168
169static int rbtree_open(struct inode *inode, struct file *file)
170{
171 return single_open(file, rbtree_show, inode->i_private);
172}

--- 258 unchanged lines hidden ---
159
160 return 0;
161}
162
163static int rbtree_open(struct inode *inode, struct file *file)
164{
165 return single_open(file, rbtree_show, inode->i_private);
166}

--- 258 unchanged lines hidden ---