mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-26 00:21:17 +00:00
drm: Merge drm_info.c into drm_debugfs.c
Ever since
commit cb6458f97b
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date: Thu Aug 8 15:41:34 2013 +0200
drm: remove procfs code, take 2
Having the code shared between procfs and debugfs in the separate
drm_info.c file stopped making sense. Merge them.
Noticed because Lyude asked some questions on irc about why we even
have drm_info_node and I remember this old story.
Cc: Lyude Paul <lyude@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181121213510.31260-1-daniel.vetter@ffwll.ch
This commit is contained in:
parent
42843dc2d5
commit
c6fdea6e1a
4 changed files with 90 additions and 143 deletions
|
@ -32,6 +32,8 @@
|
|||
#include <drm/drm_debugfs.h>
|
||||
#include <drm/drm_edid.h>
|
||||
#include <drm/drm_atomic.h>
|
||||
#include <drm/drm_auth.h>
|
||||
#include <drm/drm_gem.h>
|
||||
#include <drm/drmP.h>
|
||||
|
||||
#include "drm_internal.h"
|
||||
|
@ -43,6 +45,93 @@
|
|||
* Initialization, etc.
|
||||
**************************************************/
|
||||
|
||||
static int drm_name_info(struct seq_file *m, void *data)
|
||||
{
|
||||
struct drm_info_node *node = (struct drm_info_node *) m->private;
|
||||
struct drm_minor *minor = node->minor;
|
||||
struct drm_device *dev = minor->dev;
|
||||
struct drm_master *master;
|
||||
|
||||
mutex_lock(&dev->master_mutex);
|
||||
master = dev->master;
|
||||
seq_printf(m, "%s", dev->driver->name);
|
||||
if (dev->dev)
|
||||
seq_printf(m, " dev=%s", dev_name(dev->dev));
|
||||
if (master && master->unique)
|
||||
seq_printf(m, " master=%s", master->unique);
|
||||
if (dev->unique)
|
||||
seq_printf(m, " unique=%s", dev->unique);
|
||||
seq_printf(m, "\n");
|
||||
mutex_unlock(&dev->master_mutex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int drm_clients_info(struct seq_file *m, void *data)
|
||||
{
|
||||
struct drm_info_node *node = (struct drm_info_node *) m->private;
|
||||
struct drm_device *dev = node->minor->dev;
|
||||
struct drm_file *priv;
|
||||
kuid_t uid;
|
||||
|
||||
seq_printf(m,
|
||||
"%20s %5s %3s master a %5s %10s\n",
|
||||
"command",
|
||||
"pid",
|
||||
"dev",
|
||||
"uid",
|
||||
"magic");
|
||||
|
||||
/* dev->filelist is sorted youngest first, but we want to present
|
||||
* oldest first (i.e. kernel, servers, clients), so walk backwardss.
|
||||
*/
|
||||
mutex_lock(&dev->filelist_mutex);
|
||||
list_for_each_entry_reverse(priv, &dev->filelist, lhead) {
|
||||
struct task_struct *task;
|
||||
|
||||
rcu_read_lock(); /* locks pid_task()->comm */
|
||||
task = pid_task(priv->pid, PIDTYPE_PID);
|
||||
uid = task ? __task_cred(task)->euid : GLOBAL_ROOT_UID;
|
||||
seq_printf(m, "%20s %5d %3d %c %c %5d %10u\n",
|
||||
task ? task->comm : "<unknown>",
|
||||
pid_vnr(priv->pid),
|
||||
priv->minor->index,
|
||||
drm_is_current_master(priv) ? 'y' : 'n',
|
||||
priv->authenticated ? 'y' : 'n',
|
||||
from_kuid_munged(seq_user_ns(m), uid),
|
||||
priv->magic);
|
||||
rcu_read_unlock();
|
||||
}
|
||||
mutex_unlock(&dev->filelist_mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int drm_gem_one_name_info(int id, void *ptr, void *data)
|
||||
{
|
||||
struct drm_gem_object *obj = ptr;
|
||||
struct seq_file *m = data;
|
||||
|
||||
seq_printf(m, "%6d %8zd %7d %8d\n",
|
||||
obj->name, obj->size,
|
||||
obj->handle_count,
|
||||
kref_read(&obj->refcount));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int drm_gem_name_info(struct seq_file *m, void *data)
|
||||
{
|
||||
struct drm_info_node *node = (struct drm_info_node *) m->private;
|
||||
struct drm_device *dev = node->minor->dev;
|
||||
|
||||
seq_printf(m, " name size handles refcount\n");
|
||||
|
||||
mutex_lock(&dev->object_name_lock);
|
||||
idr_for_each(&dev->object_name_idr, drm_gem_one_name_info, m);
|
||||
mutex_unlock(&dev->object_name_lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct drm_info_list drm_debugfs_list[] = {
|
||||
{"name", drm_name_info, 0},
|
||||
{"clients", drm_clients_info, 0},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue