diff --git a/kernel/extended/Kconfig b/kernel/extended/Kconfig index 0ae789b61975d5d4558b4e918940dbd1f5194782..abb7bec3f20030c255fbd6b1f695dc36dc918276 100644 --- a/kernel/extended/Kconfig +++ b/kernel/extended/Kconfig @@ -101,4 +101,7 @@ source "kernel/extended/hidumper/Kconfig" source "kernel/extended/perf/Kconfig" ######################### config options of lms ######################### -source "kernel/extended/lms/Kconfig" \ No newline at end of file +source "kernel/extended/lms/Kconfig" + +######################### config options of hilog ######################### +source "kernel/extended/hilog/Kconfig" \ No newline at end of file diff --git a/kernel/extended/hilog/Kconfig b/kernel/extended/hilog/Kconfig new file mode 100644 index 0000000000000000000000000000000000000000..28e994938e8c921d6afd24c3fa2f09a211b097eb --- /dev/null +++ b/kernel/extended/hilog/Kconfig @@ -0,0 +1,15 @@ +config HILOG + tristate "Hilog support" + default y + help + hilog buffer manager. + + Hilog is a simple log manager for OpenHarmonyOS. + log string write to /dev/hilog, and the hilog driver copy it + to the ring buffer. Ring buffer can be read from userspace. + +config HILOG_BUFFER_SIZE + int "hilog buffer size" + default 4096 + help + Define the default ring buffer size of hilog \ No newline at end of file diff --git a/kernel/extended/hilog/los_hilog.c b/kernel/extended/hilog/los_hilog.c index 2c8853be5b01f641de030d24794fb0ae46dfeffc..9fe43ec63b958c13b8df5f6a1f3f5c336cd60794 100644 --- a/kernel/extended/hilog/los_hilog.c +++ b/kernel/extended/hilog/los_hilog.c @@ -41,7 +41,7 @@ #include "los_vm_lock.h" #include "user_copy.h" -#define HILOG_BUFFER 4096 +#define HILOG_BUFFER LOSCFG_HILOG_BUFFER_SIZE #define DRIVER_MODE 0666 #define HILOG_DRIVER "/dev/hilog" @@ -255,6 +255,7 @@ static void HiLogCoverOldLog(size_t bufLen) int retval; struct HiLogEntry header; size_t totalSize = bufLen + sizeof(struct HiLogEntry); + int dropLogLines = 0; while (totalSize + g_hiLogDev.size > HILOG_BUFFER) { retval = HiLogReadRingBuffer((unsigned char *)&header, sizeof(header)); @@ -262,9 +263,13 @@ static void HiLogCoverOldLog(size_t bufLen) break; } + dropLogLines++; HiLogBufferDec(sizeof(header)); HiLogBufferDec(header.len); } + if (dropLogLines > 0) { + dprintf("hilog ringbuffer full, drop %d line(s) log", dropLogLines); + } } int HiLogWriteInternal(const char *buffer, size_t bufLen)