Linux系统ioctl使用示例 ioctl实验(2)

static int gpio_test_probe(struct platform_device *pdev)
 {
    int ret = 0;
 
    printk("gpio_test_probe 0\n");
   
    /* Initialize */
    gpio_priv = kzalloc(sizeof(struct gpio_priv_t), GFP_KERNEL);
 
    if (gpio_priv == NULL) {
        pr_alert("Not enough memory to initialize device\n");
        return -ENOMEM;
    }
 
    ret = misc_register(&gpio_test_dev);
   
    if (ret < 0)
        goto err;
    return 0;
 
err:
    printk("gpio_test register failed\n");
   
 
    kfree(gpio_priv);
    gpio_priv = NULL;
 
    return ret;
 
}
 
static int __devexit gpio_test_remove(struct platform_device *plat)
 {
 
    kfree(gpio_priv);
    gpio_priv = NULL;
 
    misc_deregister(&gpio_test_dev);
    printk("gpio_test remove\n");
    return 0;
 }
 
static struct platform_driver gpio_test_driver = {
    .probe = gpio_test_probe,
    .remove = gpio_test_remove,
    .driver = {
        .name = "gpio_test",
        .owner = THIS_MODULE,
    },
 };
 
static int __init gpio_test_init(void)
   
 {
    printk("gpio_test_init  \n");
    return platform_driver_register(&gpio_test_driver);
 }
 
static void __exit gpio_test_exit(void)
 {
    platform_driver_unregister(&gpio_test_driver);
 }
 


module_init(gpio_test_init);
 module_exit(gpio_test_exit);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/b97022756a963924f22d57586be8f6f1.html