summaryrefslogtreecommitdiff
path: root/src/critical_log.c
diff options
context:
space:
mode:
authorSung-jae Park <nicesj.park@samsung.com>2013-06-13 09:57:24 +0900
committerSung-jae Park <nicesj.park@samsung.com>2013-06-13 10:18:10 +0900
commit2af8a6ac30d93ddbc70bbf8c0be3cc3c39a3aa61 (patch)
treebff4c35b31c613dac6c268616909618411a8d057 /src/critical_log.c
parentc72cf644cec027b9fa656d4f69d39369dc16a3b2 (diff)
downloaddata-provider-master-2af8a6ac30d93ddbc70bbf8c0be3cc3c39a3aa61.tar.gz
data-provider-master-2af8a6ac30d93ddbc70bbf8c0be3cc3c39a3aa61.tar.bz2
data-provider-master-2af8a6ac30d93ddbc70bbf8c0be3cc3c39a3aa61.zip
Update SMACK, Fix a crash of terminating sequence, etc, ...
[model] Tizen [binary_type] AP [customer] Tizen Developer [issue#] N/A [problem] SMACK label is separated, Crash of terminating sequence [cause] Terminating sequence is not valid when the edje plugin is loaded. SMACK should be separated by each service module. [solution] Update SMACK label. Fix the crash of terminating sequence [team] HomeTF [request] [horizontal_expansion] Change-Id: I8aa7c4773a6548685e63bd3e822d83cbbb01db98
Diffstat (limited to 'src/critical_log.c')
-rw-r--r--src/critical_log.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/critical_log.c b/src/critical_log.c
index 7469013..75a9796 100644
--- a/src/critical_log.c
+++ b/src/critical_log.c
@@ -23,6 +23,7 @@
#include <libgen.h>
#include <sys/types.h>
#include <unistd.h>
+#include <pthread.h>
#include <dlog.h>
#include <Eina.h>
@@ -38,11 +39,13 @@ static struct {
int file_id;
int nr_of_lines;
char *filename;
+ pthread_mutex_t cri_lock;
} s_info = {
.fp = NULL,
.file_id = 0,
.nr_of_lines = 0,
.filename = NULL,
+ .cri_lock = PTHREAD_MUTEX_INITIALIZER,
};
@@ -62,8 +65,10 @@ static inline void rotate_log(void)
if (filename) {
snprintf(filename, namelen, "%s/%d_%s.%d", SLAVE_LOG_PATH, s_info.file_id, s_info.filename, getpid());
- if (s_info.fp)
- fclose(s_info.fp);
+ if (s_info.fp) {
+ if (fclose(s_info.fp) != 0)
+ ErrPrint("fclose: %s\n", strerror(errno));
+ }
s_info.fp = fopen(filename, "w+");
if (!s_info.fp)
@@ -81,10 +86,15 @@ HAPI int critical_log(const char *func, int line, const char *fmt, ...)
{
va_list ap;
int ret;
+ int status;
if (!s_info.fp)
return LB_STATUS_ERROR_IO;
+ status = pthread_mutex_lock(&s_info.cri_lock);
+ if (status != 0)
+ ErrPrint("lock: %s\n", strerror(status));
+
fprintf(s_info.fp, "%lf [%s:%d] ", util_timestamp(), util_basename((char *)func), line);
va_start(ap, fmt);
@@ -95,6 +105,11 @@ HAPI int critical_log(const char *func, int line, const char *fmt, ...)
s_info.nr_of_lines++;
rotate_log();
+
+ status = pthread_mutex_unlock(&s_info.cri_lock);
+ if (status != 0)
+ ErrPrint("unlock: %s\n", strerror(status));
+
return ret;
}
@@ -149,7 +164,8 @@ HAPI void critical_log_fini(void)
}
if (s_info.fp) {
- fclose(s_info.fp);
+ if (fclose(s_info.fp) != 0)
+ ErrPrint("fclose: %s\n", strerror(errno));
s_info.fp = NULL;
}
}