Initial Contribution
msm-2.6.38: tag AU_LINUX_ANDROID_GINGERBREAD.02.03.04.00.142
Signed-off-by: Bryan Huntsman <bryanh@codeaurora.org>
diff --git a/arch/arm/perfmon/per.c b/arch/arm/perfmon/per.c
new file mode 100644
index 0000000..4222844
--- /dev/null
+++ b/arch/arm/perfmon/per.c
@@ -0,0 +1,59 @@
+/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*
+per.c
+
+DESCRIPTION: Performance count interface for linux via proc in the T32
+command file style
+*/
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/sched.h>
+#include <linux/sysrq.h>
+#include <linux/time.h>
+#include "linux/proc_fs.h"
+#include "linux/kernel_stat.h"
+#include "asm/uaccess.h"
+#include "cp15_registers.h"
+#include "perf.h"
+
+#define PM_PER_ERR -1
+/*
+FUNCTION perf_if_proc_init
+
+DESCRIPTION Initialize the proc interface for thje performance data.
+*/
+static __init int per_init(void)
+{
+
+ if (atomic_read(&pm_op_lock) == 1) {
+ printk(KERN_INFO "Can not load KSAPI, monitors are in use\n");
+ return PM_PER_ERR;
+ }
+ atomic_set(&pm_op_lock, 1);
+ per_process_perf_init();
+ printk(KERN_INFO "ksapi init\n");
+ return 0;
+}
+
+static void __exit per_exit(void)
+{
+ per_process_perf_exit();
+ printk(KERN_INFO "ksapi exit\n");
+ atomic_set(&pm_op_lock, 0);
+}
+
+MODULE_LICENSE("GPL v2");
+module_init(per_init);
+module_exit(per_exit);