tizen 2.3.1 release
[framework/appfw/alarm-manager.git] / alarm-manager-timer.c
index b7a7531..01f4fe1 100755 (executable)
 
 #define _BSD_SOURCE            /*gmtime_r requires */
 
-#include<stdio.h>
-#include<stdlib.h>
-#include<time.h>
-#include<signal.h>
-#include<string.h>
-#include<sys/types.h>
-#include<errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <signal.h>
+#include <string.h>
+#include <sys/types.h>
+#include <errno.h>
+#include <sys/timerfd.h>
 
-#include<dbus/dbus.h>
-#include<glib.h>
+#include <glib.h>
 
-#include"alarm.h"
-#include"alarm-internal.h"
+#include "alarm.h"
+#include "alarm-internal.h"
 
 extern bool g_dummy_timer_is_set;
 
@@ -49,26 +49,6 @@ bool _alarm_destory_timer(timer_t timer)
                return false;
 }
 
-timer_t _alarm_create_timer()
-{
-       timer_t timer = (timer_t) -1;
-       struct sigevent timer_event;
-
-       ALARM_MGR_LOG_PRINT("[alarm-server][timer]\n");
-
-       timer_event.sigev_notify = SIGEV_SIGNAL;
-       timer_event.sigev_signo = SIG_TIMER;
-       timer_event.sigev_value.sival_ptr = (void *)timer;
-
-       if (timer_create(CLOCK_REALTIME, &timer_event, &timer) < 0) {
-               perror("create timer has failed\n");
-               exit(1);
-       }
-
-       return timer;
-
-}
-
 bool _alarm_disable_timer(__alarm_server_context_t alarm_context)
 {
        struct itimerspec time_spec;
@@ -77,7 +57,7 @@ bool _alarm_disable_timer(__alarm_server_context_t alarm_context)
        time_spec.it_value.tv_nsec = 0;
        time_spec.it_interval.tv_sec = time_spec.it_interval.tv_nsec = 0;
 
-       if (timer_settime(alarm_context.timer, 0, &time_spec, NULL) < 0) {
+       if (timerfd_settime(alarm_context.timer, 0, &time_spec, NULL) < 0) {
                perror("disable timer has failed\n");
                return false;
        }
@@ -85,23 +65,19 @@ bool _alarm_disable_timer(__alarm_server_context_t alarm_context)
        return true;
 }
 
-bool _alarm_set_timer(__alarm_server_context_t *alarm_context, timer_t timer,
-                     time_t due_time, alarm_id_t id)
+bool _alarm_set_timer(__alarm_server_context_t *alarm_context, int timer, time_t due_time)
 {
        struct itimerspec time_spec;
        time_t current_time;
        double interval;
        char due_time_r[100] = { 0 };
        struct tm ts_ret;
-       
        extern int errno;
 
        time(&current_time);
 
        interval = difftime(due_time, current_time);
-       ALARM_MGR_LOG_PRINT("[alarm-server][timer]: remain time from "
-                           "current is %f , due_time is %d\n", interval,
-                           due_time);
+       ALARM_MGR_LOG_PRINT("[alarm-server][timer]: remain time from current is %f , due_time is %d.", interval, due_time);
 
        /*set timer as absolute time */
        /*we create dummy timer when the interval is longer than one day. */
@@ -113,23 +89,21 @@ bool _alarm_set_timer(__alarm_server_context_t *alarm_context, timer_t timer,
                interval = 60 * 60 * 12;
                g_dummy_timer_is_set = true;
                strftime(due_time_r, 30, "%c", &ts_ret);
-               ALARM_MGR_LOG_PRINT("create dummy alarm timer(%d), "
-                                   "due_time(%s) \n", timer, due_time_r);
-       } else
+               ALARM_MGR_LOG_PRINT("create dummy alarm timer(%d), due_time(%s)", timer, due_time_r);
+       }
+       else {
                g_dummy_timer_is_set = false;
+       }
 
        time_spec.it_value.tv_sec = due_time;
        time_spec.it_value.tv_nsec = 0;
        time_spec.it_interval.tv_sec = time_spec.it_interval.tv_nsec = 0;
 
-       if (interval > 0
-           && timer_settime(timer, TIMER_ABSTIME, &time_spec, NULL) != 0) {
-               ALARM_MGR_EXCEPTION_PRINT("set timer has failed : timer(%d), "
-                                         "due_time(%u) , errno(%d)\n", timer,
-                                         due_time, errno);
+       if (interval > 0 && timerfd_settime(timer, TFD_TIMER_ABSTIME, &time_spec, NULL) != 0) {
+               ALARM_MGR_EXCEPTION_PRINT("set timer has failed : timer(%d), due_time(%u) , errno(%d).", timer, due_time, errno);
                return false;
        }
-       /* we set c_due_time to due_time due to allow newly created alarm can 
+       /* we set c_due_time to due_time due to allow newly created alarm can
           be schedlued when its interval is less than the current alarm */
        alarm_context->c_due_time = due_time;
        return true;
@@ -137,9 +111,9 @@ bool _alarm_set_timer(__alarm_server_context_t *alarm_context, timer_t timer,
 
 int _set_sys_time(time_t _time)
 {
-       struct tm *_tm;
        struct tm result;
-       _tm = gmtime_r(&_time, &result);
+       /* Ignore return value of gmtime_r(). */
+       (void) gmtime_r(&_time, &result);
 
        stime(&_time);
 
@@ -149,9 +123,8 @@ int _set_sys_time(time_t _time)
 int _set_time(time_t _time)
 {
        ALARM_MGR_LOG_PRINT("ENTER FUNC _set_time(%d)", _time);
-       int ret = 1;
-       ret = _set_rtc_time(_time);
-       _set_sys_time(_time);
+       _set_rtc_time(_time);
+       //_set_sys_time(_time);
 
        /* inoti (broadcasting without data 
         * send system noti that time has changed */