CFLAGS_REMOVE_rtmutex-debug.o = -pg
CFLAGS_REMOVE_cgroup-debug.o = -pg
CFLAGS_REMOVE_sched_clock.o = -pg
--CFLAGS_REMOVE_sched.o = -pg
+ endif
++ ifdef CONFIG_FUNCTION_RET_TRACER
++ CFLAGS_REMOVE_extable.o = -pg # For __kernel_text_address()
++ CFLAGS_REMOVE_module.o = -pg # For __module_text_address()
+ endif
obj-$(CONFIG_FREEZER) += freezer.o
obj-$(CONFIG_PROFILING) += profile.o
#undef SCHED_FEAT
--static int sched_feat_open(struct inode *inode, struct file *filp)
-{
- filp->private_data = inode->i_private;
- return 0;
-}
-
-static ssize_t
-sched_feat_read(struct file *filp, char __user *ubuf,
- size_t cnt, loff_t *ppos)
++static int sched_feat_show(struct seq_file *m, void *v)
{
- filp->private_data = inode->i_private;
- return 0;
- }
-
- static ssize_t
- sched_feat_read(struct file *filp, char __user *ubuf,
- size_t cnt, loff_t *ppos)
- {
-- char *buf;
-- int r = 0;
-- int len = 0;
int i;
for (i = 0; sched_feat_names[i]; i++) {
-- len += strlen(sched_feat_names[i]);
-- len += 4;
- }
-
- buf = kmalloc(len + 2, GFP_KERNEL);
- if (!buf)
- return -ENOMEM;
-
- for (i = 0; sched_feat_names[i]; i++) {
- if (sysctl_sched_features & (1UL << i))
- r += sprintf(buf + r, "%s ", sched_feat_names[i]);
- else
- r += sprintf(buf + r, "NO_%s ", sched_feat_names[i]);
++ if (!(sysctl_sched_features & (1UL << i)))
++ seq_puts(m, "NO_");
++ seq_printf(m, "%s ", sched_feat_names[i]);
}
++ seq_puts(m, "\n");
- buf = kmalloc(len + 2, GFP_KERNEL);
- if (!buf)
- return -ENOMEM;
-
- for (i = 0; sched_feat_names[i]; i++) {
- if (sysctl_sched_features & (1UL << i))
- r += sprintf(buf + r, "%s ", sched_feat_names[i]);
- else
- r += sprintf(buf + r, "NO_%s ", sched_feat_names[i]);
- }
-
-- r += sprintf(buf + r, "\n");
-- WARN_ON(r >= len + 2);
--
-- r = simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
--
-- kfree(buf);
--
-- return r;
++ return 0;
}
static ssize_t