forked from Minki/linux
[SPARC64]: Allow userspace to get at the machine description.
Like the OF device tree, it's useful to let userland get at the machine description so it can pretty print the graph etc. The implementation is a simple MISC device with a read method. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
70b0e7a919
commit
0fdb7f96d8
@ -9,6 +9,7 @@
|
||||
#include <linux/list.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/miscdevice.h>
|
||||
|
||||
#include <asm/hypervisor.h>
|
||||
#include <asm/mdesc.h>
|
||||
@ -836,6 +837,43 @@ void __devinit mdesc_fill_in_cpu_data(cpumask_t mask)
|
||||
mdesc_release(hp);
|
||||
}
|
||||
|
||||
static ssize_t mdesc_read(struct file *file, char __user *buf,
|
||||
size_t len, loff_t *offp)
|
||||
{
|
||||
struct mdesc_handle *hp = mdesc_grab();
|
||||
int err;
|
||||
|
||||
if (!hp)
|
||||
return -ENODEV;
|
||||
|
||||
err = hp->handle_size;
|
||||
if (len < hp->handle_size)
|
||||
err = -EMSGSIZE;
|
||||
else if (copy_to_user(buf, &hp->mdesc, hp->handle_size))
|
||||
err = -EFAULT;
|
||||
mdesc_release(hp);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static const struct file_operations mdesc_fops = {
|
||||
.read = mdesc_read,
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
static struct miscdevice mdesc_misc = {
|
||||
.minor = MISC_DYNAMIC_MINOR,
|
||||
.name = "mdesc",
|
||||
.fops = &mdesc_fops,
|
||||
};
|
||||
|
||||
static int __init mdesc_misc_init(void)
|
||||
{
|
||||
return misc_register(&mdesc_misc);
|
||||
}
|
||||
|
||||
__initcall(mdesc_misc_init);
|
||||
|
||||
void __init sun4v_mdesc_init(void)
|
||||
{
|
||||
struct mdesc_handle *hp;
|
||||
|
Loading…
Reference in New Issue
Block a user