Deleted Added
full compact
drm_sysctl.c (183573) drm_sysctl.c (183833)
1/*-
2 * Copyright 2003 Eric Anholt
3 * All Rights Reserved.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,

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

17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
20 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 */
23
24#include <sys/cdefs.h>
1/*-
2 * Copyright 2003 Eric Anholt
3 * All Rights Reserved.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,

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

17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * ERIC ANHOLT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
20 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 */
23
24#include <sys/cdefs.h>
25__FBSDID("$FreeBSD: head/sys/dev/drm/drm_sysctl.c 183573 2008-10-03 16:59:11Z rnoland $");
25__FBSDID("$FreeBSD: head/sys/dev/drm/drm_sysctl.c 183833 2008-10-13 18:03:27Z rnoland $");
26
27/** @file drm_sysctl.c
28 * Implementation of various sysctls for controlling DRM behavior and reporting
29 * debug information.
30 */
31
32#include "dev/drm/drmP.h"
33#include "dev/drm/drm.h"

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

57
58int drm_sysctl_init(struct drm_device *dev)
59{
60 struct drm_sysctl_info *info;
61 struct sysctl_oid *oid;
62 struct sysctl_oid *top, *drioid;
63 int i;
64
26
27/** @file drm_sysctl.c
28 * Implementation of various sysctls for controlling DRM behavior and reporting
29 * debug information.
30 */
31
32#include "dev/drm/drmP.h"
33#include "dev/drm/drm.h"

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

57
58int drm_sysctl_init(struct drm_device *dev)
59{
60 struct drm_sysctl_info *info;
61 struct sysctl_oid *oid;
62 struct sysctl_oid *top, *drioid;
63 int i;
64
65 info = malloc(sizeof *info, M_DRM, M_WAITOK | M_ZERO);
65 info = malloc(sizeof *info, DRM_MEM_DRIVER, M_WAITOK | M_ZERO);
66 if ( !info )
67 return 1;
68 dev->sysctl = info;
69
70 /* Add the sysctl node for DRI if it doesn't already exist */
71 drioid = SYSCTL_ADD_NODE( &info->ctx, &sysctl__hw_children, OID_AUTO, "dri", CTLFLAG_RW, NULL, "DRI Graphics");
72 if (!drioid)
73 return 1;

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

109 return 0;
110}
111
112int drm_sysctl_cleanup(struct drm_device *dev)
113{
114 int error;
115 error = sysctl_ctx_free( &dev->sysctl->ctx );
116
66 if ( !info )
67 return 1;
68 dev->sysctl = info;
69
70 /* Add the sysctl node for DRI if it doesn't already exist */
71 drioid = SYSCTL_ADD_NODE( &info->ctx, &sysctl__hw_children, OID_AUTO, "dri", CTLFLAG_RW, NULL, "DRI Graphics");
72 if (!drioid)
73 return 1;

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

109 return 0;
110}
111
112int drm_sysctl_cleanup(struct drm_device *dev)
113{
114 int error;
115 error = sysctl_ctx_free( &dev->sysctl->ctx );
116
117 free(dev->sysctl, M_DRM);
117 free(dev->sysctl, DRM_MEM_DRIVER);
118 dev->sysctl = NULL;
119
120 return error;
121}
122
123#define DRM_SYSCTL_PRINT(fmt, arg...) \
124do { \
125 snprintf(buf, sizeof(buf), fmt, ##arg); \

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

167 * temporary copy of all the map entries and then SYSCTL_OUT that.
168 */
169 DRM_LOCK();
170
171 mapcount = 0;
172 TAILQ_FOREACH(map, &dev->maplist, link)
173 mapcount++;
174
118 dev->sysctl = NULL;
119
120 return error;
121}
122
123#define DRM_SYSCTL_PRINT(fmt, arg...) \
124do { \
125 snprintf(buf, sizeof(buf), fmt, ##arg); \

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

167 * temporary copy of all the map entries and then SYSCTL_OUT that.
168 */
169 DRM_LOCK();
170
171 mapcount = 0;
172 TAILQ_FOREACH(map, &dev->maplist, link)
173 mapcount++;
174
175 tempmaps = malloc(sizeof(drm_local_map_t) * mapcount, M_DRM, M_NOWAIT);
175 tempmaps = malloc(sizeof(drm_local_map_t) * mapcount, DRM_MEM_DRIVER,
176 M_NOWAIT);
176 if (tempmaps == NULL) {
177 DRM_UNLOCK();
178 return ENOMEM;
179 }
180
181 i = 0;
182 TAILQ_FOREACH(map, &dev->maplist, link)
183 tempmaps[i++] = *map;

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

203 DRM_SYSCTL_PRINT(
204 "%4d 0x%08lx 0x%08lx %4.4s 0x%02x 0x%08lx %s\n", i,
205 map->offset, map->size, type, map->flags,
206 (unsigned long)map->handle, yesno);
207 }
208 SYSCTL_OUT(req, "", 1);
209
210done:
177 if (tempmaps == NULL) {
178 DRM_UNLOCK();
179 return ENOMEM;
180 }
181
182 i = 0;
183 TAILQ_FOREACH(map, &dev->maplist, link)
184 tempmaps[i++] = *map;

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

204 DRM_SYSCTL_PRINT(
205 "%4d 0x%08lx 0x%08lx %4.4s 0x%02x 0x%08lx %s\n", i,
206 map->offset, map->size, type, map->flags,
207 (unsigned long)map->handle, yesno);
208 }
209 SYSCTL_OUT(req, "", 1);
210
211done:
211 free(tempmaps, M_DRM);
212 free(tempmaps, DRM_MEM_DRIVER);
212 return retcode;
213}
214
215static int drm_bufs_info DRM_SYSCTL_HANDLER_ARGS
216{
217 struct drm_device *dev = arg1;
218 drm_device_dma_t *dma = dev->dma;
219 drm_device_dma_t tempdma;

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

227 */
228 DRM_LOCK();
229 if (dma == NULL) {
230 DRM_UNLOCK();
231 return 0;
232 }
233 DRM_SPINLOCK(&dev->dma_lock);
234 tempdma = *dma;
213 return retcode;
214}
215
216static int drm_bufs_info DRM_SYSCTL_HANDLER_ARGS
217{
218 struct drm_device *dev = arg1;
219 drm_device_dma_t *dma = dev->dma;
220 drm_device_dma_t tempdma;

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

228 */
229 DRM_LOCK();
230 if (dma == NULL) {
231 DRM_UNLOCK();
232 return 0;
233 }
234 DRM_SPINLOCK(&dev->dma_lock);
235 tempdma = *dma;
235 templists = malloc(sizeof(int) * dma->buf_count, M_DRM, M_NOWAIT);
236 templists = malloc(sizeof(int) * dma->buf_count, DRM_MEM_DRIVER,
237 M_NOWAIT);
236 for (i = 0; i < dma->buf_count; i++)
237 templists[i] = dma->buflist[i]->list;
238 dma = &tempdma;
239 DRM_SPINUNLOCK(&dev->dma_lock);
240 DRM_UNLOCK();
241
242 DRM_SYSCTL_PRINT("\n o size count free segs pages kB\n");
243 for (i = 0; i <= DRM_MAX_ORDER; i++) {

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

259 for (i = 0; i < dma->buf_count; i++) {
260 if (i && !(i%32)) DRM_SYSCTL_PRINT("\n");
261 DRM_SYSCTL_PRINT(" %d", templists[i]);
262 }
263 DRM_SYSCTL_PRINT("\n");
264
265 SYSCTL_OUT(req, "", 1);
266done:
238 for (i = 0; i < dma->buf_count; i++)
239 templists[i] = dma->buflist[i]->list;
240 dma = &tempdma;
241 DRM_SPINUNLOCK(&dev->dma_lock);
242 DRM_UNLOCK();
243
244 DRM_SYSCTL_PRINT("\n o size count free segs pages kB\n");
245 for (i = 0; i <= DRM_MAX_ORDER; i++) {

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

261 for (i = 0; i < dma->buf_count; i++) {
262 if (i && !(i%32)) DRM_SYSCTL_PRINT("\n");
263 DRM_SYSCTL_PRINT(" %d", templists[i]);
264 }
265 DRM_SYSCTL_PRINT("\n");
266
267 SYSCTL_OUT(req, "", 1);
268done:
267 free(templists, M_DRM);
269 free(templists, DRM_MEM_DRIVER);
268 return retcode;
269}
270
271static int drm_clients_info DRM_SYSCTL_HANDLER_ARGS
272{
273 struct drm_device *dev = arg1;
274 struct drm_file *priv, *tempprivs;
275 char buf[128];
276 int retcode;
277 int privcount, i;
278
279 DRM_LOCK();
280
281 privcount = 0;
282 TAILQ_FOREACH(priv, &dev->files, link)
283 privcount++;
284
270 return retcode;
271}
272
273static int drm_clients_info DRM_SYSCTL_HANDLER_ARGS
274{
275 struct drm_device *dev = arg1;
276 struct drm_file *priv, *tempprivs;
277 char buf[128];
278 int retcode;
279 int privcount, i;
280
281 DRM_LOCK();
282
283 privcount = 0;
284 TAILQ_FOREACH(priv, &dev->files, link)
285 privcount++;
286
285 tempprivs = malloc(sizeof(struct drm_file) * privcount, M_DRM, M_NOWAIT);
287 tempprivs = malloc(sizeof(struct drm_file) * privcount, DRM_MEM_DRIVER,
288 M_NOWAIT);
286 if (tempprivs == NULL) {
287 DRM_UNLOCK();
288 return ENOMEM;
289 }
290 i = 0;
291 TAILQ_FOREACH(priv, &dev->files, link)
292 tempprivs[i++] = *priv;
293

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

302 priv->pid,
303 priv->uid,
304 priv->magic,
305 priv->ioctl_count);
306 }
307
308 SYSCTL_OUT(req, "", 1);
309done:
289 if (tempprivs == NULL) {
290 DRM_UNLOCK();
291 return ENOMEM;
292 }
293 i = 0;
294 TAILQ_FOREACH(priv, &dev->files, link)
295 tempprivs[i++] = *priv;
296

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

305 priv->pid,
306 priv->uid,
307 priv->magic,
308 priv->ioctl_count);
309 }
310
311 SYSCTL_OUT(req, "", 1);
312done:
310 free(tempprivs, M_DRM);
313 free(tempprivs, DRM_MEM_DRIVER);
311 return retcode;
312}
314 return retcode;
315}