Commit e896c132 authored by Noralf Trønnes's avatar Noralf Trønnes

drm/debugfs: Add internal client debugfs file

Print the names of the internal clients currently attached.
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarNoralf Trønnes <noralf@tronnes.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20180703160354.59955-6-noralf@tronnes.org
parent 894a677f
...@@ -385,3 +385,31 @@ void drm_client_framebuffer_delete(struct drm_client_buffer *buffer) ...@@ -385,3 +385,31 @@ void drm_client_framebuffer_delete(struct drm_client_buffer *buffer)
drm_client_buffer_delete(buffer); drm_client_buffer_delete(buffer);
} }
EXPORT_SYMBOL(drm_client_framebuffer_delete); EXPORT_SYMBOL(drm_client_framebuffer_delete);
#ifdef CONFIG_DEBUG_FS
static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
{
struct drm_info_node *node = m->private;
struct drm_device *dev = node->minor->dev;
struct drm_printer p = drm_seq_file_printer(m);
struct drm_client_dev *client;
mutex_lock(&dev->clientlist_mutex);
list_for_each_entry(client, &dev->clientlist, list)
drm_printf(&p, "%s\n", client->name);
mutex_unlock(&dev->clientlist_mutex);
return 0;
}
static const struct drm_info_list drm_client_debugfs_list[] = {
{ "internal_clients", drm_client_debugfs_internal_clients, 0 },
};
int drm_client_debugfs_init(struct drm_minor *minor)
{
return drm_debugfs_create_files(drm_client_debugfs_list,
ARRAY_SIZE(drm_client_debugfs_list),
minor->debugfs_root, minor);
}
#endif
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/export.h> #include <linux/export.h>
#include <drm/drm_client.h>
#include <drm/drm_debugfs.h> #include <drm/drm_debugfs.h>
#include <drm/drm_edid.h> #include <drm/drm_edid.h>
#include <drm/drm_atomic.h> #include <drm/drm_atomic.h>
...@@ -164,6 +165,12 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id, ...@@ -164,6 +165,12 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,
DRM_ERROR("Failed to create framebuffer debugfs file\n"); DRM_ERROR("Failed to create framebuffer debugfs file\n");
return ret; return ret;
} }
ret = drm_client_debugfs_init(minor);
if (ret) {
DRM_ERROR("Failed to create client debugfs file\n");
return ret;
}
} }
if (dev->driver->debugfs_init) { if (dev->driver->debugfs_init) {
......
...@@ -10,6 +10,7 @@ struct drm_device; ...@@ -10,6 +10,7 @@ struct drm_device;
struct drm_file; struct drm_file;
struct drm_framebuffer; struct drm_framebuffer;
struct drm_gem_object; struct drm_gem_object;
struct drm_minor;
struct module; struct module;
/** /**
...@@ -133,4 +134,6 @@ struct drm_client_buffer * ...@@ -133,4 +134,6 @@ struct drm_client_buffer *
drm_client_framebuffer_create(struct drm_client_dev *client, u32 width, u32 height, u32 format); drm_client_framebuffer_create(struct drm_client_dev *client, u32 width, u32 height, u32 format);
void drm_client_framebuffer_delete(struct drm_client_buffer *buffer); void drm_client_framebuffer_delete(struct drm_client_buffer *buffer);
int drm_client_debugfs_init(struct drm_minor *minor);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment