7 static FLIST_HEAD(profile_list);
9 int load_profile(const char *profile)
11 struct profile_ops *ops;
14 dprint(FD_PROFILE, "loading profile '%s'\n", profile);
16 flist_for_each(n, &profile_list) {
17 ops = flist_entry(n, struct profile_ops, list);
18 if (!strcmp(profile, ops->name))
26 add_job_opts(ops->cmdline);
30 log_err("fio: profile '%s' not found\n", profile);
34 static void add_profile_options(struct profile_ops *ops)
36 struct fio_option *fo;
37 struct ext_option *eo;
44 eo = malloc(sizeof(*eo));
45 eo->prof_name = ops->name;
46 memcpy(&eo->o, fo, sizeof(*fo));
47 register_ext_option(eo);
52 void register_profile(struct profile_ops *ops)
54 dprint(FD_PROFILE, "register profile '%s'\n", ops->name);
55 flist_add_tail(&ops->list, &profile_list);
56 add_profile_options(ops);
59 void unregister_profile(struct profile_ops *ops)
61 dprint(FD_PROFILE, "unregister profile '%s'\n", ops->name);
62 flist_del(&ops->list);
63 prune_profile_options(ops->name);