diff --git a/logd/LogBuffer.cpp b/logd/LogBuffer.cpp
index 7340a36..c5760f7 100644
--- a/logd/LogBuffer.cpp
+++ b/logd/LogBuffer.cpp
@@ -36,7 +36,7 @@
     pthread_mutex_init(&mLogElementsLock, NULL);
 }
 
-void LogBuffer::log(log_id_t log_id, struct timespec realtime,
+void LogBuffer::log(log_id_t log_id, log_time realtime,
                     uid_t uid, pid_t pid, const char *msg,
                     unsigned short len) {
     if ((log_id >= LOG_ID_MAX) || (log_id < 0)) {
@@ -182,8 +182,8 @@
     return LOG_BUFFER_SIZE;
 }
 
-struct timespec LogBuffer::flushTo(
-        SocketClient *reader, const struct timespec start, bool privileged,
+log_time LogBuffer::flushTo(
+        SocketClient *reader, const log_time start, bool privileged,
         bool (*filter)(const LogBufferElement *element, void *arg), void *arg) {
     LogBufferElementCollection::iterator it;
     log_time max = start;
diff --git a/logd/LogBuffer.h b/logd/LogBuffer.h
index 7c69f1b..1b50a8f 100644
--- a/logd/LogBuffer.h
+++ b/logd/LogBuffer.h
@@ -40,12 +40,12 @@
 
     LogBuffer(LastLogTimes *times);
 
-    void log(log_id_t log_id, struct timespec realtime,
+    void log(log_id_t log_id, log_time realtime,
              uid_t uid, pid_t pid, const char *msg, unsigned short len);
-    struct timespec flushTo(SocketClient *writer, const struct timespec start,
-                            bool privileged,
-                            bool (*filter)(const LogBufferElement *element, void *arg) = NULL,
-                            void *arg = NULL);
+    log_time flushTo(SocketClient *writer, const log_time start,
+                     bool privileged,
+                     bool (*filter)(const LogBufferElement *element, void *arg) = NULL,
+                     void *arg = NULL);
 
     void clear(log_id_t id);
     unsigned long getSize(log_id_t id);
diff --git a/logd/LogBufferElement.cpp b/logd/LogBufferElement.cpp
index 1c55623..01cc9de 100644
--- a/logd/LogBufferElement.cpp
+++ b/logd/LogBufferElement.cpp
@@ -24,9 +24,11 @@
 #include "LogBufferElement.h"
 #include "LogReader.h"
 
-const struct timespec LogBufferElement::FLUSH_ERROR = { 0, 0 };
+const log_time LogBufferElement::FLUSH_ERROR(0, 0);
 
-LogBufferElement::LogBufferElement(log_id_t log_id, struct timespec realtime, uid_t uid, pid_t pid, const char *msg, unsigned short len)
+LogBufferElement::LogBufferElement(log_id_t log_id, log_time realtime,
+                                   uid_t uid, pid_t pid, const char *msg,
+                                   unsigned short len)
         : mLogId(log_id)
         , mUid(uid)
         , mPid(pid)
@@ -41,7 +43,7 @@
     delete [] mMsg;
 }
 
-struct timespec LogBufferElement::flushTo(SocketClient *reader) {
+log_time LogBufferElement::flushTo(SocketClient *reader) {
     struct logger_entry_v3 entry;
     memset(&entry, 0, sizeof(struct logger_entry_v3));
     entry.hdr_size = sizeof(struct logger_entry_v3);
diff --git a/logd/LogBufferElement.h b/logd/LogBufferElement.h
index 390c97c..1da09ae 100644
--- a/logd/LogBufferElement.h
+++ b/logd/LogBufferElement.h
@@ -32,7 +32,7 @@
     const log_time mRealTime;
 
 public:
-    LogBufferElement(log_id_t log_id, struct timespec realtime,
+    LogBufferElement(log_id_t log_id, log_time realtime,
                      uid_t uid, pid_t pid, const char *msg, unsigned short len);
     virtual ~LogBufferElement();
 
@@ -43,8 +43,8 @@
     log_time getMonotonicTime(void) const { return mMonotonicTime; }
     log_time getRealTime(void) const { return mRealTime; }
 
-    static const struct timespec FLUSH_ERROR;
-    struct timespec flushTo(SocketClient *writer);
+    static const log_time FLUSH_ERROR;
+    log_time flushTo(SocketClient *writer);
 };
 
 #endif
