mirror of
https://github.com/topjohnwu/ndk-busybox.git
synced 2024-11-24 20:29:55 +00:00
Patch from Fillod Stephane:
You will find in the attached file "syslog.patch" a patch which adds config options to set at compile time the size of the circular buffer, and some documentation update.
This commit is contained in:
parent
3752d337b3
commit
d4a5e255c4
@ -1976,6 +1976,38 @@
|
|||||||
</para>
|
</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="logread">
|
||||||
|
<title>logread</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Usage: logread [OPTION]...
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Shows the messages from syslogd (using circular buffer).
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Options:
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
<screen>
|
||||||
|
-f Output data as the log grows.
|
||||||
|
</screen>
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Example:
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
<screen>
|
||||||
|
$ logread
|
||||||
|
</screen>
|
||||||
|
</para>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
<sect1 id="ls">
|
<sect1 id="ls">
|
||||||
<title>ls</title>
|
<title>ls</title>
|
||||||
|
|
||||||
@ -3110,7 +3142,7 @@
|
|||||||
-O FILE Use an alternate log file (default=/var/log/messages)
|
-O FILE Use an alternate log file (default=/var/log/messages)
|
||||||
-R HOST[:PORT] Log remotely to IP or hostname on PORT (default PORT=514/UDP)
|
-R HOST[:PORT] Log remotely to IP or hostname on PORT (default PORT=514/UDP)
|
||||||
-L Log locally as well as network logging (default is network only)
|
-L Log locally as well as network logging (default is network only)
|
||||||
-C Log to a circular buffer. Read this buffer using 'logread'
|
-C [size(KiB)] Log to a circular buffer. Read this buffer using 'logread'
|
||||||
</screen>
|
</screen>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -1458,10 +1458,12 @@
|
|||||||
"root\n"
|
"root\n"
|
||||||
|
|
||||||
#define logread_trivial_usage \
|
#define logread_trivial_usage \
|
||||||
""
|
"[OPTION]..."
|
||||||
|
|
||||||
#define logread_full_usage \
|
#define logread_full_usage \
|
||||||
"Shows the messages from syslogd (using circular buffer)."
|
"Shows the messages from syslogd (using circular buffer).\n\n"
|
||||||
|
"Options:\n" \
|
||||||
|
"\t-f\t\toutput data as the log grows"
|
||||||
|
|
||||||
#define losetup_trivial_usage \
|
#define losetup_trivial_usage \
|
||||||
"[OPTION]... LOOPDEVICE FILE\n" \
|
"[OPTION]... LOOPDEVICE FILE\n" \
|
||||||
@ -2280,7 +2282,7 @@
|
|||||||
"\n\t-R HOST[:PORT]\tLog to IP or hostname on PORT (default PORT=514/UDP)\n" \
|
"\n\t-R HOST[:PORT]\tLog to IP or hostname on PORT (default PORT=514/UDP)\n" \
|
||||||
"\t-L\t\tLog locally and via network logging (default is network only)") \
|
"\t-L\t\tLog locally and via network logging (default is network only)") \
|
||||||
USAGE_IPC_LOG( \
|
USAGE_IPC_LOG( \
|
||||||
"\n\t-C\t\tLog to a circular buffer (read the buffer using logread)")
|
"\n\t-C [size(KiB)]\tLog to a circular buffer (read the buffer using logread)")
|
||||||
#define syslogd_example_usage \
|
#define syslogd_example_usage \
|
||||||
"$ syslogd -R masterlog:514\n" \
|
"$ syslogd -R masterlog:514\n" \
|
||||||
"$ syslogd -R 192.168.1.1:601\n"
|
"$ syslogd -R 192.168.1.1:601\n"
|
||||||
|
@ -56,6 +56,14 @@ config CONFIG_FEATURE_IPC_SYSLOG
|
|||||||
entire filesystem, which may cause your system to
|
entire filesystem, which may cause your system to
|
||||||
break badly.
|
break badly.
|
||||||
|
|
||||||
|
config CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE
|
||||||
|
int " Circular buffer size in Kbytes (minimum 4KB)"
|
||||||
|
default 16
|
||||||
|
depends on CONFIG_FEATURE_IPC_SYSLOG
|
||||||
|
help
|
||||||
|
This option sets the size of the circular buffer
|
||||||
|
used to record system log messages.
|
||||||
|
|
||||||
config CONFIG_LOGREAD
|
config CONFIG_LOGREAD
|
||||||
bool " logread"
|
bool " logread"
|
||||||
default y
|
default y
|
||||||
@ -66,6 +74,17 @@ config CONFIG_LOGREAD
|
|||||||
utility will allow you to read the messages that are
|
utility will allow you to read the messages that are
|
||||||
stored in the syslogd circular buffer.
|
stored in the syslogd circular buffer.
|
||||||
|
|
||||||
|
config CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
|
||||||
|
bool " logread double buffering"
|
||||||
|
default n
|
||||||
|
depends on CONFIG_LOGREAD
|
||||||
|
help
|
||||||
|
'logread' ouput to slow serial terminals can have
|
||||||
|
side effects on syslog because of the semaphore.
|
||||||
|
This option make logread to double buffer copy
|
||||||
|
from circular buffer, minimizing semaphore
|
||||||
|
contention at some minor memory expense.
|
||||||
|
|
||||||
config CONFIG_KLOGD
|
config CONFIG_KLOGD
|
||||||
bool "klogd"
|
bool "klogd"
|
||||||
default n
|
default n
|
||||||
|
@ -108,8 +108,7 @@ extern int logread_main(int argc, char **argv)
|
|||||||
i = follow ? buf->tail : buf->head;
|
i = follow ? buf->tail : buf->head;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
#undef RC_LOGREAD
|
#ifdef CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
|
||||||
#ifdef RC_LOGREAD
|
|
||||||
char *buf_data;
|
char *buf_data;
|
||||||
int log_len,j;
|
int log_len,j;
|
||||||
#endif
|
#endif
|
||||||
@ -128,7 +127,7 @@ extern int logread_main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Read Memory
|
// Read Memory
|
||||||
#ifdef RC_LOGREAD
|
#ifdef CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
|
||||||
log_len = buf->tail - i;
|
log_len = buf->tail - i;
|
||||||
if (log_len < 0)
|
if (log_len < 0)
|
||||||
log_len += buf->size;
|
log_len += buf->size;
|
||||||
@ -155,7 +154,7 @@ extern int logread_main(int argc, char **argv)
|
|||||||
// release the lock on the log chain
|
// release the lock on the log chain
|
||||||
sem_up(log_semid);
|
sem_up(log_semid);
|
||||||
|
|
||||||
#ifdef RC_LOGREAD
|
#ifdef CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
|
||||||
for (j=0; j < log_len; j+=strlen(buf_data+j)+1) {
|
for (j=0; j < log_len; j+=strlen(buf_data+j)+1) {
|
||||||
printf("%s", buf_data+j);
|
printf("%s", buf_data+j);
|
||||||
if (follow)
|
if (follow)
|
||||||
|
@ -94,6 +94,12 @@ static int local_logging = FALSE;
|
|||||||
|
|
||||||
/* circular buffer variables/structures */
|
/* circular buffer variables/structures */
|
||||||
#ifdef CONFIG_FEATURE_IPC_SYSLOG
|
#ifdef CONFIG_FEATURE_IPC_SYSLOG
|
||||||
|
|
||||||
|
#if CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE < 4
|
||||||
|
#error Sorry, you must set the syslogd buffer size to at least 4KB.
|
||||||
|
#error Please check CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <sys/ipc.h>
|
#include <sys/ipc.h>
|
||||||
#include <sys/sem.h>
|
#include <sys/sem.h>
|
||||||
#include <sys/shm.h>
|
#include <sys/shm.h>
|
||||||
@ -114,7 +120,7 @@ static struct sembuf SMwdn[3] = { {0, 0}, {1, 0}, {1, +1} }; // set SMwdn
|
|||||||
|
|
||||||
static int shmid = -1; // ipc shared memory id
|
static int shmid = -1; // ipc shared memory id
|
||||||
static int s_semid = -1; // ipc semaphore id
|
static int s_semid = -1; // ipc semaphore id
|
||||||
static int data_size = 16000; // default data size
|
static int shm_size = ((CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE)*1024); // default shm size
|
||||||
static int circular_logging = FALSE;
|
static int circular_logging = FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -156,7 +162,7 @@ void ipcsyslog_cleanup(void)
|
|||||||
void ipcsyslog_init(void)
|
void ipcsyslog_init(void)
|
||||||
{
|
{
|
||||||
if (buf == NULL) {
|
if (buf == NULL) {
|
||||||
if ((shmid = shmget(KEY_ID, data_size, IPC_CREAT | 1023)) == -1) {
|
if ((shmid = shmget(KEY_ID, shm_size, IPC_CREAT | 1023)) == -1) {
|
||||||
bb_perror_msg_and_die("shmget");
|
bb_perror_msg_and_die("shmget");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,7 +170,7 @@ void ipcsyslog_init(void)
|
|||||||
bb_perror_msg_and_die("shmat");
|
bb_perror_msg_and_die("shmat");
|
||||||
}
|
}
|
||||||
|
|
||||||
buf->size = data_size - sizeof(*buf);
|
buf->size = shm_size - sizeof(*buf);
|
||||||
buf->head = buf->tail = 0;
|
buf->head = buf->tail = 0;
|
||||||
|
|
||||||
// we'll trust the OS to set initial semval to 0 (let's hope)
|
// we'll trust the OS to set initial semval to 0 (let's hope)
|
||||||
@ -654,7 +660,7 @@ extern int syslogd_main(int argc, char **argv)
|
|||||||
if (optarg) {
|
if (optarg) {
|
||||||
int buf_size = atoi(optarg);
|
int buf_size = atoi(optarg);
|
||||||
if (buf_size >= 4) {
|
if (buf_size >= 4) {
|
||||||
data_size = buf_size;
|
shm_size = buf_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
circular_logging = TRUE;
|
circular_logging = TRUE;
|
||||||
|
Loading…
Reference in New Issue
Block a user