コード例 #1
0
ファイル: xxm.c プロジェクト: efanov/BOOK_KERN_223
void x_cleanup(void) {
   class_remove_file( x_class, &class_attr_data1 );
   class_remove_file( x_class, &class_attr_data2 );
   class_remove_file( x_class, &class_attr_data3 );
   class_destroy( x_class );
   return;
}
コード例 #2
0
ファイル: asus_oled.c プロジェクト: kapoloclubs/diana
static void __exit asus_oled_exit(void)
{
	class_remove_file(oled_class, &class_attr_version.attr);
	class_destroy(oled_class);

	usb_deregister(&oled_driver);
}
コード例 #3
0
int amlmmc_dtb_init(struct mmc_card *card)
{
	int ret = 0;
	card_dtb = card;
	pr_info("%s: register dtb chardev", __func__);
	ret = alloc_chrdev_region(&amlmmc_dtb_no, 0, 1, DTB_NAME);
	if (ret < 0) {
		pr_err("alloc dtb dev_t no failed");
		ret = -1;
		goto exit_err;
	}

	cdev_init(&amlmmc_dtb, &dtb_ops);
	amlmmc_dtb.owner = THIS_MODULE;
	ret = cdev_add(&amlmmc_dtb, amlmmc_dtb_no, 1);
	if (ret) {
		pr_err("dtb dev add failed");
		ret = -1;
		goto exit_err1;
	}

	amlmmc_dtb_class = class_create(THIS_MODULE, DTB_NAME);
	if (IS_ERR(amlmmc_dtb_class)) {
		pr_err("dtb dev add failed");
		ret = -1;
		goto exit_err2;
	}

	ret = class_create_file(amlmmc_dtb_class, &class_attr_emmcdtb);
	if (ret) {
		pr_err("dtb dev add failed");
		ret = -1;
		goto exit_err2;
	}

	dtb_dev = device_create(amlmmc_dtb_class,
			NULL,
			amlmmc_dtb_no,
			NULL,
			DTB_NAME);
	if (IS_ERR(dtb_dev)) {
		pr_err("dtb dev add failed");
		ret = -1;
		goto exit_err3;
	}

	pr_info("%s: register dtb chardev OK", __func__);

	return ret;

exit_err3:
	class_remove_file(amlmmc_dtb_class, &class_attr_emmcdtb);
	class_destroy(amlmmc_dtb_class);
exit_err2:
	cdev_del(&amlmmc_dtb);
exit_err1:
	unregister_chrdev_region(amlmmc_dtb_no, 1);
exit_err:
	return ret;
}
コード例 #4
0
ファイル: tbase.c プロジェクト: joyforu/android-ltp-ndk
/*
 * test_class_file
 *      make test call to class_create_file
 *      and if that call is successful make
 *      another call to class_remove_file
 */
static int test_class_file() {
        struct class * cls = &test_class;

        if (class_create_file(cls, &class_attr_test_id)) {
                printk("tbase: failed to create class sysfs file\n");
                return 1;
        }
        else {
                printk("tbase: created class sysfs file\n");
                class_remove_file(cls, &class_attr_test_id);
              return 0;
        }

}
コード例 #5
0
ファイル: tv_vout.c プロジェクト: dpott197/odroid-c2-patch
static __exit void tv_exit_module(void)
{
	int i;
	if (info->base_class) {
		for (i = 0; i < ARRAY_SIZE(tv_attr); i++)
			class_remove_file(info->base_class, tv_attr[i]);
		class_destroy(info->base_class);
	}
	if (info) {
		unregister_chrdev(info->major, info->name);
		kfree(info);
	}
	vout_unregister_server(&tv_server);
	vout_log_info("exit tv module\n");
}
コード例 #6
0
static int
 meson_vout_remove(struct platform_device *pdev)
{
   	int i;
	if(vout_info.base_class==NULL) return -1;
#ifdef CONFIG_HAS_EARLYSUSPEND
    unregister_early_suspend(&early_suspend);
#endif
	
	for(i=0;i<VOUT_ATTR_MAX;i++)
	{
		class_remove_file(vout_info.base_class,vout_attr[i]) ;
	}
		
	class_destroy(vout_info.base_class);
	
	return 0;
}
コード例 #7
0
static __exit void tv_exit_module(void)
{
	int i;
	
	if(info->base_class)
	{
		for(i=0;i<ARRAY_SIZE(tv_attr);i++)
		{
			class_remove_file(info->base_class,tv_attr[i]) ;
		}
		
		class_destroy(info->base_class);
	}	
	if(info)
	{
		unregister_chrdev(info->major,info->name)	;
		kfree(info);
	}
	vout_unregister_server(&tv_server);
	
	amlog_mask_level(LOG_MASK_INIT,LOG_LEVEL_HIGH,"exit tv module\r\n");
}
コード例 #8
0
ファイル: tvconf2.c プロジェクト: akuster/linux-meson
static int __exit tvout_remove(struct platform_device *pdev)
{
	int i;

	if (info->base_class)
	{
		for (i=0; i<ARRAY_SIZE(tv_attr); i++)
		{
			class_remove_file(info->base_class,tv_attr[i]) ;
		}

		class_destroy(info->base_class);
	}
	if (info)
	{
		unregister_chrdev(info->major,info->name)	;
		kfree(info);
	}
	vout2_unregister_server(&tv_server);

	amlog_mask_level(LOG_MASK_INIT,LOG_LEVEL_HIGH,"exit tv module\n");
	return 0;
}