This patch contains all the modified generic files:

linux/include/linux/sched.h:
        - add pfm_context pointer to struct task_struct. This is used
          to connect a perfmon2 context to a task when doing per-thread
          monitoring.

linux/include/linux/syscalls.h:
        - declare prototypes of our new system calls

linux/kernel/sched.c:
        - add include perfmon.h to ensure pfm_ctxsw() has a defined prototype

linux/kernel/sys_ni.c:
        - add perfmon2 cond_syscall() definitions (when CONFIG_PERFMON is off)

drivers/oprofile/oprofile_files.c:
linux-2.6.22.base/drivers/oprofile/timer_int.c:
include/linux/oprofile.h:
        - add new implementation entry for oprofilefs. used to check if 
oprofile is
          using perfmon vs. runs natively



Only in linux-2.6.22/Documentation: perfmon2.txt
diff --exclude=.git -urp --exclude-from=/tmp/excl315935 
linux-2.6.22.base/Makefile linux-2.6.22/Makefile
--- linux-2.6.22.base/Makefile  2007-05-29 03:17:15.000000000 -0700
+++ linux-2.6.22/Makefile       2007-05-29 03:24:14.000000000 -0700
@@ -553,7 +553,7 @@ export mod_strip_cmd
 
 
 ifeq ($(KBUILD_EXTMOD),)
-core-y         += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
+core-y         += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ perfmon/
 
 vmlinux-dirs   := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
                     $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
