Beispiel #1
0
int32_t met_vp_init(tracer_handle_t self)
{
    if (met_tag_init()<0) {
        printf("Error:Cannot init mtag libs\n");
    }
    return 0;
}
Beispiel #2
0
int tag_reg(struct file_operations * const fops, struct kobject *kobj)
{
	int ret;
	kobj_tag = kobject_create_and_add("tag", kobj);
	if (kobj_tag == NULL) {
		ERRF("can not create kobject: kobj_bus\n");
		return -1;
	}

	ret = sysfs_create_file(kobj_tag, &enable_attr.attr);
	if (ret != 0) {
		ERRF("Failed to create enable in sysfs\n");
		kobject_del(kobj_tag);
		kobject_put(kobj_tag);
		kobj_tag = NULL;
		return ret;
	}

	ret = sysfs_create_file(kobj_tag, &dump_buffer_attr.attr);
	if (ret != 0) {
		ERRF("Failed to create dump_buffer in sysfs\n");
		sysfs_remove_file(kobj_tag, &enable_attr.attr);
		kobject_del(kobj_tag);
		kobject_put(kobj_tag);
		kobj_tag = NULL;
		return ret;
	}

	ret = sysfs_create_file(kobj_tag, &options_attr.attr);
	if (ret != 0) {
		ERRF("Failed to create options in sysfs\n");
		sysfs_remove_file(kobj_tag, &enable_attr.attr);
		sysfs_remove_file(kobj_tag, &dump_buffer_attr.attr);
		kobject_del(kobj_tag);
		kobject_put(kobj_tag);
		kobj_tag = NULL;
		return ret;
	}

	fops->open = met_open;
	fops->release = met_close;
	fops->unlocked_ioctl = met_ioctl;
	fops->read = met_read;
	fops->write = met_write;
	met_tag_init();
	met_ext_api.met_tag_start = met_tag_start_real;
	met_ext_api.met_tag_end = met_tag_end_real;
	met_ext_api.met_tag_oneshot = met_tag_oneshot_real;
	met_ext_api.met_tag_dump = met_tag_dump_real;
	met_ext_api.met_tag_disable = met_tag_disable_real;
	met_ext_api.met_tag_enable = met_tag_enable_real;
	met_ext_api.met_set_dump_buffer = met_set_dump_buffer_real;
	met_ext_api.met_save_dump_buffer = met_save_dump_buffer_real;
	met_ext_api.met_save_log = met_save_log_real;
	return 0;
}