Hi all, I have a driver that is bound to a platform device. It creates a miscdevice to interact with user space. And it has a "global" structure that stores info which are used throughout the driver. This works ok as far as I can see. The only issue is how to make the "global" struct available to the miscdevice's file operations. Of course, I can make the struct a global variable. Recently, I realized that I could make the platform device the parent of the miscdevice. I came up with something like static int example_open(struct inode *inode, struct file *file) { struct miscdevice *m = file->private_data; struct example_global_info *gbl = dev_get_drvdata(m->parent); ... } static struct file_operations example_fops = { .owner = THIS_MODULE, .open = example_open, ... }; static struct miscdevice example_miscdev = { ... .fops = &example_fops, }; static int example_probe(struct platform_device *pdev) { struct example_global_info *gbl = devm_kzalloc(&pdev->dev, ....); platform_set_drvdata(pdev, gbl); example_miscdev.parent = &pdev->dev; ret = misc_register(&example_miscdev); ... } Yet again, this seems to work ok. I was surprised to see that there's very few (if any) mainline drivers that do something similar. Does this approach make sense? Does it have any implications that I should be aware of (e.g. does the link between pdev and miscdevice cause problems for suspend/resume)? Thanks, Martin _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies