#include <ks_features/ks_features.h>
#include "parser_defs.h"
#include "features.h"
+#include "msg_parser.h"
+
+#include <sampler/swap_sampler_module.h>
enum features_list {
syscall_file = (1 << 10), /* File operation syscalls tracing */
func_sampling = (1 << 19) /* Function sampling */
};
-int set_syscall_file(void)
+int set_syscall_file(struct conf_data *conf)
{
int ret;
return ret;
}
-int set_syscall_ipc(void)
+int set_syscall_ipc(struct conf_data *conf)
{
int ret;
return ret;
}
-int set_syscall_process(void)
+int set_syscall_process(struct conf_data *conf)
{
int ret;
return ret;
}
-int set_syscall_signal(void)
+int set_syscall_signal(struct conf_data *conf)
{
int ret;
return ret;
}
-int set_syscall_network(void)
+int set_syscall_network(struct conf_data *conf)
{
int ret;
return ret;
}
-int set_syscall_desc(void)
+int set_syscall_desc(struct conf_data *conf)
{
int ret;
return ret;
}
-int set_context_switch(void)
+int set_context_switch(struct conf_data *conf)
{
printk("### set_context_switch\n");
return -EINVAL;
}
-int set_func_sampling(void)
+int set_func_sampling(struct conf_data *conf)
{
- printk("### set_func_sampling\n");
+ int ret;
- return -EINVAL;
+ ret = swap_sampler_start(conf->data_msg_period);
+
+ return ret;
}
int unset_func_sampling(void)
{
- printk("### unset_func_sampling\n");
+ int ret;
- return -EINVAL;
+ ret = swap_sampler_stop();
+
+ return ret;
}
struct feature_item {
char *name;
- int (*set)(void);
+ int (*set)(struct conf_data *conf);
int (*unset)(void);
};
{
}
-int set_features(u64 features)
+int set_features(struct conf_data *conf)
{
int i, ret;
u64 feature_XOR;
+ u64 features = conf->use_features;
features &= feature_mask;
feature_XOR = features ^ feature_inst;
for (i = 0; feature_XOR && i < SIZE_FEATURE_LIST; ++i) {
if ((feature_XOR & 1) && feature_list[i] != NULL) {
if (features & 1)
- ret = feature_list[i]->set();
+ ret = feature_list[i]->set(conf);
else
ret = feature_list[i]->unset();