]> rtime.felk.cvut.cz Git - arc.git/commitdiff
More fixes for Isrs
authortojo <devnull@localhost>
Thu, 24 Mar 2011 08:12:41 +0000 (09:12 +0100)
committertojo <devnull@localhost>
Thu, 24 Mar 2011 08:12:41 +0000 (09:12 +0100)
include/isr.h
include/os_config_funcs.h
include/os_config_macros.h
system/EcuM/EcuM.c
system/kernel/init.c
system/kernel/isr.c

index 90ad553b0150187a2915036c2d0fb6f7d3eebeac..9f0e37819c8edfc1cf1c5183b6b581dbd0c1697e 100644 (file)
 #define ISR_TYPE_2                     1\r
 \r
 /* ----------------------------[macro]---------------------------------------*/\r
-#define ISR_DECLARE_ISR2( _name, _entry, _unique, _vector, _priority, _app )        \\r
-         const OsIsrConstType _entry ## _unique = { \\r
-                       .vector =          _vector,       \\r
-                       .type =             ISR_TYPE_2,   \\r
-                       .priority =        _priority,     \\r
-                       .entry =           _entry,        \\r
-                       .name =            _name,         \\r
-                       .resourceMask =     0,            \\r
-                       .timingProtPtr =    NULL,         \\r
-                       .appOwner =        _app,          \\r
-                 }\r
+#ifdef CFG_DRIVERS_USE_CONFIG_ISRS\r
+\r
+#define ISR_INSTALL_ISR2( _name, _entry, _vector, _priority, _app )\r
+\r
+#else /* CFG_DRIVERS_USE_CONFIG_ISRS */\r
 \r
 #define _ISR_INSTALL_ISR2( _name, _entry, _unique, _vector, _priority, _app )        \\r
        do {                                         \\r
@@ -69,6 +63,7 @@
 #define ISR_INSTALL_ISR2( _name, _entry, _vector, _priority, _app )        \\r
                _ISR_INSTALL_ISR2( _name, _entry, __LINE__, _vector, _priority, _app )\r
 \r
+#endif /* CFG_DRIVERS_USE_CONFIG_ISRS */\r
 \r
 /* ----------------------------[typedef]-------------------------------------*/\r
 \r
index c7a9112983afa174f60791e44c7223af581c6c6a..d1d028a932508c5f69cde5d076265309fca2dd81 100644 (file)
@@ -33,7 +33,9 @@
                                                          }\r
 \r
 void Os_CfgValidate(void ) {\r
+#if (COUNTER_CNT!=0)\r
        OS_VALIDATE(OS_COUNTER_CNT,ARRAY_SIZE(counter_list));\r
+#endif\r
 #if (RESOURCE_CNT!=0)\r
        OS_VALIDATE(OS_RESOURCE_CNT,ARRAY_SIZE(resource_list));\r
 #endif\r
@@ -84,7 +86,11 @@ OsResourceType *Os_CfgGetResource( ResourceType resource ) {
 /*-----------------------------------------------------------------*/\r
 \r
 OsCounterType *Os_CfgGetCounter(CounterType count_id) {\r
+#if OS_COUNTER_CNT!=0\r
        return &counter_list[count_id];\r
+#else\r
+       return NULL;\r
+#endif\r
 }\r
 \r
 /*-----------------------------------------------------------------*/\r
@@ -116,17 +122,18 @@ OsAlarmType *Os_CfgGetAlarmObj( AlarmType alarm_id ) {
 }\r
 \r
 StatusType Os_CfgGetAlarmBase(AlarmType alarm_id, AlarmBaseRefType info) {\r
-\r
+#if (OS_ALARM_CNT!=0)\r
        StatusType rv = E_OK;\r
 \r
        if( alarm_id >= OS_ALARM_CNT ) {\r
                rv = E_OS_ID;\r
        } else {\r
-#if (OS_ALARM_CNT!=0)\r
                *info = alarm_list[alarm_id].counter->alarm_base;\r
-#endif\r
        }\r
        return rv;\r
+#else\r
+       return E_OS_ID;\r
+#endif\r
 }\r
 \r
 \r
index 878f37d8bd595765fb1280c21d0d244a816be263..31233ba2fa9e55ea57db456b49a2a1872eb07c5b 100644 (file)
@@ -38,7 +38,7 @@
 \r
 #define GEN_APPLICATION_HEAD const OsAppConstType Os_AppConst[OS_APPLICATION_CNT]\r
 \r
-#define GEN_APPLICATION(       _id,_name, _trusted, _core, _startuphook,_shutdownhook, _errorhook, \\r
+#define GEN_APPLICATION(       _id, _name, _trusted, _core, _startuphook, _shutdownhook, _errorhook, \\r
                                                        _restart_task  ) \\r
 {                                                                                              \\r
        .appId = _id,                                           \\r
 #define GEN_ISR2( _name, _vector, _priority, _entry, _appOwner, _resourceMask ) \\r
 {                                      \\r
                .vector = _vector,             \\r
-               .type = ISR_TYPE_1,            \\r
+               .type = ISR_TYPE_2,            \\r
                .priority = _priority,         \\r
                .entry = _entry,               \\r
                .name = _name,                 \\r
index 1f5b03d1fdfb370bcf5214d54b3ae09c77049aca..d587de0637bd72ddd0eb12a7520149f7db8fd881 100644 (file)
@@ -19,6 +19,7 @@
 #include "Modules.h"\r
 #include <string.h>\r
 #include <Os.h>\r
+#include "isr.h"\r
 #include "EcuM_Internals.h"\r
 #include "EcuM_Cbk.h"\r
 #include "Mcu.h"\r
index 6b42354b3feed171f15b09390dbdc5a9fd5ac8a0..e70985d3d8a431bfde70df88a422ff8637732c1c 100644 (file)
@@ -109,9 +109,6 @@ void InitOS( void ) {
 
        Os_ArchInit();
 
-       /* Get the numbers defined in the editor */
-       Os_Sys.isrCnt = OS_ISR_CNT;
-
        // Assign pcb list and init ready queue
        Os_Sys.pcb_list = Os_TaskVarList;
        TAILQ_INIT(& Os_Sys.ready_head);
index 89f99571e842373473acdb63b57e5c69d00344ee..27fcc5233b3de4886f1f817bf89a5289be59f9fc 100644 (file)
@@ -295,10 +295,13 @@ void *Os_Isr( void *stack, int16_t vector ) {
 
        /* Check so that the ISR2 have called ReleaseResource() for each GetResource() */
        /** @req OS369 */
+       /* Removed because of null pointer.
+        * TODO: ISR2 can't use Resources yet
        if( Os_TaskOccupiesResources(taskPtr) ) {
                Os_ResourceFreeAll(taskPtr);
                ERRORHOOK(E_OS_RESOURCE);
        }
+       */
 
        Os_IsrVarList[isrId].state = ST_ISR_NOT_RUNNING;