drivers: add stub kperfmon

This commit is contained in:
Gabriel2392 2023-10-19 10:51:24 -03:00
parent fdef7b54c3
commit f90e79c77b
5 changed files with 118 additions and 0 deletions

View file

@ -260,6 +260,7 @@ source "drivers/sti/common/Kconfig" # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
source "drivers/input/input_boost/Kconfig" # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
source "drivers/battery/core/Kconfig" # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
source "drivers/kq/mesh/Kconfig" # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
source "drivers/kperfmon/Kconfig" # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
source "drivers/vibrator/common/vib_info/Kconfig" # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
source "drivers/input/sec_input/Kconfig" # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
source "drivers/usb/common/vbus_notifier/Kconfig" # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT

View file

@ -216,6 +216,7 @@ obj-y += muic/common/ # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
obj-y += input/input_boost/ # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
obj-y += battery/core/ # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
obj-y += kq/mesh/ # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
obj-y += kperfmon/ # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
obj-y += vibrator/common/vib_info/ # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
obj-y += input/sec_input/ # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT
obj-y += usb/common/vbus_notifier/ # ADDED BY LEGO AUTOMATICALLY: DO NOT SUBMIT

25
drivers/kperfmon/Kconfig Normal file
View file

@ -0,0 +1,25 @@
#
# Samsung Performance Logging system
#
menu "samsung Performace manager"
config KPERFMON
bool "Enable performance log"
default y
help
Samsung performance log(OLOG).
Say Y here if enable performance olog driver to do logging system resources.
When some delay occurs in the kernel, native or user user space,
the logging information should be restored into the system.
config KPERFMON_BUILD
tristate "Building tyoe of performance log"
default m
help
Samsung performance log(OLOG).
This is to set a build type for module or build-in.
Say m here if you want a module of performance olog driver.
Say y here if you want build-in object of the performance olog driver.
endmenu

20
drivers/kperfmon/Makefile Normal file
View file

@ -0,0 +1,20 @@
#
# Makefile for the Linux kernel device drivers.
#
# Sep 2018, Binse Park <h22yap@gmail.com>
# Rewritten to use lists instead of if-statements.
#
FLAG=1
ifneq ($(CONFIG_KPERFMON), y)
FLAG=0
endif
ifeq ($(FLAG), 1)
ifeq ($(CONFIG_KPERFMON_BUILD), y)
obj-y += kperfmon.o
else
obj-m += kperfmon.o
endif
endif

View file

@ -0,0 +1,71 @@
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <asm/uaccess.h>
#define BUFFER_SIZE 1024
#define PROC_NAME "kperfmon"
#define MESSAGE "kperfmon_version [1.0.1] kperfmon_read : 0x39b76d0, kperfmon_write : 0x39b76b8\njava_version [U14.1.0]\nnativelib_version [U14.1.0]\nperfmond_version [U14.3.0]\n[01-01 00:00:00.000 1 1181 0 ( 2)][LOG][LCDV] ON\n"
static ssize_t proc_read(struct file *file, char *buf, size_t count, loff_t *pos);
static int proc_open(struct inode *inode, struct file *file);
static ssize_t proc_write(struct file *file, const char __user *usr_buf, size_t count, loff_t *pos);
static struct proc_ops proc_ops = {
.proc_read = proc_read,
.proc_open = proc_open,
.proc_write = proc_write,
};
static int proc_init(void) {
if (proc_create(PROC_NAME, 0664, NULL, &proc_ops) == NULL) {
pr_info("%s() - Error creating entry in proc failed!!!\n", __func__);
return -ENOMEM;
}
pr_info("%s()\n", __func__);
return 0;
}
static void proc_exit(void) {
remove_proc_entry(PROC_NAME, NULL);
pr_info("%s()\n", __func__);
}
static ssize_t proc_read(struct file *file, char __user *usr_buf, size_t count, loff_t *pos) {
int rv;
char buffer[BUFFER_SIZE];
rv = snprintf(buffer, sizeof(buffer), MESSAGE);
if (rv < 0)
return rv;
if (*pos >= rv)
return 0;
if (count > rv - *pos)
count = rv - *pos;
if (copy_to_user(usr_buf, buffer + *pos, count)) {
return -EFAULT;
}
*pos += count;
return count;
}
static int proc_open(struct inode *inode, struct file *file) {
return 0;
}
static ssize_t proc_write(struct file *file, const char __user *usr_buf, size_t count, loff_t *pos) {
return count;
}
module_init(proc_init);
module_exit(proc_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Binse Park <unsang.park@samsung.com>");
MODULE_DESCRIPTION("Performance Log(OLOG)");