int32_t met_vp_init(tracer_handle_t self) { if (met_tag_init()<0) { printf("Error:Cannot init mtag libs\n"); } return 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; }