* Added a new kernel setting "syslog_buffer_size" to change the size of the

internal syslog ring buffer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28280 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2008-10-22 10:41:31 +00:00
parent 8d805b68a5
commit 18ad0f1b8a
2 changed files with 27 additions and 5 deletions
+21 -3
View File
@@ -71,7 +71,7 @@ static bool sSyslogDropped = false;
static const char* sCurrentKernelDebuggerMessage;
#define SYSLOG_BUFFER_SIZE 65536
#define DEFAULT_SYSLOG_BUFFER_SIZE 65536
#define OUTPUT_BUFFER_SIZE 1024
static char sOutputBuffer[OUTPUT_BUFFER_SIZE];
static char sLastOutputBuffer[OUTPUT_BUFFER_SIZE];
@@ -1021,7 +1021,7 @@ syslog_init_post_threads(void)
static status_t
syslog_init(struct kernel_args *args)
syslog_init(struct kernel_args* args)
{
status_t status;
int32 length = 0;
@@ -1035,7 +1035,25 @@ syslog_init(struct kernel_args *args)
goto err1;
}
sSyslogBuffer = create_ring_buffer(SYSLOG_BUFFER_SIZE);
{
size_t bufferSize = DEFAULT_SYSLOG_BUFFER_SIZE;
void* handle = load_driver_settings("kernel");
if (handle != NULL) {
const char* sizeString = get_driver_parameter(handle,
"syslog_buffer_size", NULL, NULL);
if (sizeString != NULL) {
bufferSize = strtoul(sizeString, NULL, 0);
if (bufferSize > 262144)
bufferSize = 262144;
else if (bufferSize < SYSLOG_MESSAGE_BUFFER_SIZE)
bufferSize = SYSLOG_MESSAGE_BUFFER_SIZE;
}
unload_driver_settings(handle);
}
sSyslogBuffer = create_ring_buffer(bufferSize);
}
if (sSyslogBuffer == NULL) {
status = B_NO_MEMORY;
goto err2;