diff --exclude=.git -urp --exclude-from=/tmp/excl315935 
linux-2.6.22.base/drivers/oprofile/oprofile_files.c 
linux-2.6.22/drivers/oprofile/oprofile_files.c
--- linux-2.6.22.base/drivers/oprofile/oprofile_files.c 2007-05-29 
03:17:41.000000000 -0700
+++ linux-2.6.22/drivers/oprofile/oprofile_files.c      2007-05-29 
03:24:14.000000000 -0700
@@ -117,7 +117,17 @@ static ssize_t dump_write(struct file * 
 static const struct file_operations dump_fops = {
        .write          = dump_write,
 };
- 
+
+static ssize_t implementation(struct file * file, char __user * buf, size_t 
count, loff_t * offset)
+{
+       return oprofilefs_str_to_user(oprofile_ops.implementation, buf, count, 
offset);
+}
+
+
+static struct file_operations implementation_fops = {
+       .read           = implementation,
+};
+
 void oprofile_create_files(struct super_block * sb, struct dentry * root)
 {
        oprofilefs_create_file(sb, root, "enable", &enable_fops);
@@ -127,6 +137,7 @@ void oprofile_create_files(struct super_
        oprofilefs_create_ulong(sb, root, "buffer_watershed", 
&fs_buffer_watershed);
        oprofilefs_create_ulong(sb, root, "cpu_buffer_size", 
&fs_cpu_buffer_size);
        oprofilefs_create_file(sb, root, "cpu_type", &cpu_type_fops); 
+       oprofilefs_create_file(sb, root, "implementation", 
&implementation_fops);
        oprofilefs_create_file(sb, root, "backtrace_depth", &depth_fops);
        oprofilefs_create_file(sb, root, "pointer_size", &pointer_size_fops);
        oprofile_create_stats_files(sb, root);
diff --exclude=.git -urp --exclude-from=/tmp/excl315935 
linux-2.6.22.base/drivers/oprofile/timer_int.c 
linux-2.6.22/drivers/oprofile/timer_int.c
--- linux-2.6.22.base/drivers/oprofile/timer_int.c      2007-05-29 
03:17:41.000000000 -0700
+++ linux-2.6.22/drivers/oprofile/timer_int.c   2007-05-29 03:24:14.000000000 
-0700
@@ -43,4 +43,5 @@ void __init oprofile_timer_init(struct o
        ops->start = timer_start;
        ops->stop = timer_stop;
        ops->cpu_type = "timer";
+       ops->implementation = "timer";
 }
diff --exclude=.git -urp --exclude-from=/tmp/excl315935 
linux-2.6.22.base/include/linux/oprofile.h linux-2.6.22/include/linux/oprofile.h
--- linux-2.6.22.base/include/linux/oprofile.h  2007-05-29 03:17:57.000000000 
-0700
+++ linux-2.6.22/include/linux/oprofile.h       2007-05-29 03:24:14.000000000 
-0700
@@ -39,6 +39,8 @@ struct oprofile_operations {
        void (*backtrace)(struct pt_regs * const regs, unsigned int depth);
        /* CPU identification string. */
        char * cpu_type;
+       /* Identify method of  string. */
+       char * implementation;
 };
 
 /**
Only in linux-2.6.22/include/linux: perfmon.h
Only in linux-2.6.22/include/linux: perfmon_dfl_smpl.h
Only in linux-2.6.22/include/linux: perfmon_fmt.h
Only in linux-2.6.22/include/linux: perfmon_pmu.h
diff --exclude=.git -urp --exclude-from=/tmp/excl315935 
linux-2.6.22.base/include/linux/sched.h linux-2.6.22/include/linux/sched.h
--- linux-2.6.22.base/include/linux/sched.h     2007-05-29 03:17:57.000000000 
-0700
+++ linux-2.6.22/include/linux/sched.h  2007-05-29 03:24:14.000000000 -0700
@@ -89,6 +89,7 @@ struct sched_param {
 struct exec_domain;
 struct futex_pi_state;
 struct bio;
+struct pfm_context;
 
 /*
  * List of flags we want to share for kernel threads,
@@ -1076,6 +1077,9 @@ struct task_struct {
 #ifdef CONFIG_FAULT_INJECTION
        int make_it_fail;
 #endif
+#ifdef CONFIG_PERFMON
+       struct pfm_context *pfm_context;
+#endif
 };
 
 static inline pid_t process_group(struct task_struct *tsk)
diff --exclude=.git -urp --exclude-from=/tmp/excl315935 
linux-2.6.22.base/include/linux/syscalls.h linux-2.6.22/include/linux/syscalls.h
--- linux-2.6.22.base/include/linux/syscalls.h  2007-05-29 03:17:57.000000000 
-0700
+++ linux-2.6.22/include/linux/syscalls.h       2007-05-29 03:24:14.000000000 
-0700
@@ -29,6 +29,13 @@ struct msqid_ds;
 struct new_utsname;
 struct nfsctl_arg;
 struct __old_kernel_stat;
+struct pfarg_ctx;
+struct pfarg_pmc;
+struct pfarg_pmd;
+struct pfarg_start;
+struct pfarg_load;
+struct pfarg_setinfo;
+struct pfarg_setdesc;
 struct pollfd;
 struct rlimit;
 struct rusage;
@@ -611,4 +618,27 @@ asmlinkage long sys_eventfd(unsigned int
 
 int kernel_execve(const char *filename, char *const argv[], char *const 
envp[]);
 
+asmlinkage long sys_pfm_create_context(struct pfarg_ctx __user *ureq,
+                                      void __user *uarg, size_t smpl_size);
+asmlinkage long sys_pfm_write_pmcs(int fd, struct pfarg_pmc __user *ureq,
+                                  int count);
+asmlinkage long sys_pfm_write_pmds(int fd, struct pfarg_pmd __user *ureq,
+                                  int count);
+asmlinkage long sys_pfm_read_pmds(int fd, struct pfarg_pmd __user *ureq,
+                                 int count);
+asmlinkage long sys_pfm_restart(int fd);
+asmlinkage long sys_pfm_stop(int fd);
+asmlinkage long sys_pfm_start(int fd, struct pfarg_start __user *ureq);
+asmlinkage long sys_pfm_load_context(int fd, struct pfarg_load __user *ureq);
+asmlinkage long sys_pfm_unload_context(int fd);
+asmlinkage long sys_pfm_delete_evtsets(int fd,
+                                      struct pfarg_setinfo __user *ureq,
+                                      int count);
+asmlinkage long sys_pfm_create_evtsets(int fd,
+                                      struct pfarg_setdesc __user *ureq,
+                                      int count);
+asmlinkage long sys_pfm_getinfo_evtsets(int fd,
+                                       struct pfarg_setinfo __user *ureq,
+                                       int count);
+
 #endif
diff --exclude=.git -urp --exclude-from=/tmp/excl315935 
linux-2.6.22.base/kernel/sched.c linux-2.6.22/kernel/sched.c
--- linux-2.6.22.base/kernel/sched.c    2007-05-29 03:17:57.000000000 -0700
+++ linux-2.6.22/kernel/sched.c 2007-05-29 03:24:14.000000000 -0700
@@ -53,6 +53,7 @@
 #include <linux/kprobes.h>
 #include <linux/delayacct.h>
 #include <linux/reciprocal_div.h>
+#include <linux/perfmon.h>
 
 #include <asm/tlb.h>
 #include <asm/unistd.h>
diff --exclude=.git -urp --exclude-from=/tmp/excl315935 
linux-2.6.22.base/kernel/sys_ni.c linux-2.6.22/kernel/sys_ni.c
--- linux-2.6.22.base/kernel/sys_ni.c   2007-05-29 03:17:57.000000000 -0700
+++ linux-2.6.22/kernel/sys_ni.c        2007-05-29 03:24:14.000000000 -0700
@@ -113,6 +113,19 @@ cond_syscall(sys_vm86);
 cond_syscall(compat_sys_ipc);
 cond_syscall(compat_sys_sysctl);
 
+cond_syscall(sys_pfm_create_context);
+cond_syscall(sys_pfm_write_pmcs);
+cond_syscall(sys_pfm_write_pmds);
+cond_syscall(sys_pfm_read_pmds);
+cond_syscall(sys_pfm_restart);
+cond_syscall(sys_pfm_start);
+cond_syscall(sys_pfm_stop);
+cond_syscall(sys_pfm_load_context);
+cond_syscall(sys_pfm_unload_context);
+cond_syscall(sys_pfm_create_evtsets);
+cond_syscall(sys_pfm_delete_evtsets);
+cond_syscall(sys_pfm_getinfo_evtsets);
+ 
 /* arch-specific weak syscall entries */
 cond_syscall(sys_pciconfig_read);
 cond_syscall(sys_pciconfig_write);
Only in linux-2.6.22: perfmon
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to