diff --git a/block/genhd.c b/block/genhd.c index a444eebbc484..f6d441df1248 100755 --- a/block/genhd.c +++ b/block/genhd.c @@ -21,7 +21,6 @@ #include #include #include -#include #ifdef CONFIG_BLOCK_SUPPORT_STLOG #include @@ -1286,28 +1285,6 @@ static ssize_t iomon_store(struct device *dev, nread = part_in_flight_read(hd); nwrite = part_in_flight_write(hd); - if(!strcmp(action, "c") || !strcmp(action, "s") || !strcmp(action, "e")) { - ologk("rc %lu rmb %lu " - "wc %lu wmb %lu dc %lu dmb %lu " - "inp %u %u " - "iot %u %llu ", - part_stat_read(hd, ios[READ]), - SEC2MB(part_stat_read(hd, sectors[READ])), - - part_stat_read(hd, ios[WRITE]) - - part_stat_read(hd, discard_ios) - part_stat_read(hd, flush_ios), - SEC2MB(part_stat_read(hd, sectors[WRITE])) - - SEC2MB(part_stat_read(hd, discard_sectors)), - part_stat_read(hd, discard_ios), - SEC2MB(part_stat_read(hd, discard_sectors)), - - nread, - nwrite, - - jiffies_to_msecs(part_stat_read(hd, io_ticks)), - disk->queue->in_flight_time / USEC_PER_MSEC); - } - return count; } diff --git a/drivers/Kconfig b/drivers/Kconfig index 0fa3b2fe8d58..53c2f5dd9b75 100755 --- a/drivers/Kconfig +++ b/drivers/Kconfig @@ -259,5 +259,4 @@ source "drivers/security/samsung/tzic/Kconfig" source "drivers/spu_verify/Kconfig" -source "drivers/kperfmon/Kconfig" endmenu diff --git a/drivers/Makefile b/drivers/Makefile index b902ab21f8db..df3a50f6b2f9 100755 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -220,8 +220,6 @@ obj-$(CONFIG_UH) += uh/ obj-$(CONFIG_FIVE_TEE_DRIVER) += security/samsung/five_tee_driver/ obj-$(CONFIG_ICD) += security/samsung/icdrv/ -obj-y += kperfmon/ - obj-$(CONFIG_SEC_SVDM) += ccic/ #TZIC diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 52d848d950cc..5aa6f91831d5 100755 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -32,7 +32,6 @@ #include #include #include -#include #include @@ -2289,9 +2288,6 @@ static int cpufreq_set_policy(struct cpufreq_policy *policy, trace_cpu_frequency_limits(policy->max, policy->min, policy->cpu); if(policy->cpu < NR_CPUS) { if(/*core_min_max_policy[policy->cpu].min != policy->min ||*/ core_min_max_policy[policy->cpu].max != policy->max) { - if(policy->max < OLOG_CPU_FREQ_FILTER || core_min_max_policy[policy->cpu].max < OLOG_CPU_FREQ_FILTER) { - perflog(PERFLOG_CPUFREQ, "[%d] %lu, %lu", policy->cpu, policy->min / 1000, policy->max / 1000); - } core_min_max_policy[policy->cpu].min = policy->min; core_min_max_policy[policy->cpu].max = policy->max; } diff --git a/drivers/kperfmon/COPYING b/drivers/kperfmon/COPYING deleted file mode 100755 index d159169d1050..000000000000 --- a/drivers/kperfmon/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - 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. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/drivers/kperfmon/Kconfig b/drivers/kperfmon/Kconfig deleted file mode 100755 index 46260da2bbac..000000000000 --- a/drivers/kperfmon/Kconfig +++ /dev/null @@ -1,13 +0,0 @@ -# drivers/kperfmon/Kconfig -# -# Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. -# http://www.samsung.com/ -# -# Licensed under GPLv2 - -config KPERFMON - bool "Enable performance log" - default y - help - Samsung performance log(OLOG). - diff --git a/drivers/kperfmon/Makefile b/drivers/kperfmon/Makefile deleted file mode 100755 index d3492774f728..000000000000 --- a/drivers/kperfmon/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# -# Makefile for the Linux kernel device drivers. -# -# Sep 2018, Binse Park -# Rewritten to use lists instead of if-statements. -# - -FLAG=1 - -#$(info kperfmon_DUMMY="$(shell cp -f $(srctree)/include/linux/olog.pb.h $(srctree)/drivers/kperfmon/)") - -ifneq ($(CONFIG_KPERFMON), y) -FLAG=0 -$(info kperfmon_DUMMY="CONFIG_KPERFMON is off.") -endif - -ifneq ($(shell [ -e $(srctree)/include/linux/olog.pb.h ] && echo exist), exist) -$(info kperfmon_DUMMY="olog.pb.h file is missing... retrying") - -$(info kperfmon_DUMMY="$(shell cp -f $(srctree)/../../frameworks/base/proto/src/olog.proto $(srctree)/drivers/kperfmon/)") -$(info kperfmon_DUMMY="$(shell cp -f $(srctree)/../../vendor/samsung/system/libperflog/aprotoc $(srctree)/drivers/kperfmon/)") -$(info kperfmon_DUMMY="$(shell cp -f $(srctree)/../frameworks/base/proto/src/olog.proto $(srctree)/drivers/kperfmon/)") -$(info kperfmon_DUMMY="$(shell cp -f $(srctree)/../vendor/samsung/system/libperflog/aprotoc $(srctree)/drivers/kperfmon/)") -$(info kperfmon_DUMMY="$(shell chmod 777 $(srctree)/drivers/kperfmon/aprotoc)") -$(info kperfmon_DUMMY="$(shell $(srctree)/drivers/kperfmon/aprotoc --perflog_out=./ $(srctree)/drivers/kperfmon/olog.proto)") -$(info kperfmon_DUMMY="$(shell cp -f $(srctree)/drivers/kperfmon/olog.pb.h $(srctree)/include/linux/)") -#$(info kperfmon_DUMMY="$(shell ls $(srctree)/drivers/kperfmon/*)") -#$(info kperfmon_DUMMY="$(shell ls $(srctree)/include/linux/olog*)") - -ifneq ($(shell [ -e $(srctree)/include/linux/olog.pb.h ] && echo exist), exist) -$(info kperfmon_DUMMY="olog.pb.h file is missing... again") -FLAG=0 -endif -endif - -$(info kperfmon_DUMMY="$(shell cp -f $(srctree)/../../system/core/liblog/include/log/perflog.h $(srctree)/include/linux/)") -$(info kperfmon_DUMMY="$(shell cp -f $(srctree)/../system/core/liblog/include/log/perflog.h $(srctree)/include/linux/)") - -ifneq ($(shell [ -e $(srctree)/include/linux/perflog.h ] && echo exist), exist) -FLAG=0 -$(info kperfmon_DUMMY="perflog.h file is missing.") -endif - -ifeq ($(FLAG), 1) -$(info kperfmon_DUMMY="$(shell cp -f $(srctree)/drivers/kperfmon/ologk.h $(srctree)/include/linux/)") - obj-y += kperfmon.o -else - obj-y += ologk.o -#$(info kperfmon_DUMMY="$(shell cp -f $(srctree)/drivers/kperfmon/ologk.h $(srctree)/include/linux/)") -endif diff --git a/drivers/kperfmon/kperfmon.c b/drivers/kperfmon/kperfmon.c deleted file mode 100755 index 4527d993ea08..000000000000 --- a/drivers/kperfmon/kperfmon.c +++ /dev/null @@ -1,832 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// -// Samsung's performance logging -// -// Copyright (c) 2017 Samsung Electronics Co., Ltd -// http://www.samsung.com -// -// Binse Park - -#define KPERFMON_KERNEL -#include -#undef KPERFMON_KERNEL - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if !defined(KPERFMON_KMALLOC) -#include -#endif -#include -#include -#include -#include - -#include "kperfmon.h" - -#define PROC_NAME "kperfmon" -#if defined(KPERFMON_KMALLOC) -#define BUFFER_SIZE (5 * 1024) -#else -#define BUFFER_SIZE (5 * 1024 * 1024) -#endif - -#define HEADER_SIZE PERFLOG_HEADER_SIZE -#define DEBUGGER_SIZE 32 -#define STREAM_SIZE (PERFLOG_BUFF_STR_MAX_SIZE + PERFLOG_HEADER_SIZE) -#define READ_BUFFER_SIZE (STREAM_SIZE + 100) - -#define MAX_DEPTH_OF_CALLSTACK 20 -#define MAX_MUTEX_RAWDATA 20 - -#define SIGNAL_35 35 -#define SIGNAL_OLOG 5209 - -#if defined(USE_MONITOR) -#define MAX_MUTEX_RAWDATA_DIGIT 2 -#define DIGIT_UNIT 100000000 -#endif - - -struct tRingBuffer buffer = {0, }; -//const struct file_operations; - -struct t_before_print *before_list_cur_pos; -static LIST_HEAD(before_print_list); - -void CreateBuffer(struct tRingBuffer *buffer, - unsigned long length) -{ - if (buffer->data != 0) - return; - -#if defined(KPERFMON_KMALLOC) - buffer->data = kmalloc(length + 1, GFP_KERNEL); -#else - buffer->data = vmalloc(length + 1); -#endif - if (buffer->data == 0) { - pr_info("kperfmon error [%s] buffer->data is null!!!\n", - __func__); - return; - } - - buffer->length = length; - buffer->start = -1; - buffer->end = 0; - buffer->status = FLAG_NOTHING; - buffer->debugger = 0; - - memset(buffer->data, 0, length + 1); - - mutex_init(&buffer->mutex); -} - -void DestroyBuffer(struct tRingBuffer *buffer) -{ - if (buffer->data != 0) { -#if defined(KPERFMON_KMALLOC) - kfree(buffer->data); -#else - vfree(buffer->data); -#endif - buffer->data = 0; - } -} - -void WriteBuffer(struct tRingBuffer *buffer, - byte *data, - unsigned long length) -{ - long RemainSize = 0; - - if (length < 0) - return; - - if (buffer->length < buffer->end + length) { - long FirstSize = buffer->length - buffer->end; - - WriteBuffer(buffer, data, FirstSize); - WriteBuffer(buffer, data + FirstSize, length - FirstSize); - return; - } - - RemainSize = (buffer->start < buffer->end) ? - (buffer->length - buffer->end) : - (buffer->start - buffer->end); - - while (RemainSize < length) { - int bstart = (buffer->start + HEADER_SIZE - 1); - int cur_length = *(buffer->data + bstart % buffer->length); - - buffer->start += HEADER_SIZE + cur_length; - buffer->start %= buffer->length; - - RemainSize = (buffer->start < buffer->end) ? - (buffer->length - buffer->end) : - (buffer->start - buffer->end); - } - - memcpy(buffer->data + buffer->end, data, length); - //copy_from_user(buffer->data + buffer->end, data, length); - - buffer->end += length; - - if (buffer->start < 0) - buffer->start = 0; - - if (buffer->end >= buffer->length) - buffer->end = 0; - - if (buffer->status != FLAG_READING) - buffer->position = buffer->start; -} - -void ReadBuffer(struct tRingBuffer *buffer, - byte *data, - unsigned long *length) -{ - if (buffer->start < buffer->end) { - *length = buffer->end - buffer->start; - memcpy(data, buffer->data + buffer->start, *length); - //copy_to_user(data, (buffer->data + buffer->start), *length); - } else { - *length = buffer->length - buffer->start; - memcpy(data, buffer->data + buffer->start, *length); - memcpy(data + *length, buffer->data, buffer->end); - //copy_to_user(data, (buffer->data + buffer->start), *length); - //copy_to_user(data + *length, (buffer->data), buffer->end); - } -} - -void ReadBufferByPosition(struct tRingBuffer *buffer, - byte *data, - unsigned long *length, - unsigned long start, - unsigned long end) -{ - if (start < end) { - *length = end - start; - memcpy(data, buffer->data + start, *length); - } else { - *length = buffer->length - start; - memcpy(data, buffer->data + start, *length); - memcpy(data + *length, buffer->data, end); - } -} - -void GetNext(struct tRingBuffer *buffer) -{ - int bstart = (buffer->position + HEADER_SIZE - 1); - int cur_length = *(buffer->data + bstart % buffer->length); - - buffer->position += HEADER_SIZE + cur_length; - buffer->position %= buffer->length; -} - -static const struct file_operations kperfmon_fops = { - .read = kperfmon_read, - .write = kperfmon_write, -}; - -void set_kperfmon_debugger_function(char *writebuffer) -{ - buffer.debugger = !buffer.debugger; - - pr_info("%s() - buffer.debugger : %d\n", - __func__, - (int)buffer.debugger); -} - -void process_version_function(char *writebuffer) -{ - struct t_before_print *pprinter = NULL; - int length = 0; - - if (writebuffer == NULL) - return; - - pprinter = kmalloc(sizeof(struct t_before_print), GFP_ATOMIC); - - if (pprinter == NULL) - return; - - length = strlen(writebuffer) + 1; - pprinter->pdata = kmalloc(length, GFP_ATOMIC); - - if (pprinter->pdata == NULL) { - kfree(pprinter); - return; - } - - strlcpy(pprinter->pdata, writebuffer, length); - - list_add_tail(&pprinter->list, &before_print_list); -} - -int ops_write_buffer(struct tRingBuffer *buffer, - byte *writebuffer, unsigned long length) -{ - unsigned long DataLength; - - if (buffer == NULL) - return length; - - if (writebuffer[HEADER_SIZE - 1] > PERFLOG_BUFF_STR_MAX_SIZE) - writebuffer[HEADER_SIZE - 1] = PERFLOG_BUFF_STR_MAX_SIZE; - - DataLength = writebuffer[HEADER_SIZE - 1] + HEADER_SIZE; - - mutex_lock(&buffer->mutex); - WriteBuffer(buffer, writebuffer, DataLength); - mutex_unlock(&buffer->mutex); -#if defined(KPERFMON_DEBUG) - { - int i; - - for (i = 0 ; i < 110 ; i++) { - pr_info("%s(buffer.data[%d] : %c\n", - __func__, - i, - buffer.data[i]); - } - } -#endif - return length; -} - -int ops_process_command(struct tRingBuffer *buffer, - byte *writebuffer, unsigned long length) -{ - int idx; - int max_commands = (int)(sizeof(commands) / sizeof(struct t_command)); - - for (idx = 0 ; idx < max_commands ; idx++) { - int cmd_length = strlen(commands[idx].command); - - if (cmd_length >= HEADER_SIZE + PERFLOG_BUFF_STR_MAX_SIZE) - continue; - - if (!strncmp(writebuffer, commands[idx].command, cmd_length) - && commands[idx].func != NULL - && strlen(writebuffer) > cmd_length) { - commands[idx].func(writebuffer); - return length; - } - } - - return length; -} - -ssize_t kperfmon_write(struct file *filp, - const char __user *data, - size_t length, - loff_t *loff_data) -{ - byte writebuffer[HEADER_SIZE + PERFLOG_BUFF_STR_MAX_SIZE + SH_IDX_PACKET + 1] = {0, }; - unsigned long DataLength = length; - int max_write_ops = (int)(sizeof(write_opts) / sizeof(void *)); - int type_of_data; - - if (!buffer.data) { - pr_info("%s() - Error buffer allocation is failed!!!\n", - __func__); - return length; - } - - if (length <= 0) { - pr_info("%s() - Error length : %d", __func__, length); - return length; - } - - if (DataLength > (HEADER_SIZE + PERFLOG_BUFF_STR_MAX_SIZE + SH_IDX_PACKET)) - DataLength = HEADER_SIZE + PERFLOG_BUFF_STR_MAX_SIZE + SH_IDX_PACKET; - - if (copy_from_user(writebuffer, data, DataLength)) - return length; - - // [[[ This will be replaced with below code - type_of_data = writebuffer[SH_TYPE]; - - if (type_of_data < max_write_ops && type_of_data >= 0) - return write_opts[type_of_data](&buffer, - writebuffer + SH_IDX_PACKET, - DataLength - SH_IDX_PACKET); - // This will be replaced with below code ]]] - - type_of_data -= (int)'0'; - - if (type_of_data < max_write_ops && type_of_data >= 0) - return write_opts[type_of_data](&buffer, - writebuffer + SH_IDX_PACKET, - DataLength - SH_IDX_PACKET); - - return length; -} - -ssize_t kperfmon_read(struct file *filp, - char __user *data, - size_t count, - loff_t *loff_data) -{ - unsigned long length; - byte readbuffer[READ_BUFFER_SIZE] = {0, }; - union _uPLogPacket readlogpacket; - char timestamp[32] = {0, }; - - unsigned long start = 0; - unsigned long end = 0; - - if (!buffer.data) { - pr_info("%s() Error buffer allocation is failed!\n", __func__); - return 0; - } -#if defined(USE_MONITOR) - if (buffer.position == buffer.start) { - char mutex_log[PERFLOG_BUFF_STR_MAX_SIZE + 1] = {0, }; - int i, idx_mutex_log = 0; - - idx_mutex_log += snprintf((mutex_log + idx_mutex_log), - PERFLOG_BUFF_STR_MAX_SIZE - idx_mutex_log, - "mutex test "); - - for (i = 0; - i <= MAX_MUTEX_RAWDATA && - idx_mutex_log < (PERFLOG_BUFF_STR_MAX_SIZE - 20); - i++) { - - int digit, flag = 0; - - mutex_log[idx_mutex_log++] = '['; - idx_mutex_log += snprintf((mutex_log + idx_mutex_log), - PERFLOG_BUFF_STR_MAX_SIZE - idx_mutex_log, - "%d", - i); - mutex_log[idx_mutex_log++] = ']'; - mutex_log[idx_mutex_log++] = ':'; - //idx_mutex_log += snprintf((mutex_log + idx_mutex_log), - // PERFLOG_BUFF_STR_MAX_SIZE - idx_mutex_log, - // "%d", - // mutex_rawdata[i]); - //mutex_rawdata[i][1] = 99999999; - for (digit = (MAX_MUTEX_RAWDATA_DIGIT-1) ; digit >= 0 ; digit--) { - if (flag) { - idx_mutex_log += snprintf((mutex_log + idx_mutex_log), - PERFLOG_BUFF_STR_MAX_SIZE - idx_mutex_log, - "%08u", - mutex_rawdata[i][digit]); - } else { - if (mutex_rawdata[i][digit] > 0) { - idx_mutex_log += snprintf((mutex_log + idx_mutex_log), - PERFLOG_BUFF_STR_MAX_SIZE - idx_mutex_log, - "%u", - mutex_rawdata[i][digit]); - flag = 1; - } - } - } - - if (!flag) - mutex_log[idx_mutex_log++] = '0'; - - mutex_log[idx_mutex_log++] = ' '; - } - - _perflog(PERFLOG_EVT, PERFLOG_MUTEX, mutex_log); - } -#endif - buffer.status = FLAG_READING; - - mutex_lock(&buffer.mutex); - - if (buffer.position == buffer.start) { - - if (before_list_cur_pos != - list_last_entry(&before_print_list, typeof(*before_list_cur_pos), list)) { - before_list_cur_pos = list_next_entry(before_list_cur_pos, list); - - if (before_list_cur_pos != 0 && before_list_cur_pos->pdata != 0) { - int length = snprintf(readbuffer, - READ_BUFFER_SIZE, - "%s\n", - before_list_cur_pos->pdata); - - if (copy_to_user(data, readbuffer, length)) { - pr_info("%s(copy_to_user(4) returned > 0)\n", __func__); - mutex_unlock(&buffer.mutex); - buffer.status = FLAG_NOTHING; - return 0; - } - - mutex_unlock(&buffer.mutex); - return length; - } - } - } - - if (buffer.position == buffer.end || buffer.start < 0) { - buffer.position = buffer.start; - mutex_unlock(&buffer.mutex); - buffer.status = FLAG_NOTHING; - before_list_cur_pos - = list_first_entry(&before_print_list, typeof(*before_list_cur_pos), list); - return 0; - } - - start = buffer.position; - GetNext(&buffer); - end = buffer.position; - - //printk("kperfmon_read(start : %d, end : %d)\n", (int)start, (int)end); - - if (start == end) { - buffer.position = buffer.start; - mutex_unlock(&buffer.mutex); - buffer.status = FLAG_NOTHING; - return 0; - } - - //ReadPacket.raw = &rawpacket; - ReadBufferByPosition(&buffer, readlogpacket.stream, &length, start, end); - mutex_unlock(&buffer.mutex); - //printk(KERN_INFO "kperfmon_read(length : %d)\n", (int)length); - //readlogpacket.stream[length++] = '\n'; - readlogpacket.stream[length] = 0; - -#if NOT_USED - change2localtime(timestamp, readlogpacket.itemes.timestemp_sec); -#else - snprintf(timestamp, 32, "%02d-%02d %02d:%02d:%02d.%03d", - readlogpacket.itemes.timestamp.month, - readlogpacket.itemes.timestamp.day, - readlogpacket.itemes.timestamp.hour, - readlogpacket.itemes.timestamp.minute, - readlogpacket.itemes.timestamp.second, - readlogpacket.itemes.timestamp.msecond); -#endif - - if (readlogpacket.itemes.type >= OlogTestEnum_Type_maxnum - || readlogpacket.itemes.type < 0) { - readlogpacket.itemes.type = PERFLOG_LOG; - } - - if (readlogpacket.itemes.id >= OlogTestEnum_ID_maxnum - || readlogpacket.itemes.id < 0) { - readlogpacket.itemes.id = PERFLOG_UNKNOWN; - } - - length = snprintf(readbuffer, READ_BUFFER_SIZE, - "[%s %d %5d %5d (%3d)][%s][%s] %s\n", - timestamp, - readlogpacket.itemes.type, - readlogpacket.itemes.pid, - readlogpacket.itemes.tid, - readlogpacket.itemes.context_length, - OlogTestEnum_Type_strings[readlogpacket.itemes.type], - OlogTestEnum_ID_strings[readlogpacket.itemes.id], - readlogpacket.itemes.context_buffer); - - - if (length > count) - length = count; - - if (buffer.debugger && count > DEBUGGER_SIZE) { - char debugger[DEBUGGER_SIZE] = "______________________________"; - - snprintf(debugger, DEBUGGER_SIZE, "S:%010lu_E:%010lu_____", start, end); - - if (length + DEBUGGER_SIZE > count) - length = count - DEBUGGER_SIZE; - - if (copy_to_user(data, debugger, strnlen(debugger, DEBUGGER_SIZE))) { - pr_info("%s(copy_to_user(1) returned > 0)\n", __func__); - return 0; - } - - if (copy_to_user(data + DEBUGGER_SIZE, readbuffer, length)) { - pr_info("%s(copy_to_user(2) returned > 0)\n", __func__); - return 0; - } - - length += DEBUGGER_SIZE; - } else { - if (copy_to_user(data, readbuffer, length)) { - pr_info("%s(copy_to_user(3) returned > 0)\n", __func__); - return 0; - } - } - - //printk(KERN_INFO "kperfmon_read(count : %d)\n", count); - - - return length; -} - -static int __init kperfmon_init(void) -{ - struct proc_dir_entry *entry; - - CreateBuffer(&buffer, BUFFER_SIZE); - - if (!buffer.data) { - pr_info("%s() - Error buffer allocation is failed!!!\n", __func__); - return -ENOMEM; - } - - entry = proc_create(PROC_NAME, 0664, NULL, &kperfmon_fops); - - if (!entry) { - pr_info("%s() - Error creating entry in proc failed!!!\n", __func__); - DestroyBuffer(&buffer); - return -EBUSY; - } - - /*dbg_level_is_low = (sec_debug_level() == ANDROID_DEBUG_LEVEL_LOW);*/ - - INIT_LIST_HEAD(&before_print_list); - before_list_cur_pos = - list_first_entry(&before_print_list, typeof(*before_list_cur_pos), list); - process_version_function(" "); - process_version_function("kperfmon_version [1.0]"); - - pr_info("%s()\n", __func__); - - return 0; -} - -static void __exit kperfmon_exit(void) -{ - DestroyBuffer(&buffer); - pr_info("%s()\n", __func__); -} - -#if defined(USE_WORKQUEUE) -static void ologk_workqueue_func(struct work_struct *work) -{ - struct t_ologk_work *workqueue = (struct t_ologk_work *)work; - - if (work) { - mutex_lock(&buffer.mutex); - WriteBuffer(&buffer, - workqueue->writelogpacket.stream, - PERFLOG_HEADER_SIZE + workqueue->writelogpacket.itemes.context_length); - mutex_unlock(&buffer.mutex); - - kfree((void *)work); - } -} -#endif - -//#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0) -//static inline void do_gettimeofday(struct timeval *tv) -//{ -// struct timespec64 now; - -// ktime_get_real_ts64(&now); -// tv->tv_sec = now.tv_sec; -// tv->tv_usec = now.tv_nsec/1000; -//} -//#endif /* LINUX_VER >= 5.0 */ - -void _perflog(int type, int logid, const char *fmt, ...) -{ -#if !defined(USE_WORKQUEUE) - union _uPLogPacket writelogpacket; -#endif - struct rtc_time tm; - struct timeval time; - unsigned long local_time; -#if defined(USE_WORKQUEUE) - struct t_ologk_work *workqueue = 0; -#endif - va_list args; - - va_start(args, fmt); - - if (buffer.data == 0) { - va_end(args); - return; - } - -#if defined(USE_WORKQUEUE) - workqueue = kmalloc(sizeof(struct t_ologk_work), GFP_ATOMIC); - - if (workqueue) { - struct _PLogPacket *pitemes = &workqueue->writelogpacket.itemes; - - INIT_WORK((struct work_struct *)workqueue, ologk_workqueue_func); - - do_gettimeofday(&time); - local_time = (u32)(time.tv_sec - (sys_tz.tz_minuteswest * 60)); - rtc_time_to_tm(local_time, &tm); - - //printk(" @ (%04d-%02d-%02d %02d:%02d:%02d)\n", - // tm.tm_year + 1900, - // tm.tm_mon + 1, - // tm.tm_mday, - // tm.tm_hour, - // tm.tm_min, - // tm.tm_sec); - - pitemes->timestamp.month = tm.tm_mon + 1; - pitemes->timestamp.day = tm.tm_mday; - pitemes->timestamp.hour = tm.tm_hour; - pitemes->timestamp.minute = tm.tm_min; - pitemes->timestamp.second = tm.tm_sec; - pitemes->timestamp.msecond = time.tv_usec / 1000; - pitemes->type = PERFLOG_LOG; - pitemes->id = logid; - pitemes->pid = current->pid;//getpid(); - pitemes->tid = 0;//gettid(); - pitemes->context_length = vscnprintf( - pitemes->context_buffer, - PERFLOG_BUFF_STR_MAX_SIZE, - fmt, - args); - - if (pitemes->context_length > PERFLOG_BUFF_STR_MAX_SIZE) - pitemes->context_length = PERFLOG_BUFF_STR_MAX_SIZE; - - schedule_work((struct work_struct *)workqueue); - - //{ - // struct timeval end_time; - // do_gettimeofday(&end_time); - // printk("ologk() execution time with workqueue : %ld us ( %ld - %ld )\n", - // end_time.tv_usec - time.tv_usec, - // end_time.tv_usec, - // time.tv_usec); - //} - } else { - pr_info("%s : workqueue is not working\n", __func__); - } - -#else - do_gettimeofday(&time); - local_time = (u32)(time.tv_sec - (sys_tz.tz_minuteswest * 60)); - rtc_time_to_tm(local_time, &tm); - - //printk(" @ (%04d-%02d-%02d %02d:%02d:%02d)\n", - // tm.tm_year + 1900, - // tm.tm_mon + 1, - // tm.tm_mday, - // tm.tm_hour, - // tm.tm_min, - // tm.tm_sec); - - writelogpacket.itemes.timestamp.month = tm.tm_mon + 1; - writelogpacket.itemes.timestamp.day = tm.tm_mday; - writelogpacket.itemes.timestamp.hour = tm.tm_hour; - writelogpacket.itemes.timestamp.minute = tm.tm_min; - writelogpacket.itemes.timestamp.second = tm.tm_sec; - writelogpacket.itemes.timestamp.msecond = time.tv_usec / 1000; - writelogpacket.itemes.type = type; - writelogpacket.itemes.pid = current->pid;//getpid(); - writelogpacket.itemes.tid = 0;//gettid(); - writelogpacket.itemes.context_length - = vscnprintf(writelogpacket.itemes.context_buffer, - PERFLOG_BUFF_STR_MAX_SIZE, - fmt, - args); - - if (writelogpacket.itemes.context_length > PERFLOG_BUFF_STR_MAX_SIZE) - writelogpacket.itemes.context_length = PERFLOG_BUFF_STR_MAX_SIZE; - - mutex_lock(&buffer.mutex); - WriteBuffer(&buffer, - writelogpacket.stream, - PERFLOG_HEADER_SIZE + writelogpacket.itemes.context_length); - mutex_unlock(&buffer.mutex); - - //{ - // struct timeval end_time; - // do_gettimeofday(&end_time); - // printk(KERN_INFO "ologk() execution time : %ld us ( %ld - %ld )\n", - // end_time.tv_usec - time.tv_usec, - // end_time.tv_usec, time.tv_usec); - //} -#endif - - va_end(args); -} - -void get_callstack(char *buffer, int max_size, int max_count) -{ - struct stackframe frame; - struct task_struct *tsk = current; - //int len; - - if (!try_get_task_stack(tsk)) - return; - - frame.fp = (unsigned long)__builtin_frame_address(0); - frame.pc = (unsigned long)get_callstack; - -#if defined(CONFIG_FUNCTION_GRAPH_TRACER) - frame.graph = tsk->curr_ret_stack; -#endif - if (max_size > 0) { - int count = 0; - - max_count += 3; - - do { - if (count > 2) { - int len = snprintf(buffer, max_size, " %pS", (void *)frame.pc); - max_size -= len; - buffer += len; - } - count++; - } while (!unwind_frame(tsk, &frame) && - max_size > 0 && - max_count > count); - - put_task_stack(tsk); - } -} - -void send_signal(void) -{ - siginfo_t info; - - info.si_signo = SIGNAL_35; - info.si_errno = SIGNAL_OLOG; - info.si_code = SIGNAL_OLOG; - send_sig_info(SIGNAL_35, &info, current); -} - -void perflog_evt(int logid, int arg1) -{ -#if defined(USE_MONITOR) - struct timeval start_time; - struct timeval end_time; - - int digit = 0; - - do_gettimeofday(&start_time); -#endif - if (arg1 < 0 || buffer.status != FLAG_NOTHING) - return; - - if (arg1 > MAX_MUTEX_RAWDATA) { - char log_buffer[PERFLOG_BUFF_STR_MAX_SIZE]; - int len; - u64 utime, stime; - - task_cputime(current, &utime, &stime); - - if (utime > 0) { - len = snprintf(log_buffer, - PERFLOG_BUFF_STR_MAX_SIZE, - "%d jiffies", - arg1); - // Make some stuck problems to be needed to check - // how many the mutex logging are occurred. - // Refer to P200523-00343, P200523-01815. - /*send_signal();*/ - - get_callstack(log_buffer + len, - PERFLOG_BUFF_STR_MAX_SIZE - len, - /*(dbg_level_is_low ? 1 : 3)*/MAX_DEPTH_OF_CALLSTACK); - _perflog(PERFLOG_EVT, PERFLOG_MUTEX, log_buffer); - arg1 = MAX_MUTEX_RAWDATA; - - //do_gettimeofday(&end_time); - //_perflog(PERFLOG_EVT, - // PERFLOG_MUTEX, - // "[MUTEX] processing time : %d", - // end_time.tv_usec - start_time.tv_usec); - } - } -#if defined(USE_MONITOR) - for (digit = 0 ; digit < MAX_MUTEX_RAWDATA_DIGIT ; digit++) { - mutex_rawdata[arg1][digit]++; - if (mutex_rawdata[arg1][digit] >= DIGIT_UNIT) - mutex_rawdata[arg1][digit] = 0; - else - break; - } -#endif -} - -//EXPORT_SYMBOL(ologk); -EXPORT_SYMBOL(_perflog); -EXPORT_SYMBOL(perflog_evt); - -module_init(kperfmon_init); -module_exit(kperfmon_exit); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Binse Park "); -MODULE_DESCRIPTION("Performance Log(OLOG)"); - diff --git a/drivers/kperfmon/kperfmon.h b/drivers/kperfmon/kperfmon.h deleted file mode 100755 index e8d80cc8d577..000000000000 --- a/drivers/kperfmon/kperfmon.h +++ /dev/null @@ -1,91 +0,0 @@ -#define FLAG_NOTHING 0 -#define FLAG_READING 1 -#define USE_WORKQUEUE 1 -#define NOT_USED 0 - -#define byte unsigned char - -struct tRingBuffer { - byte *data; - long length; - long start; - long end; - long position; - - struct mutex mutex; - long debugger; - bool status; -}; - -#if defined(USE_WORKQUEUE) -struct t_ologk_work { - struct work_struct ologk_work; - union _uPLogPacket writelogpacket; -}; -#endif - -struct t_command { - char *command; - void (*func)(char *writebuffer); -}; - -#if defined(USE_MONITOR) -unsigned long mutex_rawdata[MAX_MUTEX_RAWDATA + 1][MAX_MUTEX_RAWDATA_DIGIT] = {{0, },}; -#endif - -int ops_write_buffer(struct tRingBuffer *buffer, - byte *data, unsigned long length); -int ops_process_command(struct tRingBuffer *buffer, - byte *data, unsigned long length); - -enum { - SH_TYPE_PACKET, - SH_TYPE_COMMAND, -}; - -enum { - SH_TYPE, - SH_IDX_PACKET -}; - -int (*write_opts[])(struct tRingBuffer *buffer, - byte *data, unsigned long length) - = { - ops_write_buffer, - ops_process_command, - }; - -void set_kperfmon_debugger_function(char *writebuffer); -void process_version_function(char *writebuffer); - -struct t_command commands[] = { - {"kperfmon_debugger", set_kperfmon_debugger_function}, - {"java_version", process_version_function}, - {"nativelib_version", process_version_function}, - {"perfmond_version", process_version_function}, -}; - -struct t_before_print { - void *pdata; - int (*func)(char *read_buffer); - struct list_head list; -}; - -void CreateBuffer(struct tRingBuffer *buffer, - unsigned long length); -void DestroyBuffer(struct tRingBuffer *buffer); -void WriteBuffer(struct tRingBuffer *buffer, - byte *data, unsigned long length); -void GetNext(struct tRingBuffer *buffer); -void ReadBuffer(struct tRingBuffer *buffer, - byte *data, - unsigned long *length); -ssize_t kperfmon_write(struct file *filp, - const char __user *data, - size_t length, - loff_t *loff_data); -ssize_t kperfmon_read(struct file *filp, - char __user *data, - size_t count, - loff_t *loff_data); - diff --git a/drivers/kperfmon/ologk.c b/drivers/kperfmon/ologk.c deleted file mode 100755 index b5594e244707..000000000000 --- a/drivers/kperfmon/ologk.c +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include -#include -/* -void _perflog(int type, int logid, const char *fmt, ...) { -} - -void perflog_evt(int logid, int arg1) { -} -*/ diff --git a/drivers/kperfmon/ologk.h b/drivers/kperfmon/ologk.h deleted file mode 100755 index 0af51d89eb10..000000000000 --- a/drivers/kperfmon/ologk.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _OLOG_KERNEL_H_ -#define _OLOG_KERNEL_H_ - -#include -#include "olog.pb.h" - -#define OLOG_CPU_FREQ_FILTER 1500000 -#define PERFLOG_MUTEX_THRESHOLD 20 - -#define ologk(...) _perflog(PERFLOG_LOG, PERFLOG_UNKNOWN, __VA_ARGS__) -#define perflog(...) _perflog(PERFLOG_LOG, __VA_ARGS__) -extern void _perflog(int type, int logid, const char *fmt, ...); -extern void perflog_evt(int logid, int arg1); - -#endif