]> rtime.felk.cvut.cz Git - arc.git/commitdiff
SetRelAlarm now saves Irq state
authortojo <devnull@localhost>
Wed, 12 Jan 2011 14:12:41 +0000 (15:12 +0100)
committertojo <devnull@localhost>
Wed, 12 Jan 2011 14:12:41 +0000 (15:12 +0100)
system/kernel/alarm.c

index e2cd7e7f75e905fe4187deb7b45c32724dbb0808..d2c4413042c17e1ba64dedbe6ab44b21ef47eab2 100644 (file)
@@ -96,6 +96,7 @@ StatusType GetAlarm(AlarmType AlarmId, TickRefType Tick) {
 StatusType SetRelAlarm(AlarmType AlarmId, TickType Increment, TickType Cycle){\r
        StatusType rv = E_OK;\r
        OsAlarmType *aPtr;\r
+       long flags;\r
 \r
        ALARM_CHECK_ID(AlarmId);\r
 \r
@@ -122,9 +123,9 @@ StatusType SetRelAlarm(AlarmType AlarmId, TickType Increment, TickType Cycle){
        }\r
 \r
        {\r
-               Irq_Disable();\r
+               Irq_Save(flags);\r
                if( aPtr->active == 1 ) {\r
-                       Irq_Enable();\r
+                       Irq_Restore(flags);\r
                        rv = E_OS_STATE;\r
                        goto err;\r
                }\r
@@ -137,7 +138,7 @@ StatusType SetRelAlarm(AlarmType AlarmId, TickType Increment, TickType Cycle){
                                                                Increment);\r
                aPtr->cycletime = Cycle;\r
 \r
-               Irq_Enable();\r
+               Irq_Restore(flags);\r
                OS_DEBUG(D_ALARM,"  expire:%u cycle:%u\n",\r
                                (unsigned)aPtr->expire_val,\r
                                (unsigned)aPtr->cycletime);\r