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} |