can call sched_add_entries many times before schedule
parent
60b1f50c1f
commit
e7b2874e2a
1
HISTORY
1
HISTORY
|
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
Version 1.12 2014-12-05
|
Version 1.12 2014-12-05
|
||||||
* bug fixed: must check the return value of vsnprintf
|
* bug fixed: must check the return value of vsnprintf
|
||||||
|
* can call sched_add_entries many times before schedule
|
||||||
|
|
||||||
Version 1.11 2014-11-20
|
Version 1.11 2014-11-20
|
||||||
* remove usleep call in logger.c
|
* remove usleep call in logger.c
|
||||||
|
|
|
||||||
12
src/logger.c
12
src/logger.c
|
|
@ -800,9 +800,9 @@ void log_it_ex(LogContext *pContext, const int priority, const char *format, ...
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
len = vsnprintf(text, sizeof(text), format, ap);
|
len = vsnprintf(text, sizeof(text), format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
if (len > sizeof(text))
|
if (len >= sizeof(text))
|
||||||
{
|
{
|
||||||
len = sizeof(text);
|
len = sizeof(text) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(priority)
|
switch(priority)
|
||||||
|
|
@ -863,9 +863,9 @@ void log_it_ex(LogContext *pContext, const int priority, const char *format, ...
|
||||||
va_start(ap, format); \
|
va_start(ap, format); \
|
||||||
len = vsnprintf(text, sizeof(text), format, ap); \
|
len = vsnprintf(text, sizeof(text), format, ap); \
|
||||||
va_end(ap); \
|
va_end(ap); \
|
||||||
if (len > sizeof(text)) \
|
if (len >= sizeof(text)) \
|
||||||
{ \
|
{ \
|
||||||
len = sizeof(text); \
|
len = sizeof(text) - 1; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
|
|
@ -922,9 +922,9 @@ void logAccess(LogContext *pContext, struct timeval *tvStart, \
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
len = vsnprintf(text, sizeof(text), format, ap);
|
len = vsnprintf(text, sizeof(text), format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
if (len > sizeof(text))
|
if (len >= sizeof(text))
|
||||||
{
|
{
|
||||||
len = sizeof(text);
|
len = sizeof(text) - 1;
|
||||||
}
|
}
|
||||||
doLogEx(pContext, tvStart, NULL, text, len, false, true);
|
doLogEx(pContext, tvStart, NULL, text, len, false, true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -408,6 +408,44 @@ static int sched_dup_array(const ScheduleArray *pSrcArray, \
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int sched_append_array(const ScheduleArray *pSrcArray, \
|
||||||
|
ScheduleArray *pDestArray)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
int bytes;
|
||||||
|
ScheduleEntry *new_entries;
|
||||||
|
|
||||||
|
if (pSrcArray->count == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bytes = sizeof(ScheduleEntry) * (pDestArray->count + pSrcArray->count);
|
||||||
|
new_entries = (ScheduleEntry *)malloc(bytes);
|
||||||
|
if (new_entries == NULL)
|
||||||
|
{
|
||||||
|
result = errno != 0 ? errno : ENOMEM;
|
||||||
|
logError("file: "__FILE__", line: %d, " \
|
||||||
|
"malloc %d bytes failed, " \
|
||||||
|
"errno: %d, error info: %s", \
|
||||||
|
__LINE__, bytes, result, STRERROR(result));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pDestArray->entries != NULL)
|
||||||
|
{
|
||||||
|
memcpy(new_entries, pDestArray->entries,
|
||||||
|
sizeof(ScheduleEntry) * pDestArray->count);
|
||||||
|
free(pDestArray->entries);
|
||||||
|
}
|
||||||
|
memcpy(new_entries + pDestArray->count, pSrcArray->entries,
|
||||||
|
sizeof(ScheduleEntry) * pSrcArray->count);
|
||||||
|
|
||||||
|
pDestArray->entries = new_entries;
|
||||||
|
pDestArray->count += pSrcArray->count;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int sched_add_entries(const ScheduleArray *pScheduleArray)
|
int sched_add_entries(const ScheduleArray *pScheduleArray)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
@ -419,14 +457,21 @@ int sched_add_entries(const ScheduleArray *pScheduleArray)
|
||||||
return ENOENT;
|
return ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (waiting_schedule_array.entries != NULL)
|
if (waiting_schedule_array.entries != NULL)
|
||||||
{
|
{
|
||||||
logDebug("file: "__FILE__", line: %d, " \
|
if (g_schedule_flag)
|
||||||
"waiting for schedule array ready ...", __LINE__);
|
{
|
||||||
sleep(1);
|
while (waiting_schedule_array.entries != NULL)
|
||||||
}
|
{
|
||||||
|
logDebug("file: "__FILE__", line: %d, " \
|
||||||
|
"waiting for schedule array ready ...", __LINE__);
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((result=sched_dup_array(pScheduleArray, &waiting_schedule_array))!=0)
|
if ((result=sched_append_array(pScheduleArray,
|
||||||
|
&waiting_schedule_array)) != 0)
|
||||||
{
|
{
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue