Description:[feature] support customized hilog ring buffer size
Change-Id: I5d23deaada5939bbb6fb57505f72c2348bd6afe9 Signed-off-by: shenchenkai <shenchenkai@huawei.com>
This commit is contained in:
parent
52c12f7c9d
commit
0e48a0dd12
|
@ -101,4 +101,7 @@ source "kernel/extended/hidumper/Kconfig"
|
||||||
source "kernel/extended/perf/Kconfig"
|
source "kernel/extended/perf/Kconfig"
|
||||||
|
|
||||||
######################### config options of lms #########################
|
######################### config options of lms #########################
|
||||||
source "kernel/extended/lms/Kconfig"
|
source "kernel/extended/lms/Kconfig"
|
||||||
|
|
||||||
|
######################### config options of hilog #########################
|
||||||
|
source "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
|
|
@ -41,7 +41,7 @@
|
||||||
#include "los_vm_lock.h"
|
#include "los_vm_lock.h"
|
||||||
#include "user_copy.h"
|
#include "user_copy.h"
|
||||||
|
|
||||||
#define HILOG_BUFFER 4096
|
#define HILOG_BUFFER LOSCFG_HILOG_BUFFER_SIZE
|
||||||
#define DRIVER_MODE 0666
|
#define DRIVER_MODE 0666
|
||||||
#define HILOG_DRIVER "/dev/hilog"
|
#define HILOG_DRIVER "/dev/hilog"
|
||||||
|
|
||||||
|
@ -255,6 +255,7 @@ static void HiLogCoverOldLog(size_t bufLen)
|
||||||
int retval;
|
int retval;
|
||||||
struct HiLogEntry header;
|
struct HiLogEntry header;
|
||||||
size_t totalSize = bufLen + sizeof(struct HiLogEntry);
|
size_t totalSize = bufLen + sizeof(struct HiLogEntry);
|
||||||
|
int dropLogLines = 0;
|
||||||
|
|
||||||
while (totalSize + g_hiLogDev.size > HILOG_BUFFER) {
|
while (totalSize + g_hiLogDev.size > HILOG_BUFFER) {
|
||||||
retval = HiLogReadRingBuffer((unsigned char *)&header, sizeof(header));
|
retval = HiLogReadRingBuffer((unsigned char *)&header, sizeof(header));
|
||||||
|
@ -262,9 +263,13 @@ static void HiLogCoverOldLog(size_t bufLen)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dropLogLines++;
|
||||||
HiLogBufferDec(sizeof(header));
|
HiLogBufferDec(sizeof(header));
|
||||||
HiLogBufferDec(header.len);
|
HiLogBufferDec(header.len);
|
||||||
}
|
}
|
||||||
|
if (dropLogLines > 0) {
|
||||||
|
dprintf("hilog ringbuffer full, drop %d line(s) log", dropLogLines);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int HiLogWriteInternal(const char *buffer, size_t bufLen)
|
int HiLogWriteInternal(const char *buffer, size_t bufLen)
|
||||||
|
|
Loading…
Reference in New Issue