From 9f95ff5b6ba01db09552b84a0ab79607060a2666 Mon Sep 17 00:00:00 2001 From: Ali Labbene Date: Wed, 11 Dec 2019 08:59:21 +0100 Subject: Official ARM version: v5.4.0 Add CMSIS V5.4.0, please refer to index.html available under \docs folder. Note: content of \CMSIS\Core\Include has been copied under \Include to keep the same structure used in existing projects, and thus avoid projects mass update Note: the following components have been removed from ARM original delivery (as not used in ST packages) - CMSIS_EW2018.pdf - .gitattributes - .gitignore - \Device - \CMSIS - \CoreValidation - \DAP - \Documentation - \DoxyGen - \Driver - \Pack - \RTOS\CMSIS_RTOS_Tutorial.pdf - \RTOS\RTX - \RTOS\Template - \RTOS2\RTX - \Utilities - All ARM/GCC projects files are deleted from \DSP, \RTOS and \RTOS2 Change-Id: Ia026c3f0f0d016627a4fb5a9032852c33d24b4d3 --- docs/RTOS2/html/API_Structure.png | Bin 0 -> 7494 bytes docs/RTOS2/html/CMSIS_Logo_Final.png | Bin 0 -> 12402 bytes docs/RTOS2/html/CMSIS_RTOS_Files.png | Bin 0 -> 20340 bytes docs/RTOS2/html/CodingRules.html | 141 ++ docs/RTOS2/html/MemAllocGlob.png | Bin 0 -> 6082 bytes docs/RTOS2/html/MemAllocSpec.png | Bin 0 -> 11293 bytes docs/RTOS2/html/MemAllocStat.png | Bin 0 -> 5012 bytes docs/RTOS2/html/MessageQueue.png | Bin 0 -> 12122 bytes docs/RTOS2/html/Mutex.png | Bin 0 -> 11737 bytes docs/RTOS2/html/PC-Lint.png | Bin 0 -> 47030 bytes docs/RTOS2/html/RTX5_Migrate1.PNG | Bin 0 -> 26196 bytes docs/RTOS2/html/Semaphore.png | Bin 0 -> 26906 bytes docs/RTOS2/html/ThreadStatus.png | Bin 0 -> 31308 bytes docs/RTOS2/html/Timer.png | Bin 0 -> 13428 bytes docs/RTOS2/html/TimerValues.png | Bin 0 -> 4039 bytes docs/RTOS2/html/add_item.png | Bin 0 -> 31105 bytes docs/RTOS2/html/annotated.html | 173 ++ docs/RTOS2/html/annotated.js | 37 + docs/RTOS2/html/bc_s.png | Bin 0 -> 670 bytes docs/RTOS2/html/bdwn.png | Bin 0 -> 147 bytes docs/RTOS2/html/classes.html | 149 ++ docs/RTOS2/html/closed.png | Bin 0 -> 132 bytes docs/RTOS2/html/cmsis.css | 1282 ++++++++++ docs/RTOS2/html/cmsis__os2_8h.html | 724 ++++++ docs/RTOS2/html/cmsis__os2_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__Event_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__Kernel_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__MemPool_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__Message_8txt.html | 129 + .../html/cmsis__os2__MigrationGuide_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__Migration_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__Mutex_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__Sema_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__Status_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__ThreadFlags_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__Thread_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__Timer_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__Wait_8txt.html | 129 + docs/RTOS2/html/cmsis__os2__tick_8txt.html | 129 + docs/RTOS2/html/config_rtx5.html | 537 ++++ docs/RTOS2/html/config_wizard.png | Bin 0 -> 10239 bytes docs/RTOS2/html/config_wizard_eventFlags.png | Bin 0 -> 6800 bytes docs/RTOS2/html/config_wizard_evtrecGeneration.png | Bin 0 -> 6470 bytes .../html/config_wizard_evtrecGlobEvtFiltSetup.png | Bin 0 -> 3195 bytes docs/RTOS2/html/config_wizard_evtrecGlobIni.png | Bin 0 -> 3308 bytes .../config_wizard_evtrecRTOSEvtFilterSetup.png | Bin 0 -> 9519 bytes docs/RTOS2/html/config_wizard_memPool.png | Bin 0 -> 8846 bytes docs/RTOS2/html/config_wizard_msgQueue.png | Bin 0 -> 9134 bytes docs/RTOS2/html/config_wizard_mutex.png | Bin 0 -> 6678 bytes docs/RTOS2/html/config_wizard_semaphore.png | Bin 0 -> 6851 bytes docs/RTOS2/html/config_wizard_system.png | Bin 0 -> 8645 bytes docs/RTOS2/html/config_wizard_threads.png | Bin 0 -> 11296 bytes docs/RTOS2/html/config_wizard_timer.png | Bin 0 -> 11055 bytes docs/RTOS2/html/cre_rtx_proj.html | 208 ++ docs/RTOS2/html/creating_RTX5_LIB.html | 142 ++ .../html/dir_002cf2dd0f795cc97a8d08cc3fa6e516.html | 135 ++ .../html/dir_061ad8d12aa7dc7d03c29112cd6e086d.html | 137 ++ .../html/dir_899d076620cccde5757c1c1ca5de63cc.html | 136 ++ .../html/dir_a43355fbfff7212ac2193223a73d577c.html | 137 ++ .../html/dir_f5870d36a7061bb81e1a64a750696f2d.html | 138 ++ docs/RTOS2/html/dirstructfiles5.html | 200 ++ docs/RTOS2/html/doxygen.css | 1366 +++++++++++ docs/RTOS2/html/doxygen.png | Bin 0 -> 3846 bytes docs/RTOS2/html/dynsections.js | 97 + docs/RTOS2/html/event_recorder_rte.png | Bin 0 -> 41621 bytes docs/RTOS2/html/files.html | 136 ++ docs/RTOS2/html/ftv2blank.png | Bin 0 -> 86 bytes docs/RTOS2/html/ftv2cl.png | Bin 0 -> 451 bytes docs/RTOS2/html/ftv2doc.png | Bin 0 -> 758 bytes docs/RTOS2/html/ftv2folderclosed.png | Bin 0 -> 595 bytes docs/RTOS2/html/ftv2folderopen.png | Bin 0 -> 604 bytes docs/RTOS2/html/ftv2lastnode.png | Bin 0 -> 86 bytes docs/RTOS2/html/ftv2link.png | Bin 0 -> 758 bytes docs/RTOS2/html/ftv2mlastnode.png | Bin 0 -> 245 bytes docs/RTOS2/html/ftv2mnode.png | Bin 0 -> 245 bytes docs/RTOS2/html/ftv2mo.png | Bin 0 -> 404 bytes docs/RTOS2/html/ftv2node.png | Bin 0 -> 86 bytes docs/RTOS2/html/ftv2ns.png | Bin 0 -> 385 bytes docs/RTOS2/html/ftv2plastnode.png | Bin 0 -> 232 bytes docs/RTOS2/html/ftv2pnode.png | Bin 0 -> 232 bytes docs/RTOS2/html/ftv2splitbar.png | Bin 0 -> 315 bytes docs/RTOS2/html/ftv2vertline.png | Bin 0 -> 86 bytes docs/RTOS2/html/functionOverview.html | 140 ++ docs/RTOS2/html/functionOverview.js | 9 + docs/RTOS2/html/functions.html | 560 +++++ docs/RTOS2/html/functions_vars.html | 560 +++++ docs/RTOS2/html/genRTOS2IF.html | 212 ++ docs/RTOS2/html/globals.html | 153 ++ docs/RTOS2/html/globals_defs.html | 447 ++++ docs/RTOS2/html/globals_e.html | 651 +++++ docs/RTOS2/html/globals_enum.html | 152 ++ docs/RTOS2/html/globals_eval.html | 375 +++ docs/RTOS2/html/globals_func.html | 648 +++++ docs/RTOS2/html/globals_func_o.html | 420 ++++ docs/RTOS2/html/globals_func_p.html | 150 ++ docs/RTOS2/html/globals_func_s.html | 153 ++ docs/RTOS2/html/globals_i.html | 156 ++ docs/RTOS2/html/globals_o.html | 1002 ++++++++ docs/RTOS2/html/globals_p.html | 153 ++ docs/RTOS2/html/globals_s.html | 156 ++ docs/RTOS2/html/globals_t.html | 156 ++ docs/RTOS2/html/globals_type.html | 170 ++ docs/RTOS2/html/globals_vars.html | 164 ++ docs/RTOS2/html/group__CMSIS__RTOS.html | 178 ++ docs/RTOS2/html/group__CMSIS__RTOS.js | 15 + .../html/group__CMSIS__RTOS__Definitions.html | 297 +++ docs/RTOS2/html/group__CMSIS__RTOS__Definitions.js | 18 + .../RTOS2/html/group__CMSIS__RTOS__EventFlags.html | 656 +++++ docs/RTOS2/html/group__CMSIS__RTOS__EventFlags.js | 17 + ...__RTOS__EventFlags_structosEventFlagsAttr__t.js | 7 + .../RTOS2/html/group__CMSIS__RTOS__KernelCtrl.html | 813 +++++++ docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl.js | 29 + ...__CMSIS__RTOS__KernelCtrl_structosVersion__t.js | 5 + .../RTOS2/html/group__CMSIS__RTOS__MemoryMgmt.html | 183 ++ docs/RTOS2/html/group__CMSIS__RTOS__Message.html | 675 ++++++ docs/RTOS2/html/group__CMSIS__RTOS__Message.js | 21 + ...S__RTOS__Message_structosMessageQueueAttr__t.js | 9 + docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt.html | 655 +++++ docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt.js | 19 + ..._CMSIS__RTOS__MutexMgmt_structosMutexAttr__t.js | 7 + docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt.html | 638 +++++ docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt.js | 21 + ...IS__RTOS__PoolMgmt_structosMemoryPoolAttr__t.js | 9 + .../html/group__CMSIS__RTOS__SemaphoreMgmt.html | 554 +++++ .../html/group__CMSIS__RTOS__SemaphoreMgmt.js | 16 + ...RTOS__SemaphoreMgmt_structosSemaphoreAttr__t.js | 7 + .../html/group__CMSIS__RTOS__ThreadFlagsMgmt.html | 376 +++ .../html/group__CMSIS__RTOS__ThreadFlagsMgmt.js | 7 + .../RTOS2/html/group__CMSIS__RTOS__ThreadMgmt.html | 1467 +++++++++++ docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt.js | 107 + ...MSIS__RTOS__ThreadMgmt_structosThreadAttr__t.js | 12 + docs/RTOS2/html/group__CMSIS__RTOS__TickAPI.html | 446 ++++ docs/RTOS2/html/group__CMSIS__RTOS__TickAPI.js | 12 + docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt.html | 646 +++++ docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt.js | 23 + ..._CMSIS__RTOS__TimerMgmt_structosTimerAttr__t.js | 7 + docs/RTOS2/html/group__CMSIS__RTOS__Wait.html | 234 ++ docs/RTOS2/html/group__CMSIS__RTOS__Wait.js | 5 + docs/RTOS2/html/group__flags__error__codes.html | 265 ++ docs/RTOS2/html/group__flags__error__codes.js | 8 + docs/RTOS2/html/group__rtx5__specific.html | 153 ++ docs/RTOS2/html/group__rtx5__specific.js | 6 + .../RTOS2/html/group__rtx5__specific__defines.html | 457 ++++ docs/RTOS2/html/group__rtx5__specific__defines.js | 17 + .../html/group__rtx5__specific__functions.html | 265 ++ .../RTOS2/html/group__rtx5__specific__functions.js | 5 + .../RTOS2/html/group__rtx5__specific__structs.html | 757 ++++++ docs/RTOS2/html/group__rtx5__specific__structs.js | 98 + ...__specific__structs_structosRtxEventFlags__t.js | 10 + ...__specific__structs_structosRtxMemoryPool__t.js | 10 + ...specific__structs_structosRtxMessageQueue__t.js | 14 + ..._rtx5__specific__structs_structosRtxMutex__t.js | 14 + ...5__specific__structs_structosRtxSemaphore__t.js | 11 + ...rtx5__specific__structs_structosRtxThread__t.js | 26 + ...__specific__structs_structosRtxTimerFinfo__t.js | 5 + ..._rtx5__specific__structs_structosRtxTimer__t.js | 13 + docs/RTOS2/html/group__rtx__evr.html | 167 ++ docs/RTOS2/html/group__rtx__evr.js | 12 + docs/RTOS2/html/group__rtx__evr__event__flasg.html | 422 ++++ docs/RTOS2/html/group__rtx__evr__event__flasg.js | 10 + docs/RTOS2/html/group__rtx__evr__kernel.html | 788 ++++++ docs/RTOS2/html/group__rtx__evr__kernel.js | 25 + docs/RTOS2/html/group__rtx__evr__memory.html | 447 ++++ docs/RTOS2/html/group__rtx__evr__memory.js | 9 + docs/RTOS2/html/group__rtx__evr__memory__pool.html | 892 +++++++ docs/RTOS2/html/group__rtx__evr__memory__pool.js | 21 + .../html/group__rtx__evr__message__queue.html | 1126 +++++++++ docs/RTOS2/html/group__rtx__evr__message__queue.js | 26 + docs/RTOS2/html/group__rtx__evr__mutex.html | 692 ++++++ docs/RTOS2/html/group__rtx__evr__mutex.js | 17 + docs/RTOS2/html/group__rtx__evr__semaphore.html | 712 ++++++ docs/RTOS2/html/group__rtx__evr__semaphore.js | 17 + docs/RTOS2/html/group__rtx__evr__thread.html | 1293 ++++++++++ docs/RTOS2/html/group__rtx__evr__thread.js | 36 + docs/RTOS2/html/group__rtx__evr__timer.html | 636 +++++ docs/RTOS2/html/group__rtx__evr__timer.js | 15 + docs/RTOS2/html/history_8txt.html | 129 + docs/RTOS2/html/index.html | 181 ++ docs/RTOS2/html/jquery.js | 72 + docs/RTOS2/html/mainpage_8txt.html | 129 + docs/RTOS2/html/manage_rte_cortex-a.png | Bin 0 -> 111780 bytes docs/RTOS2/html/manage_rte_output.png | Bin 0 -> 53886 bytes docs/RTOS2/html/mempool.png | Bin 0 -> 13062 bytes docs/RTOS2/html/misraCompliance5.html | 412 ++++ docs/RTOS2/html/modules.html | 160 ++ docs/RTOS2/html/modules.js | 6 + docs/RTOS2/html/mutex_states.png | Bin 0 -> 31189 bytes docs/RTOS2/html/nav_f.png | Bin 0 -> 151 bytes docs/RTOS2/html/nav_g.png | Bin 0 -> 95 bytes docs/RTOS2/html/nav_h.png | Bin 0 -> 99 bytes docs/RTOS2/html/navtree.css | 143 ++ docs/RTOS2/html/navtree.js | 553 +++++ docs/RTOS2/html/navtreeindex0.js | 253 ++ docs/RTOS2/html/navtreeindex1.js | 253 ++ docs/RTOS2/html/navtreeindex2.js | 253 ++ docs/RTOS2/html/navtreeindex3.js | 23 + docs/RTOS2/html/open.png | Bin 0 -> 122 bytes docs/RTOS2/html/os2Migration.html | 134 + docs/RTOS2/html/os2Migration.js | 22 + docs/RTOS2/html/os2MigrationFunctions.html | 766 ++++++ docs/RTOS2/html/os2MigrationGuide.html | 282 +++ docs/RTOS2/html/os__systick_8c.html | 135 ++ docs/RTOS2/html/os__tick_8h.html | 207 ++ docs/RTOS2/html/own_lib_projwin.png | Bin 0 -> 14703 bytes docs/RTOS2/html/pControlBlockSizes.html | 151 ++ docs/RTOS2/html/pDirectory_Files.html | 202 ++ docs/RTOS2/html/pHardwareRequirements.html | 221 ++ docs/RTOS2/html/pToolchains.html | 161 ++ docs/RTOS2/html/pages.html | 133 + docs/RTOS2/html/printComponentTabs.js | 39 + docs/RTOS2/html/project_window.png | Bin 0 -> 13275 bytes docs/RTOS2/html/resize.js | 97 + docs/RTOS2/html/rtosValidation.html | 172 ++ docs/RTOS2/html/rtos_api2.html | 275 +++ docs/RTOS2/html/rtos_apicpp.html | 130 + docs/RTOS2/html/rtos_os_tick_api.html | 144 ++ docs/RTOS2/html/rtos_revisionHistory.html | 265 ++ docs/RTOS2/html/rtx5_impl.html | 139 ++ docs/RTOS2/html/rtx5_impl.js | 81 + docs/RTOS2/html/rtx__evr_8h.html | 1498 ++++++++++++ docs/RTOS2/html/rtx__evr_8txt.html | 129 + docs/RTOS2/html/rtx__os_8h.html | 2561 ++++++++++++++++++++ docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t.js | 14 + .../rtx__os_8h_structosRtxConfig__t_8isr__queue.js | 6 + .../html/rtx__os_8h_structosRtxConfig__t_8mem.js | 11 + .../html/rtx__os_8h_structosRtxConfig__t_8mpi.js | 11 + .../html/rtx__os_8h_structosRtxEventFlags__t.js | 10 + docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t.js | 13 + .../rtx__os_8h_structosRtxInfo__t_8isr__queue.js | 8 + .../html/rtx__os_8h_structosRtxInfo__t_8kernel.js | 8 + .../html/rtx__os_8h_structosRtxInfo__t_8mem.js | 7 + .../html/rtx__os_8h_structosRtxInfo__t_8mpi.js | 11 + .../html/rtx__os_8h_structosRtxInfo__t_8thread.js | 10 + ...rtx__os_8h_structosRtxInfo__t_8thread_8robin.js | 6 + .../rtx__os_8h_structosRtxInfo__t_8thread_8run.js | 5 + .../html/rtx__os_8h_structosRtxInfo__t_8timer.js | 6 + .../html/rtx__os_8h_structosRtxMemoryPool__t.js | 10 + .../html/rtx__os_8h_structosRtxMessageQueue__t.js | 14 + .../RTOS2/html/rtx__os_8h_structosRtxMessage__t.js | 9 + docs/RTOS2/html/rtx__os_8h_structosRtxMpInfo__t.js | 9 + docs/RTOS2/html/rtx__os_8h_structosRtxMutex__t.js | 14 + .../rtx__os_8h_structosRtxObjectMemUsage__t.js | 6 + docs/RTOS2/html/rtx__os_8h_structosRtxObject__t.js | 9 + .../html/rtx__os_8h_structosRtxSemaphore__t.js | 11 + docs/RTOS2/html/rtx__os_8h_structosRtxThread__t.js | 26 + .../html/rtx__os_8h_structosRtxTimerFinfo__t.js | 5 + docs/RTOS2/html/rtx__os_8h_structosRtxTimer__t.js | 13 + docs/RTOS2/html/rtx__os_8txt.html | 129 + docs/RTOS2/html/scheduling.png | Bin 0 -> 35038 bytes docs/RTOS2/html/search.css | 240 ++ docs/RTOS2/html/search/all_0.html | 26 + docs/RTOS2/html/search/all_0.js | 4 + docs/RTOS2/html/search/all_1.html | 26 + docs/RTOS2/html/search/all_1.js | 7 + docs/RTOS2/html/search/all_10.html | 26 + docs/RTOS2/html/search/all_10.js | 15 + docs/RTOS2/html/search/all_11.html | 26 + docs/RTOS2/html/search/all_11.js | 13 + docs/RTOS2/html/search/all_12.html | 26 + docs/RTOS2/html/search/all_12.js | 30 + docs/RTOS2/html/search/all_13.html | 26 + docs/RTOS2/html/search/all_13.js | 4 + docs/RTOS2/html/search/all_14.html | 26 + docs/RTOS2/html/search/all_14.js | 5 + docs/RTOS2/html/search/all_15.html | 26 + docs/RTOS2/html/search/all_15.js | 4 + docs/RTOS2/html/search/all_2.html | 26 + docs/RTOS2/html/search/all_2.js | 8 + docs/RTOS2/html/search/all_3.html | 26 + docs/RTOS2/html/search/all_3.js | 30 + docs/RTOS2/html/search/all_4.html | 26 + docs/RTOS2/html/search/all_4.js | 9 + docs/RTOS2/html/search/all_5.html | 26 + docs/RTOS2/html/search/all_5.js | 174 ++ docs/RTOS2/html/search/all_6.html | 26 + docs/RTOS2/html/search/all_6.js | 10 + docs/RTOS2/html/search/all_7.html | 26 + docs/RTOS2/html/search/all_7.js | 5 + docs/RTOS2/html/search/all_8.html | 26 + docs/RTOS2/html/search/all_8.js | 5 + docs/RTOS2/html/search/all_9.html | 26 + docs/RTOS2/html/search/all_9.js | 7 + docs/RTOS2/html/search/all_a.html | 26 + docs/RTOS2/html/search/all_a.js | 6 + docs/RTOS2/html/search/all_b.html | 26 + docs/RTOS2/html/search/all_b.js | 5 + docs/RTOS2/html/search/all_c.html | 26 + docs/RTOS2/html/search/all_c.js | 30 + docs/RTOS2/html/search/all_d.html | 26 + docs/RTOS2/html/search/all_d.js | 5 + docs/RTOS2/html/search/all_e.html | 26 + docs/RTOS2/html/search/all_e.js | 328 +++ docs/RTOS2/html/search/all_f.html | 26 + docs/RTOS2/html/search/all_f.js | 9 + docs/RTOS2/html/search/classes_0.html | 26 + docs/RTOS2/html/search/classes_0.js | 37 + docs/RTOS2/html/search/close.png | Bin 0 -> 273 bytes docs/RTOS2/html/search/defines_0.html | 26 + docs/RTOS2/html/search/defines_0.js | 4 + docs/RTOS2/html/search/defines_1.html | 26 + docs/RTOS2/html/search/defines_1.js | 4 + docs/RTOS2/html/search/defines_2.html | 26 + docs/RTOS2/html/search/defines_2.js | 68 + docs/RTOS2/html/search/defines_3.html | 26 + docs/RTOS2/html/search/defines_3.js | 4 + docs/RTOS2/html/search/enums_0.html | 26 + docs/RTOS2/html/search/enums_0.js | 8 + docs/RTOS2/html/search/enumvalues_0.html | 26 + docs/RTOS2/html/search/enumvalues_0.js | 80 + docs/RTOS2/html/search/files_0.html | 26 + docs/RTOS2/html/search/files_0.js | 19 + docs/RTOS2/html/search/files_1.html | 26 + docs/RTOS2/html/search/files_1.js | 4 + docs/RTOS2/html/search/files_2.html | 26 + docs/RTOS2/html/search/files_2.js | 4 + docs/RTOS2/html/search/files_3.html | 26 + docs/RTOS2/html/search/files_3.js | 4 + docs/RTOS2/html/search/files_4.html | 26 + docs/RTOS2/html/search/files_4.js | 7 + docs/RTOS2/html/search/files_5.html | 26 + docs/RTOS2/html/search/files_5.js | 4 + docs/RTOS2/html/search/functions_0.html | 26 + docs/RTOS2/html/search/functions_0.js | 170 ++ docs/RTOS2/html/search/functions_1.html | 26 + docs/RTOS2/html/search/functions_1.js | 94 + docs/RTOS2/html/search/functions_2.html | 26 + docs/RTOS2/html/search/functions_2.js | 4 + docs/RTOS2/html/search/functions_3.html | 26 + docs/RTOS2/html/search/functions_3.js | 5 + docs/RTOS2/html/search/groups_0.html | 26 + docs/RTOS2/html/search/groups_0.js | 4 + docs/RTOS2/html/search/groups_1.html | 26 + docs/RTOS2/html/search/groups_1.js | 4 + docs/RTOS2/html/search/groups_2.html | 26 + docs/RTOS2/html/search/groups_2.js | 6 + docs/RTOS2/html/search/groups_3.html | 26 + docs/RTOS2/html/search/groups_3.js | 5 + docs/RTOS2/html/search/groups_4.html | 26 + docs/RTOS2/html/search/groups_4.js | 4 + docs/RTOS2/html/search/groups_5.html | 26 + docs/RTOS2/html/search/groups_5.js | 5 + docs/RTOS2/html/search/groups_6.html | 26 + docs/RTOS2/html/search/groups_6.js | 12 + docs/RTOS2/html/search/groups_7.html | 26 + docs/RTOS2/html/search/groups_7.js | 4 + docs/RTOS2/html/search/groups_8.html | 26 + docs/RTOS2/html/search/groups_8.js | 4 + docs/RTOS2/html/search/groups_9.html | 26 + docs/RTOS2/html/search/groups_9.js | 5 + docs/RTOS2/html/search/groups_a.html | 26 + docs/RTOS2/html/search/groups_a.js | 8 + docs/RTOS2/html/search/mag_sel.png | Bin 0 -> 563 bytes docs/RTOS2/html/search/nomatches.html | 12 + docs/RTOS2/html/search/pages_0.html | 26 + docs/RTOS2/html/search/pages_0.js | 4 + docs/RTOS2/html/search/pages_1.html | 26 + docs/RTOS2/html/search/pages_1.js | 9 + docs/RTOS2/html/search/pages_2.html | 26 + docs/RTOS2/html/search/pages_2.js | 5 + docs/RTOS2/html/search/pages_3.html | 26 + docs/RTOS2/html/search/pages_3.js | 4 + docs/RTOS2/html/search/pages_4.html | 26 + docs/RTOS2/html/search/pages_4.js | 4 + docs/RTOS2/html/search/pages_5.html | 26 + docs/RTOS2/html/search/pages_5.js | 4 + docs/RTOS2/html/search/pages_6.html | 26 + docs/RTOS2/html/search/pages_6.js | 5 + docs/RTOS2/html/search/pages_7.html | 26 + docs/RTOS2/html/search/pages_7.js | 4 + docs/RTOS2/html/search/pages_8.html | 26 + docs/RTOS2/html/search/pages_8.js | 7 + docs/RTOS2/html/search/pages_9.html | 26 + docs/RTOS2/html/search/pages_9.js | 4 + docs/RTOS2/html/search/pages_a.html | 26 + docs/RTOS2/html/search/pages_a.js | 5 + docs/RTOS2/html/search/search.css | 271 +++ docs/RTOS2/html/search/search.js | 813 +++++++ docs/RTOS2/html/search/search_l.png | Bin 0 -> 604 bytes docs/RTOS2/html/search/search_m.png | Bin 0 -> 158 bytes docs/RTOS2/html/search/search_r.png | Bin 0 -> 612 bytes docs/RTOS2/html/search/typedefs_0.html | 26 + docs/RTOS2/html/search/typedefs_0.js | 4 + docs/RTOS2/html/search/typedefs_1.html | 26 + docs/RTOS2/html/search/typedefs_1.js | 12 + docs/RTOS2/html/search/typedefs_2.html | 26 + docs/RTOS2/html/search/typedefs_2.js | 4 + docs/RTOS2/html/search/variables_0.html | 26 + docs/RTOS2/html/search/variables_0.js | 7 + docs/RTOS2/html/search/variables_1.html | 26 + docs/RTOS2/html/search/variables_1.js | 7 + docs/RTOS2/html/search/variables_10.html | 26 + docs/RTOS2/html/search/variables_10.js | 4 + docs/RTOS2/html/search/variables_11.html | 26 + docs/RTOS2/html/search/variables_11.js | 4 + docs/RTOS2/html/search/variables_12.html | 26 + docs/RTOS2/html/search/variables_12.js | 4 + docs/RTOS2/html/search/variables_2.html | 26 + docs/RTOS2/html/search/variables_2.js | 7 + docs/RTOS2/html/search/variables_3.html | 26 + docs/RTOS2/html/search/variables_3.js | 6 + docs/RTOS2/html/search/variables_4.html | 26 + docs/RTOS2/html/search/variables_4.js | 4 + docs/RTOS2/html/search/variables_5.html | 26 + docs/RTOS2/html/search/variables_5.js | 7 + docs/RTOS2/html/search/variables_6.html | 26 + docs/RTOS2/html/search/variables_6.js | 6 + docs/RTOS2/html/search/variables_7.html | 26 + docs/RTOS2/html/search/variables_7.js | 4 + docs/RTOS2/html/search/variables_8.html | 26 + docs/RTOS2/html/search/variables_8.js | 5 + docs/RTOS2/html/search/variables_9.html | 26 + docs/RTOS2/html/search/variables_9.js | 18 + docs/RTOS2/html/search/variables_a.html | 26 + docs/RTOS2/html/search/variables_a.js | 5 + docs/RTOS2/html/search/variables_b.html | 26 + docs/RTOS2/html/search/variables_b.js | 16 + docs/RTOS2/html/search/variables_c.html | 26 + docs/RTOS2/html/search/variables_c.js | 8 + docs/RTOS2/html/search/variables_d.html | 26 + docs/RTOS2/html/search/variables_d.js | 6 + docs/RTOS2/html/search/variables_e.html | 26 + docs/RTOS2/html/search/variables_e.js | 8 + docs/RTOS2/html/search/variables_f.html | 26 + docs/RTOS2/html/search/variables_f.js | 22 + docs/RTOS2/html/semaphore_states.png | Bin 0 -> 28048 bytes docs/RTOS2/html/simple_signal.png | Bin 0 -> 10667 bytes .../html/structosRtxInfo__t_8post__process.html | 219 ++ .../html/structosRtxInfo__t_8post__process.js | 8 + docs/RTOS2/html/structosRtxInfo__t_8timer.html | 204 ++ docs/RTOS2/html/structosRtxInfo__t_8timer.js | 7 + docs/RTOS2/html/sync_off.png | Bin 0 -> 861 bytes docs/RTOS2/html/sync_on.png | Bin 0 -> 855 bytes docs/RTOS2/html/tab_a.png | Bin 0 -> 139 bytes docs/RTOS2/html/tab_b.png | Bin 0 -> 170 bytes docs/RTOS2/html/tab_h.png | Bin 0 -> 176 bytes docs/RTOS2/html/tab_s.png | Bin 0 -> 188 bytes docs/RTOS2/html/tab_topnav.png | Bin 0 -> 232 bytes docs/RTOS2/html/tabs.css | 71 + docs/RTOS2/html/technicalData5.html | 136 ++ docs/RTOS2/html/technicalData5.js | 21 + docs/RTOS2/html/theory_of_operation.html | 899 +++++++ docs/RTOS2/html/validation_8txt.html | 129 + 442 files changed, 49682 insertions(+) create mode 100644 docs/RTOS2/html/API_Structure.png create mode 100644 docs/RTOS2/html/CMSIS_Logo_Final.png create mode 100644 docs/RTOS2/html/CMSIS_RTOS_Files.png create mode 100644 docs/RTOS2/html/CodingRules.html create mode 100644 docs/RTOS2/html/MemAllocGlob.png create mode 100644 docs/RTOS2/html/MemAllocSpec.png create mode 100644 docs/RTOS2/html/MemAllocStat.png create mode 100644 docs/RTOS2/html/MessageQueue.png create mode 100644 docs/RTOS2/html/Mutex.png create mode 100644 docs/RTOS2/html/PC-Lint.png create mode 100644 docs/RTOS2/html/RTX5_Migrate1.PNG create mode 100644 docs/RTOS2/html/Semaphore.png create mode 100644 docs/RTOS2/html/ThreadStatus.png create mode 100644 docs/RTOS2/html/Timer.png create mode 100644 docs/RTOS2/html/TimerValues.png create mode 100644 docs/RTOS2/html/add_item.png create mode 100644 docs/RTOS2/html/annotated.html create mode 100644 docs/RTOS2/html/annotated.js create mode 100644 docs/RTOS2/html/bc_s.png create mode 100644 docs/RTOS2/html/bdwn.png create mode 100644 docs/RTOS2/html/classes.html create mode 100644 docs/RTOS2/html/closed.png create mode 100644 docs/RTOS2/html/cmsis.css create mode 100644 docs/RTOS2/html/cmsis__os2_8h.html create mode 100644 docs/RTOS2/html/cmsis__os2_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__Event_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__Kernel_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__MemPool_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__Message_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__MigrationGuide_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__Migration_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__Mutex_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__Sema_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__Status_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__ThreadFlags_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__Thread_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__Timer_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__Wait_8txt.html create mode 100644 docs/RTOS2/html/cmsis__os2__tick_8txt.html create mode 100644 docs/RTOS2/html/config_rtx5.html create mode 100644 docs/RTOS2/html/config_wizard.png create mode 100644 docs/RTOS2/html/config_wizard_eventFlags.png create mode 100644 docs/RTOS2/html/config_wizard_evtrecGeneration.png create mode 100644 docs/RTOS2/html/config_wizard_evtrecGlobEvtFiltSetup.png create mode 100644 docs/RTOS2/html/config_wizard_evtrecGlobIni.png create mode 100644 docs/RTOS2/html/config_wizard_evtrecRTOSEvtFilterSetup.png create mode 100644 docs/RTOS2/html/config_wizard_memPool.png create mode 100644 docs/RTOS2/html/config_wizard_msgQueue.png create mode 100644 docs/RTOS2/html/config_wizard_mutex.png create mode 100644 docs/RTOS2/html/config_wizard_semaphore.png create mode 100644 docs/RTOS2/html/config_wizard_system.png create mode 100644 docs/RTOS2/html/config_wizard_threads.png create mode 100644 docs/RTOS2/html/config_wizard_timer.png create mode 100644 docs/RTOS2/html/cre_rtx_proj.html create mode 100644 docs/RTOS2/html/creating_RTX5_LIB.html create mode 100644 docs/RTOS2/html/dir_002cf2dd0f795cc97a8d08cc3fa6e516.html create mode 100644 docs/RTOS2/html/dir_061ad8d12aa7dc7d03c29112cd6e086d.html create mode 100644 docs/RTOS2/html/dir_899d076620cccde5757c1c1ca5de63cc.html create mode 100644 docs/RTOS2/html/dir_a43355fbfff7212ac2193223a73d577c.html create mode 100644 docs/RTOS2/html/dir_f5870d36a7061bb81e1a64a750696f2d.html create mode 100644 docs/RTOS2/html/dirstructfiles5.html create mode 100644 docs/RTOS2/html/doxygen.css create mode 100644 docs/RTOS2/html/doxygen.png create mode 100644 docs/RTOS2/html/dynsections.js create mode 100644 docs/RTOS2/html/event_recorder_rte.png create mode 100644 docs/RTOS2/html/files.html create mode 100644 docs/RTOS2/html/ftv2blank.png create mode 100644 docs/RTOS2/html/ftv2cl.png create mode 100644 docs/RTOS2/html/ftv2doc.png create mode 100644 docs/RTOS2/html/ftv2folderclosed.png create mode 100644 docs/RTOS2/html/ftv2folderopen.png create mode 100644 docs/RTOS2/html/ftv2lastnode.png create mode 100644 docs/RTOS2/html/ftv2link.png create mode 100644 docs/RTOS2/html/ftv2mlastnode.png create mode 100644 docs/RTOS2/html/ftv2mnode.png create mode 100644 docs/RTOS2/html/ftv2mo.png create mode 100644 docs/RTOS2/html/ftv2node.png create mode 100644 docs/RTOS2/html/ftv2ns.png create mode 100644 docs/RTOS2/html/ftv2plastnode.png create mode 100644 docs/RTOS2/html/ftv2pnode.png create mode 100644 docs/RTOS2/html/ftv2splitbar.png create mode 100644 docs/RTOS2/html/ftv2vertline.png create mode 100644 docs/RTOS2/html/functionOverview.html create mode 100644 docs/RTOS2/html/functionOverview.js create mode 100644 docs/RTOS2/html/functions.html create mode 100644 docs/RTOS2/html/functions_vars.html create mode 100644 docs/RTOS2/html/genRTOS2IF.html create mode 100644 docs/RTOS2/html/globals.html create mode 100644 docs/RTOS2/html/globals_defs.html create mode 100644 docs/RTOS2/html/globals_e.html create mode 100644 docs/RTOS2/html/globals_enum.html create mode 100644 docs/RTOS2/html/globals_eval.html create mode 100644 docs/RTOS2/html/globals_func.html create mode 100644 docs/RTOS2/html/globals_func_o.html create mode 100644 docs/RTOS2/html/globals_func_p.html create mode 100644 docs/RTOS2/html/globals_func_s.html create mode 100644 docs/RTOS2/html/globals_i.html create mode 100644 docs/RTOS2/html/globals_o.html create mode 100644 docs/RTOS2/html/globals_p.html create mode 100644 docs/RTOS2/html/globals_s.html create mode 100644 docs/RTOS2/html/globals_t.html create mode 100644 docs/RTOS2/html/globals_type.html create mode 100644 docs/RTOS2/html/globals_vars.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__Definitions.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__Definitions.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__EventFlags.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__EventFlags.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__EventFlags_structosEventFlagsAttr__t.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl_structosVersion__t.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__MemoryMgmt.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__Message.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__Message.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__Message_structosMessageQueueAttr__t.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt_structosMutexAttr__t.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt_structosMemoryPoolAttr__t.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt_structosSemaphoreAttr__t.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__ThreadFlagsMgmt.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__ThreadFlagsMgmt.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt_structosThreadAttr__t.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__TickAPI.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__TickAPI.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt_structosTimerAttr__t.js create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__Wait.html create mode 100644 docs/RTOS2/html/group__CMSIS__RTOS__Wait.js create mode 100644 docs/RTOS2/html/group__flags__error__codes.html create mode 100644 docs/RTOS2/html/group__flags__error__codes.js create mode 100644 docs/RTOS2/html/group__rtx5__specific.html create mode 100644 docs/RTOS2/html/group__rtx5__specific.js create mode 100644 docs/RTOS2/html/group__rtx5__specific__defines.html create mode 100644 docs/RTOS2/html/group__rtx5__specific__defines.js create mode 100644 docs/RTOS2/html/group__rtx5__specific__functions.html create mode 100644 docs/RTOS2/html/group__rtx5__specific__functions.js create mode 100644 docs/RTOS2/html/group__rtx5__specific__structs.html create mode 100644 docs/RTOS2/html/group__rtx5__specific__structs.js create mode 100644 docs/RTOS2/html/group__rtx5__specific__structs_structosRtxEventFlags__t.js create mode 100644 docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMemoryPool__t.js create mode 100644 docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMessageQueue__t.js create mode 100644 docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMutex__t.js create mode 100644 docs/RTOS2/html/group__rtx5__specific__structs_structosRtxSemaphore__t.js create mode 100644 docs/RTOS2/html/group__rtx5__specific__structs_structosRtxThread__t.js create mode 100644 docs/RTOS2/html/group__rtx5__specific__structs_structosRtxTimerFinfo__t.js create mode 100644 docs/RTOS2/html/group__rtx5__specific__structs_structosRtxTimer__t.js create mode 100644 docs/RTOS2/html/group__rtx__evr.html create mode 100644 docs/RTOS2/html/group__rtx__evr.js create mode 100644 docs/RTOS2/html/group__rtx__evr__event__flasg.html create mode 100644 docs/RTOS2/html/group__rtx__evr__event__flasg.js create mode 100644 docs/RTOS2/html/group__rtx__evr__kernel.html create mode 100644 docs/RTOS2/html/group__rtx__evr__kernel.js create mode 100644 docs/RTOS2/html/group__rtx__evr__memory.html create mode 100644 docs/RTOS2/html/group__rtx__evr__memory.js create mode 100644 docs/RTOS2/html/group__rtx__evr__memory__pool.html create mode 100644 docs/RTOS2/html/group__rtx__evr__memory__pool.js create mode 100644 docs/RTOS2/html/group__rtx__evr__message__queue.html create mode 100644 docs/RTOS2/html/group__rtx__evr__message__queue.js create mode 100644 docs/RTOS2/html/group__rtx__evr__mutex.html create mode 100644 docs/RTOS2/html/group__rtx__evr__mutex.js create mode 100644 docs/RTOS2/html/group__rtx__evr__semaphore.html create mode 100644 docs/RTOS2/html/group__rtx__evr__semaphore.js create mode 100644 docs/RTOS2/html/group__rtx__evr__thread.html create mode 100644 docs/RTOS2/html/group__rtx__evr__thread.js create mode 100644 docs/RTOS2/html/group__rtx__evr__timer.html create mode 100644 docs/RTOS2/html/group__rtx__evr__timer.js create mode 100644 docs/RTOS2/html/history_8txt.html create mode 100644 docs/RTOS2/html/index.html create mode 100644 docs/RTOS2/html/jquery.js create mode 100644 docs/RTOS2/html/mainpage_8txt.html create mode 100644 docs/RTOS2/html/manage_rte_cortex-a.png create mode 100644 docs/RTOS2/html/manage_rte_output.png create mode 100644 docs/RTOS2/html/mempool.png create mode 100644 docs/RTOS2/html/misraCompliance5.html create mode 100644 docs/RTOS2/html/modules.html create mode 100644 docs/RTOS2/html/modules.js create mode 100644 docs/RTOS2/html/mutex_states.png create mode 100644 docs/RTOS2/html/nav_f.png create mode 100644 docs/RTOS2/html/nav_g.png create mode 100644 docs/RTOS2/html/nav_h.png create mode 100644 docs/RTOS2/html/navtree.css create mode 100644 docs/RTOS2/html/navtree.js create mode 100644 docs/RTOS2/html/navtreeindex0.js create mode 100644 docs/RTOS2/html/navtreeindex1.js create mode 100644 docs/RTOS2/html/navtreeindex2.js create mode 100644 docs/RTOS2/html/navtreeindex3.js create mode 100644 docs/RTOS2/html/open.png create mode 100644 docs/RTOS2/html/os2Migration.html create mode 100644 docs/RTOS2/html/os2Migration.js create mode 100644 docs/RTOS2/html/os2MigrationFunctions.html create mode 100644 docs/RTOS2/html/os2MigrationGuide.html create mode 100644 docs/RTOS2/html/os__systick_8c.html create mode 100644 docs/RTOS2/html/os__tick_8h.html create mode 100644 docs/RTOS2/html/own_lib_projwin.png create mode 100644 docs/RTOS2/html/pControlBlockSizes.html create mode 100644 docs/RTOS2/html/pDirectory_Files.html create mode 100644 docs/RTOS2/html/pHardwareRequirements.html create mode 100644 docs/RTOS2/html/pToolchains.html create mode 100644 docs/RTOS2/html/pages.html create mode 100644 docs/RTOS2/html/printComponentTabs.js create mode 100644 docs/RTOS2/html/project_window.png create mode 100644 docs/RTOS2/html/resize.js create mode 100644 docs/RTOS2/html/rtosValidation.html create mode 100644 docs/RTOS2/html/rtos_api2.html create mode 100644 docs/RTOS2/html/rtos_apicpp.html create mode 100644 docs/RTOS2/html/rtos_os_tick_api.html create mode 100644 docs/RTOS2/html/rtos_revisionHistory.html create mode 100644 docs/RTOS2/html/rtx5_impl.html create mode 100644 docs/RTOS2/html/rtx5_impl.js create mode 100644 docs/RTOS2/html/rtx__evr_8h.html create mode 100644 docs/RTOS2/html/rtx__evr_8txt.html create mode 100644 docs/RTOS2/html/rtx__os_8h.html create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8isr__queue.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8mem.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8mpi.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxEventFlags__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8isr__queue.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8kernel.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8mem.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8mpi.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread_8robin.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread_8run.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8timer.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxMemoryPool__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxMessageQueue__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxMessage__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxMpInfo__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxMutex__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxObjectMemUsage__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxObject__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxSemaphore__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxThread__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxTimerFinfo__t.js create mode 100644 docs/RTOS2/html/rtx__os_8h_structosRtxTimer__t.js create mode 100644 docs/RTOS2/html/rtx__os_8txt.html create mode 100644 docs/RTOS2/html/scheduling.png create mode 100644 docs/RTOS2/html/search.css create mode 100644 docs/RTOS2/html/search/all_0.html create mode 100644 docs/RTOS2/html/search/all_0.js create mode 100644 docs/RTOS2/html/search/all_1.html create mode 100644 docs/RTOS2/html/search/all_1.js create mode 100644 docs/RTOS2/html/search/all_10.html create mode 100644 docs/RTOS2/html/search/all_10.js create mode 100644 docs/RTOS2/html/search/all_11.html create mode 100644 docs/RTOS2/html/search/all_11.js create mode 100644 docs/RTOS2/html/search/all_12.html create mode 100644 docs/RTOS2/html/search/all_12.js create mode 100644 docs/RTOS2/html/search/all_13.html create mode 100644 docs/RTOS2/html/search/all_13.js create mode 100644 docs/RTOS2/html/search/all_14.html create mode 100644 docs/RTOS2/html/search/all_14.js create mode 100644 docs/RTOS2/html/search/all_15.html create mode 100644 docs/RTOS2/html/search/all_15.js create mode 100644 docs/RTOS2/html/search/all_2.html create mode 100644 docs/RTOS2/html/search/all_2.js create mode 100644 docs/RTOS2/html/search/all_3.html create mode 100644 docs/RTOS2/html/search/all_3.js create mode 100644 docs/RTOS2/html/search/all_4.html create mode 100644 docs/RTOS2/html/search/all_4.js create mode 100644 docs/RTOS2/html/search/all_5.html create mode 100644 docs/RTOS2/html/search/all_5.js create mode 100644 docs/RTOS2/html/search/all_6.html create mode 100644 docs/RTOS2/html/search/all_6.js create mode 100644 docs/RTOS2/html/search/all_7.html create mode 100644 docs/RTOS2/html/search/all_7.js create mode 100644 docs/RTOS2/html/search/all_8.html create mode 100644 docs/RTOS2/html/search/all_8.js create mode 100644 docs/RTOS2/html/search/all_9.html create mode 100644 docs/RTOS2/html/search/all_9.js create mode 100644 docs/RTOS2/html/search/all_a.html create mode 100644 docs/RTOS2/html/search/all_a.js create mode 100644 docs/RTOS2/html/search/all_b.html create mode 100644 docs/RTOS2/html/search/all_b.js create mode 100644 docs/RTOS2/html/search/all_c.html create mode 100644 docs/RTOS2/html/search/all_c.js create mode 100644 docs/RTOS2/html/search/all_d.html create mode 100644 docs/RTOS2/html/search/all_d.js create mode 100644 docs/RTOS2/html/search/all_e.html create mode 100644 docs/RTOS2/html/search/all_e.js create mode 100644 docs/RTOS2/html/search/all_f.html create mode 100644 docs/RTOS2/html/search/all_f.js create mode 100644 docs/RTOS2/html/search/classes_0.html create mode 100644 docs/RTOS2/html/search/classes_0.js create mode 100644 docs/RTOS2/html/search/close.png create mode 100644 docs/RTOS2/html/search/defines_0.html create mode 100644 docs/RTOS2/html/search/defines_0.js create mode 100644 docs/RTOS2/html/search/defines_1.html create mode 100644 docs/RTOS2/html/search/defines_1.js create mode 100644 docs/RTOS2/html/search/defines_2.html create mode 100644 docs/RTOS2/html/search/defines_2.js create mode 100644 docs/RTOS2/html/search/defines_3.html create mode 100644 docs/RTOS2/html/search/defines_3.js create mode 100644 docs/RTOS2/html/search/enums_0.html create mode 100644 docs/RTOS2/html/search/enums_0.js create mode 100644 docs/RTOS2/html/search/enumvalues_0.html create mode 100644 docs/RTOS2/html/search/enumvalues_0.js create mode 100644 docs/RTOS2/html/search/files_0.html create mode 100644 docs/RTOS2/html/search/files_0.js create mode 100644 docs/RTOS2/html/search/files_1.html create mode 100644 docs/RTOS2/html/search/files_1.js create mode 100644 docs/RTOS2/html/search/files_2.html create mode 100644 docs/RTOS2/html/search/files_2.js create mode 100644 docs/RTOS2/html/search/files_3.html create mode 100644 docs/RTOS2/html/search/files_3.js create mode 100644 docs/RTOS2/html/search/files_4.html create mode 100644 docs/RTOS2/html/search/files_4.js create mode 100644 docs/RTOS2/html/search/files_5.html create mode 100644 docs/RTOS2/html/search/files_5.js create mode 100644 docs/RTOS2/html/search/functions_0.html create mode 100644 docs/RTOS2/html/search/functions_0.js create mode 100644 docs/RTOS2/html/search/functions_1.html create mode 100644 docs/RTOS2/html/search/functions_1.js create mode 100644 docs/RTOS2/html/search/functions_2.html create mode 100644 docs/RTOS2/html/search/functions_2.js create mode 100644 docs/RTOS2/html/search/functions_3.html create mode 100644 docs/RTOS2/html/search/functions_3.js create mode 100644 docs/RTOS2/html/search/groups_0.html create mode 100644 docs/RTOS2/html/search/groups_0.js create mode 100644 docs/RTOS2/html/search/groups_1.html create mode 100644 docs/RTOS2/html/search/groups_1.js create mode 100644 docs/RTOS2/html/search/groups_2.html create mode 100644 docs/RTOS2/html/search/groups_2.js create mode 100644 docs/RTOS2/html/search/groups_3.html create mode 100644 docs/RTOS2/html/search/groups_3.js create mode 100644 docs/RTOS2/html/search/groups_4.html create mode 100644 docs/RTOS2/html/search/groups_4.js create mode 100644 docs/RTOS2/html/search/groups_5.html create mode 100644 docs/RTOS2/html/search/groups_5.js create mode 100644 docs/RTOS2/html/search/groups_6.html create mode 100644 docs/RTOS2/html/search/groups_6.js create mode 100644 docs/RTOS2/html/search/groups_7.html create mode 100644 docs/RTOS2/html/search/groups_7.js create mode 100644 docs/RTOS2/html/search/groups_8.html create mode 100644 docs/RTOS2/html/search/groups_8.js create mode 100644 docs/RTOS2/html/search/groups_9.html create mode 100644 docs/RTOS2/html/search/groups_9.js create mode 100644 docs/RTOS2/html/search/groups_a.html create mode 100644 docs/RTOS2/html/search/groups_a.js create mode 100644 docs/RTOS2/html/search/mag_sel.png create mode 100644 docs/RTOS2/html/search/nomatches.html create mode 100644 docs/RTOS2/html/search/pages_0.html create mode 100644 docs/RTOS2/html/search/pages_0.js create mode 100644 docs/RTOS2/html/search/pages_1.html create mode 100644 docs/RTOS2/html/search/pages_1.js create mode 100644 docs/RTOS2/html/search/pages_2.html create mode 100644 docs/RTOS2/html/search/pages_2.js create mode 100644 docs/RTOS2/html/search/pages_3.html create mode 100644 docs/RTOS2/html/search/pages_3.js create mode 100644 docs/RTOS2/html/search/pages_4.html create mode 100644 docs/RTOS2/html/search/pages_4.js create mode 100644 docs/RTOS2/html/search/pages_5.html create mode 100644 docs/RTOS2/html/search/pages_5.js create mode 100644 docs/RTOS2/html/search/pages_6.html create mode 100644 docs/RTOS2/html/search/pages_6.js create mode 100644 docs/RTOS2/html/search/pages_7.html create mode 100644 docs/RTOS2/html/search/pages_7.js create mode 100644 docs/RTOS2/html/search/pages_8.html create mode 100644 docs/RTOS2/html/search/pages_8.js create mode 100644 docs/RTOS2/html/search/pages_9.html create mode 100644 docs/RTOS2/html/search/pages_9.js create mode 100644 docs/RTOS2/html/search/pages_a.html create mode 100644 docs/RTOS2/html/search/pages_a.js create mode 100644 docs/RTOS2/html/search/search.css create mode 100644 docs/RTOS2/html/search/search.js create mode 100644 docs/RTOS2/html/search/search_l.png create mode 100644 docs/RTOS2/html/search/search_m.png create mode 100644 docs/RTOS2/html/search/search_r.png create mode 100644 docs/RTOS2/html/search/typedefs_0.html create mode 100644 docs/RTOS2/html/search/typedefs_0.js create mode 100644 docs/RTOS2/html/search/typedefs_1.html create mode 100644 docs/RTOS2/html/search/typedefs_1.js create mode 100644 docs/RTOS2/html/search/typedefs_2.html create mode 100644 docs/RTOS2/html/search/typedefs_2.js create mode 100644 docs/RTOS2/html/search/variables_0.html create mode 100644 docs/RTOS2/html/search/variables_0.js create mode 100644 docs/RTOS2/html/search/variables_1.html create mode 100644 docs/RTOS2/html/search/variables_1.js create mode 100644 docs/RTOS2/html/search/variables_10.html create mode 100644 docs/RTOS2/html/search/variables_10.js create mode 100644 docs/RTOS2/html/search/variables_11.html create mode 100644 docs/RTOS2/html/search/variables_11.js create mode 100644 docs/RTOS2/html/search/variables_12.html create mode 100644 docs/RTOS2/html/search/variables_12.js create mode 100644 docs/RTOS2/html/search/variables_2.html create mode 100644 docs/RTOS2/html/search/variables_2.js create mode 100644 docs/RTOS2/html/search/variables_3.html create mode 100644 docs/RTOS2/html/search/variables_3.js create mode 100644 docs/RTOS2/html/search/variables_4.html create mode 100644 docs/RTOS2/html/search/variables_4.js create mode 100644 docs/RTOS2/html/search/variables_5.html create mode 100644 docs/RTOS2/html/search/variables_5.js create mode 100644 docs/RTOS2/html/search/variables_6.html create mode 100644 docs/RTOS2/html/search/variables_6.js create mode 100644 docs/RTOS2/html/search/variables_7.html create mode 100644 docs/RTOS2/html/search/variables_7.js create mode 100644 docs/RTOS2/html/search/variables_8.html create mode 100644 docs/RTOS2/html/search/variables_8.js create mode 100644 docs/RTOS2/html/search/variables_9.html create mode 100644 docs/RTOS2/html/search/variables_9.js create mode 100644 docs/RTOS2/html/search/variables_a.html create mode 100644 docs/RTOS2/html/search/variables_a.js create mode 100644 docs/RTOS2/html/search/variables_b.html create mode 100644 docs/RTOS2/html/search/variables_b.js create mode 100644 docs/RTOS2/html/search/variables_c.html create mode 100644 docs/RTOS2/html/search/variables_c.js create mode 100644 docs/RTOS2/html/search/variables_d.html create mode 100644 docs/RTOS2/html/search/variables_d.js create mode 100644 docs/RTOS2/html/search/variables_e.html create mode 100644 docs/RTOS2/html/search/variables_e.js create mode 100644 docs/RTOS2/html/search/variables_f.html create mode 100644 docs/RTOS2/html/search/variables_f.js create mode 100644 docs/RTOS2/html/semaphore_states.png create mode 100644 docs/RTOS2/html/simple_signal.png create mode 100644 docs/RTOS2/html/structosRtxInfo__t_8post__process.html create mode 100644 docs/RTOS2/html/structosRtxInfo__t_8post__process.js create mode 100644 docs/RTOS2/html/structosRtxInfo__t_8timer.html create mode 100644 docs/RTOS2/html/structosRtxInfo__t_8timer.js create mode 100644 docs/RTOS2/html/sync_off.png create mode 100644 docs/RTOS2/html/sync_on.png create mode 100644 docs/RTOS2/html/tab_a.png create mode 100644 docs/RTOS2/html/tab_b.png create mode 100644 docs/RTOS2/html/tab_h.png create mode 100644 docs/RTOS2/html/tab_s.png create mode 100644 docs/RTOS2/html/tab_topnav.png create mode 100644 docs/RTOS2/html/tabs.css create mode 100644 docs/RTOS2/html/technicalData5.html create mode 100644 docs/RTOS2/html/technicalData5.js create mode 100644 docs/RTOS2/html/theory_of_operation.html create mode 100644 docs/RTOS2/html/validation_8txt.html (limited to 'docs/RTOS2') diff --git a/docs/RTOS2/html/API_Structure.png b/docs/RTOS2/html/API_Structure.png new file mode 100644 index 0000000..bdf085f Binary files /dev/null and b/docs/RTOS2/html/API_Structure.png differ diff --git a/docs/RTOS2/html/CMSIS_Logo_Final.png b/docs/RTOS2/html/CMSIS_Logo_Final.png new file mode 100644 index 0000000..2056b7e Binary files /dev/null and b/docs/RTOS2/html/CMSIS_Logo_Final.png differ diff --git a/docs/RTOS2/html/CMSIS_RTOS_Files.png b/docs/RTOS2/html/CMSIS_RTOS_Files.png new file mode 100644 index 0000000..3264002 Binary files /dev/null and b/docs/RTOS2/html/CMSIS_RTOS_Files.png differ diff --git a/docs/RTOS2/html/CodingRules.html b/docs/RTOS2/html/CodingRules.html new file mode 100644 index 0000000..e3145b9 --- /dev/null +++ b/docs/RTOS2/html/CodingRules.html @@ -0,0 +1,141 @@ + + + + + +Coding Rules +CMSIS-RTOS2: Coding Rules + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Coding Rules
+
+
+

CMSIS components use general coding rules across the various components.

+

The CMSIS-RTOS2 API is using the following Namespace prefixes:

+
    +
  • os for all definitions and function names.
  • +
  • os with postfix _t for all typedefs.
  • +
+

The CMSIS-RTOS2 RTX v5 implementation is using the following Namespace prefixes for public symbol definitions:

+
    +
  • osRtx for all general definitions and function names that relate to the RTX kernel.
  • +
  • osRtx with postfix _t for all typedefs.
  • +
  • OS_Tick_ for interface functions to the hardware system tick timer.
  • +
  • EvrRtx for event function annotations that interface to the Event Recorder.
  • +
+
+
+ + + + diff --git a/docs/RTOS2/html/MemAllocGlob.png b/docs/RTOS2/html/MemAllocGlob.png new file mode 100644 index 0000000..9f4a407 Binary files /dev/null and b/docs/RTOS2/html/MemAllocGlob.png differ diff --git a/docs/RTOS2/html/MemAllocSpec.png b/docs/RTOS2/html/MemAllocSpec.png new file mode 100644 index 0000000..9405d02 Binary files /dev/null and b/docs/RTOS2/html/MemAllocSpec.png differ diff --git a/docs/RTOS2/html/MemAllocStat.png b/docs/RTOS2/html/MemAllocStat.png new file mode 100644 index 0000000..a2fb3ea Binary files /dev/null and b/docs/RTOS2/html/MemAllocStat.png differ diff --git a/docs/RTOS2/html/MessageQueue.png b/docs/RTOS2/html/MessageQueue.png new file mode 100644 index 0000000..6f013dc Binary files /dev/null and b/docs/RTOS2/html/MessageQueue.png differ diff --git a/docs/RTOS2/html/Mutex.png b/docs/RTOS2/html/Mutex.png new file mode 100644 index 0000000..56deb26 Binary files /dev/null and b/docs/RTOS2/html/Mutex.png differ diff --git a/docs/RTOS2/html/PC-Lint.png b/docs/RTOS2/html/PC-Lint.png new file mode 100644 index 0000000..8c72a01 Binary files /dev/null and b/docs/RTOS2/html/PC-Lint.png differ diff --git a/docs/RTOS2/html/RTX5_Migrate1.PNG b/docs/RTOS2/html/RTX5_Migrate1.PNG new file mode 100644 index 0000000..c536a3e Binary files /dev/null and b/docs/RTOS2/html/RTX5_Migrate1.PNG differ diff --git a/docs/RTOS2/html/Semaphore.png b/docs/RTOS2/html/Semaphore.png new file mode 100644 index 0000000..77718c6 Binary files /dev/null and b/docs/RTOS2/html/Semaphore.png differ diff --git a/docs/RTOS2/html/ThreadStatus.png b/docs/RTOS2/html/ThreadStatus.png new file mode 100644 index 0000000..db6d3c5 Binary files /dev/null and b/docs/RTOS2/html/ThreadStatus.png differ diff --git a/docs/RTOS2/html/Timer.png b/docs/RTOS2/html/Timer.png new file mode 100644 index 0000000..63c666b Binary files /dev/null and b/docs/RTOS2/html/Timer.png differ diff --git a/docs/RTOS2/html/TimerValues.png b/docs/RTOS2/html/TimerValues.png new file mode 100644 index 0000000..b5db92f Binary files /dev/null and b/docs/RTOS2/html/TimerValues.png differ diff --git a/docs/RTOS2/html/add_item.png b/docs/RTOS2/html/add_item.png new file mode 100644 index 0000000..21dd657 Binary files /dev/null and b/docs/RTOS2/html/add_item.png differ diff --git a/docs/RTOS2/html/annotated.html b/docs/RTOS2/html/annotated.html new file mode 100644 index 0000000..f5ee2ef --- /dev/null +++ b/docs/RTOS2/html/annotated.html @@ -0,0 +1,173 @@ + + + + + +Data Structures +CMSIS-RTOS2: Data Structures + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
oCosEventFlagsAttr_tAttributes structure for event flags
oCosMemoryPoolAttr_tAttributes structure for memory pool
oCosMessageQueueAttr_tAttributes structure for message queue
oCosMutexAttr_tAttributes structure for mutex
oCosRtxConfig_tOS Configuration structure
oCosRtxConfig_t.isr_queue
oCosRtxConfig_t.mem
oCosRtxConfig_t.mpi
oCosRtxEventFlags_tEvent Flags Control Block
oCosRtxInfo_tOS Runtime Information structure
oCosRtxInfo_t.isr_queue
oCosRtxInfo_t.kernel
oCosRtxInfo_t.mem
oCosRtxInfo_t.mpi
oCosRtxInfo_t.post_process
oCosRtxInfo_t.thread
oCosRtxInfo_t.thread.robin
oCosRtxInfo_t.thread.run< Thread Info
oCosRtxInfo_t.timer
oCosRtxMemoryPool_tMemory Pool Control Block
oCosRtxMessage_tMessage Control Block
oCosRtxMessageQueue_tMessage Queue Control Block
oCosRtxMpInfo_tMemory Pool Information
oCosRtxMutex_tMutex Control Block
oCosRtxObject_tGeneric Object Control Block
oCosRtxObjectMemUsage_tOS Runtime Object Memory Usage structure
oCosRtxSemaphore_tSemaphore Control Block
oCosRtxThread_tThread Control Block
oCosRtxTimer_tTimer Control Block
oCosRtxTimerFinfo_tTimer Function Information
oCosSemaphoreAttr_tAttributes structure for semaphore
oCosThreadAttr_tAttributes structure for thread
oCosTimerAttr_tAttributes structure for timer
\CosVersion_tVersion information
+
+
+
+ + + + diff --git a/docs/RTOS2/html/annotated.js b/docs/RTOS2/html/annotated.js new file mode 100644 index 0000000..8c91bd0 --- /dev/null +++ b/docs/RTOS2/html/annotated.js @@ -0,0 +1,37 @@ +var annotated = +[ + [ "osEventFlagsAttr_t", "group__CMSIS__RTOS__EventFlags.html#structosEventFlagsAttr__t", "group__CMSIS__RTOS__EventFlags_structosEventFlagsAttr__t" ], + [ "osMemoryPoolAttr_t", "group__CMSIS__RTOS__PoolMgmt.html#structosMemoryPoolAttr__t", "group__CMSIS__RTOS__PoolMgmt_structosMemoryPoolAttr__t" ], + [ "osMessageQueueAttr_t", "group__CMSIS__RTOS__Message.html#structosMessageQueueAttr__t", "group__CMSIS__RTOS__Message_structosMessageQueueAttr__t" ], + [ "osMutexAttr_t", "group__CMSIS__RTOS__MutexMgmt.html#structosMutexAttr__t", "group__CMSIS__RTOS__MutexMgmt_structosMutexAttr__t" ], + [ "osRtxConfig_t", "rtx__os_8h.html#structosRtxConfig__t", "rtx__os_8h_structosRtxConfig__t" ], + [ "osRtxConfig_t.isr_queue", "rtx__os_8h.html#structosRtxConfig__t_8isr__queue", "rtx__os_8h_structosRtxConfig__t_8isr__queue" ], + [ "osRtxConfig_t.mem", "rtx__os_8h.html#structosRtxConfig__t_8mem", "rtx__os_8h_structosRtxConfig__t_8mem" ], + [ "osRtxConfig_t.mpi", "rtx__os_8h.html#structosRtxConfig__t_8mpi", "rtx__os_8h_structosRtxConfig__t_8mpi" ], + [ "osRtxEventFlags_t", "rtx__os_8h.html#structosRtxEventFlags__t", "rtx__os_8h_structosRtxEventFlags__t" ], + [ "osRtxInfo_t", "rtx__os_8h.html#structosRtxInfo__t", "rtx__os_8h_structosRtxInfo__t" ], + [ "osRtxInfo_t.isr_queue", "rtx__os_8h.html#structosRtxInfo__t_8isr__queue", "rtx__os_8h_structosRtxInfo__t_8isr__queue" ], + [ "osRtxInfo_t.kernel", "rtx__os_8h.html#structosRtxInfo__t_8kernel", "rtx__os_8h_structosRtxInfo__t_8kernel" ], + [ "osRtxInfo_t.mem", "rtx__os_8h.html#structosRtxInfo__t_8mem", "rtx__os_8h_structosRtxInfo__t_8mem" ], + [ "osRtxInfo_t.mpi", "rtx__os_8h.html#structosRtxInfo__t_8mpi", "rtx__os_8h_structosRtxInfo__t_8mpi" ], + [ "osRtxInfo_t.post_process", "structosRtxInfo__t_8post__process.html", "structosRtxInfo__t_8post__process" ], + [ "osRtxInfo_t.thread", "rtx__os_8h.html#structosRtxInfo__t_8thread", "rtx__os_8h_structosRtxInfo__t_8thread" ], + [ "osRtxInfo_t.thread.robin", "rtx__os_8h.html#structosRtxInfo__t_8thread_8robin", "rtx__os_8h_structosRtxInfo__t_8thread_8robin" ], + [ "osRtxInfo_t.thread.run", "rtx__os_8h.html#structosRtxInfo__t_8thread_8run", "rtx__os_8h_structosRtxInfo__t_8thread_8run" ], + [ "osRtxInfo_t.timer", "structosRtxInfo__t_8timer.html", "structosRtxInfo__t_8timer" ], + [ "osRtxMemoryPool_t", "rtx__os_8h.html#structosRtxMemoryPool__t", "rtx__os_8h_structosRtxMemoryPool__t" ], + [ "osRtxMessage_t", "rtx__os_8h.html#structosRtxMessage__t", "rtx__os_8h_structosRtxMessage__t" ], + [ "osRtxMessageQueue_t", "rtx__os_8h.html#structosRtxMessageQueue__t", "rtx__os_8h_structosRtxMessageQueue__t" ], + [ "osRtxMpInfo_t", "rtx__os_8h.html#structosRtxMpInfo__t", "rtx__os_8h_structosRtxMpInfo__t" ], + [ "osRtxMutex_t", "rtx__os_8h.html#structosRtxMutex__t", "rtx__os_8h_structosRtxMutex__t" ], + [ "osRtxObject_t", "rtx__os_8h.html#structosRtxObject__t", "rtx__os_8h_structosRtxObject__t" ], + [ "osRtxObjectMemUsage_t", "rtx__os_8h.html#structosRtxObjectMemUsage__t", "rtx__os_8h_structosRtxObjectMemUsage__t" ], + [ "osRtxSemaphore_t", "rtx__os_8h.html#structosRtxSemaphore__t", "rtx__os_8h_structosRtxSemaphore__t" ], + [ "osRtxThread_t", "rtx__os_8h.html#structosRtxThread__t", "rtx__os_8h_structosRtxThread__t" ], + [ "osRtxTimer_t", "rtx__os_8h.html#structosRtxTimer__t", "rtx__os_8h_structosRtxTimer__t" ], + [ "osRtxTimerFinfo_t", "rtx__os_8h.html#structosRtxTimerFinfo__t", "rtx__os_8h_structosRtxTimerFinfo__t" ], + [ "osSemaphoreAttr_t", "group__CMSIS__RTOS__SemaphoreMgmt.html#structosSemaphoreAttr__t", "group__CMSIS__RTOS__SemaphoreMgmt_structosSemaphoreAttr__t" ], + [ "osThreadAttr_t", "group__CMSIS__RTOS__ThreadMgmt.html#structosThreadAttr__t", "group__CMSIS__RTOS__ThreadMgmt_structosThreadAttr__t" ], + [ "osTimerAttr_t", "group__CMSIS__RTOS__TimerMgmt.html#structosTimerAttr__t", "group__CMSIS__RTOS__TimerMgmt_structosTimerAttr__t" ], + [ "osVersion_t", "group__CMSIS__RTOS__KernelCtrl.html#structosVersion__t", "group__CMSIS__RTOS__KernelCtrl_structosVersion__t" ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/bc_s.png b/docs/RTOS2/html/bc_s.png new file mode 100644 index 0000000..575d4fa Binary files /dev/null and b/docs/RTOS2/html/bc_s.png differ diff --git a/docs/RTOS2/html/bdwn.png b/docs/RTOS2/html/bdwn.png new file mode 100644 index 0000000..d107aa3 Binary files /dev/null and b/docs/RTOS2/html/bdwn.png differ diff --git a/docs/RTOS2/html/classes.html b/docs/RTOS2/html/classes.html new file mode 100644 index 0000000..203e81c --- /dev/null +++ b/docs/RTOS2/html/classes.html @@ -0,0 +1,149 @@ + + + + + +Data Structure Index +CMSIS-RTOS2: Data Structure Index + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Data Structure Index
+
+ +
+ + + + diff --git a/docs/RTOS2/html/closed.png b/docs/RTOS2/html/closed.png new file mode 100644 index 0000000..1ae92ff Binary files /dev/null and b/docs/RTOS2/html/closed.png differ diff --git a/docs/RTOS2/html/cmsis.css b/docs/RTOS2/html/cmsis.css new file mode 100644 index 0000000..bba1010 --- /dev/null +++ b/docs/RTOS2/html/cmsis.css @@ -0,0 +1,1282 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 13px; + line-height: 1.3; +} + +/* CMSIS styles */ + +.style1 { + text-align: center; +} +.style2 { + color: #0000FF; + font-weight: normal; +} +.style3 { + text-align: left; +} +.style4 { + color: #008000; +} +.style5 { + color: #0000FF; +} +.style6 { + color: #000000; + font-style:italic; +} +.mand { + color: #0000FF; +} +.opt { + color: #008000; +} +.cond { + color: #990000; +} + +.choice +{ + background-color:#F7F9D0; +} +.seq +{ + background-color:#C9DECB; +} +.group1 +{ + background-color:#F8F1F1; +} +.group2 +{ + background-color:#DCEDEA; +} + + +ul ul { + list-style-type: disc; +} + +ul ul ul { + list-style-type: disc; +} + +ul.hierarchy { + color: green; +} + +em { + color: #000000; + font-style:italic; +} + + + +/* CMSIS Tables */ +table.cmtab1 { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; + text-align: justify; + width:70%; +} + +th.cmtab1 { + background: #EBEFF6; + font-weight: bold; + height: 28px; +} + +td.cmtab1 { + padding:1px; + text-align: left; +} + +table.cmtable { + border-collapse:collapse; + text-align: justify; +} + +table.cmtable td, table.cmtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.cmtable th { + background-color: #EBEFF6; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +td.MonoTxt { + font-family:"Arial monospaced for SAP"; +} + +td.XML-Token +{ + azimuth: 180; + font-style:italic; + color:Maroon; + z-index:20; + +} + +span.XML-Token +{ + azimuth: 180; + font-style:italic; + color:Maroon; + z-index:20; + +} + +span.h2 +{ + font-size: 120%; + font-weight: bold; +} + +div.new +{ + background-color:#ccffcc; /* light green */ +} + +div.mod +{ + background-color:#ffe6cc; /* light amber */ +} + +div.del +{ + background-color:#ffcccc; /* light red */ +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A2B4D8; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3A568E; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4464A5; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9AAED5; + color: #ffffff; + border: 1px double #849CCC; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px; + margin: 4px; + background-color: #FBFCFD; + border: 1px solid #C3CFE6; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; +} + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C3CFE6; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C3CFE6; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EDF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9AAED5; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A2B4D8; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4769AD; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C3CFE6; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4464A5; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4464A5; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A2B4D8; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A7B8DA; + border-left: 1px solid #A7B8DA; + border-right: 1px solid #A7B8DA; + padding: 6px 0px 6px 0px; + color: #233456; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E7F3; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A7B8DA; + border-left: 1px solid #A7B8DA; + border-right: 1px solid #A7B8DA; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #708CC4; + border-top:1px solid #5072B7; + border-left:1px solid #5072B7; + border-right:1px solid #C3CFE6; + border-bottom:1px solid #C3CFE6; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3A568E; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #293C63; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2B4069; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #EBEFF6; + color: #000000; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A7B8DA; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A7B8DA; + border-bottom: 1px solid #A7B8DA; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A7B8DA; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E7F3; + font-size: 90%; + color: #233456; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A7B8DA; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#889FCE; + border:solid 1px #C1CDE5; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#344D7E; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6583BF; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#344D7E; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + margin-left: 5px; + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C3CFE6; +} + +div.headertitle +{ + padding: 5px 5px 5px 7px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5072B7; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #8EA4D0; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#314877; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D7DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4464A5; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/docs/RTOS2/html/cmsis__os2_8h.html b/docs/RTOS2/html/cmsis__os2_8h.html new file mode 100644 index 0000000..10f6a66 --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2_8h.html @@ -0,0 +1,724 @@ + + + + + +cmsis_os2.h File Reference +CMSIS-RTOS2: cmsis_os2.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
cmsis_os2.h File Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Structures

struct  osVersion_t
 Version information. More...
 
struct  osThreadAttr_t
 Attributes structure for thread. More...
 
struct  osTimerAttr_t
 Attributes structure for timer. More...
 
struct  osEventFlagsAttr_t
 Attributes structure for event flags. More...
 
struct  osMutexAttr_t
 Attributes structure for mutex. More...
 
struct  osSemaphoreAttr_t
 Attributes structure for semaphore. More...
 
struct  osMemoryPoolAttr_t
 Attributes structure for memory pool. More...
 
struct  osMessageQueueAttr_t
 Attributes structure for message queue. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define __NO_RETURN
 
#define osWaitForever   0xFFFFFFFFU
 Wait forever timeout value. More...
 
#define osFlagsWaitAny   0x00000000U
 Wait for any flag (default). More...
 
#define osFlagsWaitAll   0x00000001U
 Wait for all flags. More...
 
#define osFlagsNoClear   0x00000002U
 Do not clear flags which have been specified to wait for. More...
 
#define osFlagsError   0x80000000U
 Error indicator. More...
 
#define osFlagsErrorUnknown   0xFFFFFFFFU
 osError (-1). More...
 
#define osFlagsErrorTimeout   0xFFFFFFFEU
 osErrorTimeout (-2). More...
 
#define osFlagsErrorResource   0xFFFFFFFDU
 osErrorResource (-3). More...
 
#define osFlagsErrorParameter   0xFFFFFFFCU
 osErrorParameter (-4). More...
 
#define osFlagsErrorISR   0xFFFFFFFAU
 osErrorISR (-6). More...
 
#define osThreadDetached   0x00000000U
 Thread created in detached mode (default) More...
 
#define osThreadJoinable   0x00000001U
 Thread created in joinable mode. More...
 
#define osMutexRecursive   0x00000001U
 Recursive mutex. More...
 
#define osMutexPrioInherit   0x00000002U
 Priority inherit protocol. More...
 
#define osMutexRobust   0x00000008U
 Robust mutex. More...
 
#define TZ_MODULEID_T
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef void(* osThreadFunc_t )(void *argument)
 Entry point of a thread. More...
 
typedef void(* osTimerFunc_t )(void *argument)
 Timer callback function. More...
 
typedef void * osThreadId_t
 
typedef void * osTimerId_t
 
typedef void * osEventFlagsId_t
 
typedef void * osMutexId_t
 
typedef void * osSemaphoreId_t
 
typedef void * osMemoryPoolId_t
 
typedef void * osMessageQueueId_t
 
typedef uint32_t TZ_ModuleId_t
 
+ + + + + + + + + + + + + + + + +

+Enumerations

enum  osKernelState_t {
+  osKernelInactive = 0, +
+  osKernelReady = 1, +
+  osKernelRunning = 2, +
+  osKernelLocked = 3, +
+  osKernelSuspended = 4, +
+  osKernelError = -1, +
+  osKernelReserved = 0x7FFFFFFFU +
+ }
 Kernel state. More...
 
enum  osThreadState_t {
+  osThreadInactive = 0, +
+  osThreadReady = 1, +
+  osThreadRunning = 2, +
+  osThreadBlocked = 3, +
+  osThreadTerminated = 4, +
+  osThreadError = -1, +
+  osThreadReserved = 0x7FFFFFFF +
+ }
 Thread state. More...
 
enum  osPriority_t {
+  osPriorityNone = 0, +
+  osPriorityIdle = 1, +
+  osPriorityLow = 8, +
+  osPriorityLow1 = 8+1, +
+  osPriorityLow2 = 8+2, +
+  osPriorityLow3 = 8+3, +
+  osPriorityLow4 = 8+4, +
+  osPriorityLow5 = 8+5, +
+  osPriorityLow6 = 8+6, +
+  osPriorityLow7 = 8+7, +
+  osPriorityBelowNormal = 16, +
+  osPriorityBelowNormal1 = 16+1, +
+  osPriorityBelowNormal2 = 16+2, +
+  osPriorityBelowNormal3 = 16+3, +
+  osPriorityBelowNormal4 = 16+4, +
+  osPriorityBelowNormal5 = 16+5, +
+  osPriorityBelowNormal6 = 16+6, +
+  osPriorityBelowNormal7 = 16+7, +
+  osPriorityNormal = 24, +
+  osPriorityNormal1 = 24+1, +
+  osPriorityNormal2 = 24+2, +
+  osPriorityNormal3 = 24+3, +
+  osPriorityNormal4 = 24+4, +
+  osPriorityNormal5 = 24+5, +
+  osPriorityNormal6 = 24+6, +
+  osPriorityNormal7 = 24+7, +
+  osPriorityAboveNormal = 32, +
+  osPriorityAboveNormal1 = 32+1, +
+  osPriorityAboveNormal2 = 32+2, +
+  osPriorityAboveNormal3 = 32+3, +
+  osPriorityAboveNormal4 = 32+4, +
+  osPriorityAboveNormal5 = 32+5, +
+  osPriorityAboveNormal6 = 32+6, +
+  osPriorityAboveNormal7 = 32+7, +
+  osPriorityHigh = 40, +
+  osPriorityHigh1 = 40+1, +
+  osPriorityHigh2 = 40+2, +
+  osPriorityHigh3 = 40+3, +
+  osPriorityHigh4 = 40+4, +
+  osPriorityHigh5 = 40+5, +
+  osPriorityHigh6 = 40+6, +
+  osPriorityHigh7 = 40+7, +
+  osPriorityRealtime = 48, +
+  osPriorityRealtime1 = 48+1, +
+  osPriorityRealtime2 = 48+2, +
+  osPriorityRealtime3 = 48+3, +
+  osPriorityRealtime4 = 48+4, +
+  osPriorityRealtime5 = 48+5, +
+  osPriorityRealtime6 = 48+6, +
+  osPriorityRealtime7 = 48+7, +
+  osPriorityISR = 56, +
+  osPriorityError = -1, +
+  osPriorityReserved = 0x7FFFFFFF +
+ }
 Priority values. More...
 
enum  osTimerType_t {
+  osTimerOnce = 0, +
+  osTimerPeriodic = 1 +
+ }
 Timer type. More...
 
enum  osStatus_t {
+  osOK = 0, +
+  osError = -1, +
+  osErrorTimeout = -2, +
+  osErrorResource = -3, +
+  osErrorParameter = -4, +
+  osErrorNoMemory = -5, +
+  osErrorISR = -6, +
+  osStatusReserved = 0x7FFFFFFF +
+ }
 Status code values returned by CMSIS-RTOS functions. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

osStatus_t osKernelInitialize (void)
 Initialize the RTOS Kernel. More...
 
osStatus_t osKernelGetInfo (osVersion_t *version, char *id_buf, uint32_t id_size)
 Get RTOS Kernel Information. More...
 
osKernelState_t osKernelGetState (void)
 Get the current RTOS Kernel state. More...
 
osStatus_t osKernelStart (void)
 Start the RTOS Kernel scheduler. More...
 
int32_t osKernelLock (void)
 Lock the RTOS Kernel scheduler. More...
 
int32_t osKernelUnlock (void)
 Unlock the RTOS Kernel scheduler. More...
 
int32_t osKernelRestoreLock (int32_t lock)
 Restore the RTOS Kernel scheduler lock state. More...
 
uint32_t osKernelSuspend (void)
 Suspend the RTOS Kernel scheduler. More...
 
void osKernelResume (uint32_t sleep_ticks)
 Resume the RTOS Kernel scheduler. More...
 
uint32_t osKernelGetTickCount (void)
 Get the RTOS kernel tick count. More...
 
uint32_t osKernelGetTickFreq (void)
 Get the RTOS kernel tick frequency. More...
 
uint32_t osKernelGetSysTimerCount (void)
 Get the RTOS kernel system timer count. More...
 
uint32_t osKernelGetSysTimerFreq (void)
 Get the RTOS kernel system timer frequency. More...
 
osThreadId_t osThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr)
 Create a thread and add it to Active Threads. More...
 
const char * osThreadGetName (osThreadId_t thread_id)
 Get name of a thread. More...
 
osThreadId_t osThreadGetId (void)
 Return the thread ID of the current running thread. More...
 
osThreadState_t osThreadGetState (osThreadId_t thread_id)
 Get current thread state of a thread. More...
 
uint32_t osThreadGetStackSize (osThreadId_t thread_id)
 Get stack size of a thread. More...
 
uint32_t osThreadGetStackSpace (osThreadId_t thread_id)
 Get available stack space of a thread based on stack watermark recording during execution. More...
 
osStatus_t osThreadSetPriority (osThreadId_t thread_id, osPriority_t priority)
 Change priority of a thread. More...
 
osPriority_t osThreadGetPriority (osThreadId_t thread_id)
 Get current priority of a thread. More...
 
osStatus_t osThreadYield (void)
 Pass control to next thread that is in state READY. More...
 
osStatus_t osThreadSuspend (osThreadId_t thread_id)
 Suspend execution of a thread. More...
 
osStatus_t osThreadResume (osThreadId_t thread_id)
 Resume execution of a thread. More...
 
osStatus_t osThreadDetach (osThreadId_t thread_id)
 Detach a thread (thread storage can be reclaimed when thread terminates). More...
 
osStatus_t osThreadJoin (osThreadId_t thread_id)
 Wait for specified thread to terminate. More...
 
__NO_RETURN void osThreadExit (void)
 Terminate execution of current running thread. More...
 
osStatus_t osThreadTerminate (osThreadId_t thread_id)
 Terminate execution of a thread. More...
 
uint32_t osThreadGetCount (void)
 Get number of active threads. More...
 
uint32_t osThreadEnumerate (osThreadId_t *thread_array, uint32_t array_items)
 Enumerate active threads. More...
 
uint32_t osThreadFlagsSet (osThreadId_t thread_id, uint32_t flags)
 Set the specified Thread Flags of a thread. More...
 
uint32_t osThreadFlagsClear (uint32_t flags)
 Clear the specified Thread Flags of current running thread. More...
 
uint32_t osThreadFlagsGet (void)
 Get the current Thread Flags of current running thread. More...
 
uint32_t osThreadFlagsWait (uint32_t flags, uint32_t options, uint32_t timeout)
 Wait for one or more Thread Flags of the current running thread to become signaled. More...
 
osStatus_t osDelay (uint32_t ticks)
 Wait for Timeout (Time Delay). More...
 
osStatus_t osDelayUntil (uint32_t ticks)
 Wait until specified time. More...
 
osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)
 Create and Initialize a timer. More...
 
const char * osTimerGetName (osTimerId_t timer_id)
 Get name of a timer. More...
 
osStatus_t osTimerStart (osTimerId_t timer_id, uint32_t ticks)
 Start or restart a timer. More...
 
osStatus_t osTimerStop (osTimerId_t timer_id)
 Stop a timer. More...
 
uint32_t osTimerIsRunning (osTimerId_t timer_id)
 Check if a timer is running. More...
 
osStatus_t osTimerDelete (osTimerId_t timer_id)
 Delete a timer. More...
 
osEventFlagsId_t osEventFlagsNew (const osEventFlagsAttr_t *attr)
 Create and Initialize an Event Flags object. More...
 
const char * osEventFlagsGetName (osEventFlagsId_t ef_id)
 Get name of an Event Flags object. More...
 
uint32_t osEventFlagsSet (osEventFlagsId_t ef_id, uint32_t flags)
 Set the specified Event Flags. More...
 
uint32_t osEventFlagsClear (osEventFlagsId_t ef_id, uint32_t flags)
 Clear the specified Event Flags. More...
 
uint32_t osEventFlagsGet (osEventFlagsId_t ef_id)
 Get the current Event Flags. More...
 
uint32_t osEventFlagsWait (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout)
 Wait for one or more Event Flags to become signaled. More...
 
osStatus_t osEventFlagsDelete (osEventFlagsId_t ef_id)
 Delete an Event Flags object. More...
 
osMutexId_t osMutexNew (const osMutexAttr_t *attr)
 Create and Initialize a Mutex object. More...
 
const char * osMutexGetName (osMutexId_t mutex_id)
 Get name of a Mutex object. More...
 
osStatus_t osMutexAcquire (osMutexId_t mutex_id, uint32_t timeout)
 Acquire a Mutex or timeout if it is locked. More...
 
osStatus_t osMutexRelease (osMutexId_t mutex_id)
 Release a Mutex that was acquired by osMutexAcquire. More...
 
osThreadId_t osMutexGetOwner (osMutexId_t mutex_id)
 Get Thread which owns a Mutex object. More...
 
osStatus_t osMutexDelete (osMutexId_t mutex_id)
 Delete a Mutex object. More...
 
osSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr)
 Create and Initialize a Semaphore object. More...
 
const char * osSemaphoreGetName (osSemaphoreId_t semaphore_id)
 Get name of a Semaphore object. More...
 
osStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout)
 Acquire a Semaphore token or timeout if no tokens are available. More...
 
osStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id)
 Release a Semaphore token up to the initial maximum count. More...
 
uint32_t osSemaphoreGetCount (osSemaphoreId_t semaphore_id)
 Get current Semaphore token count. More...
 
osStatus_t osSemaphoreDelete (osSemaphoreId_t semaphore_id)
 Delete a Semaphore object. More...
 
osMemoryPoolId_t osMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr)
 Create and Initialize a Memory Pool object. More...
 
const char * osMemoryPoolGetName (osMemoryPoolId_t mp_id)
 Get name of a Memory Pool object. More...
 
void * osMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout)
 Allocate a memory block from a Memory Pool. More...
 
osStatus_t osMemoryPoolFree (osMemoryPoolId_t mp_id, void *block)
 Return an allocated memory block back to a Memory Pool. More...
 
uint32_t osMemoryPoolGetCapacity (osMemoryPoolId_t mp_id)
 Get maximum number of memory blocks in a Memory Pool. More...
 
uint32_t osMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id)
 Get memory block size in a Memory Pool. More...
 
uint32_t osMemoryPoolGetCount (osMemoryPoolId_t mp_id)
 Get number of memory blocks used in a Memory Pool. More...
 
uint32_t osMemoryPoolGetSpace (osMemoryPoolId_t mp_id)
 Get number of memory blocks available in a Memory Pool. More...
 
osStatus_t osMemoryPoolDelete (osMemoryPoolId_t mp_id)
 Delete a Memory Pool object. More...
 
osMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr)
 Create and Initialize a Message Queue object. More...
 
const char * osMessageQueueGetName (osMessageQueueId_t mq_id)
 Get name of a Message Queue object. More...
 
osStatus_t osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout)
 Put a Message into a Queue or timeout if Queue is full. More...
 
osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout)
 Get a Message from a Queue or timeout if Queue is empty. More...
 
uint32_t osMessageQueueGetCapacity (osMessageQueueId_t mq_id)
 Get maximum number of messages in a Message Queue. More...
 
uint32_t osMessageQueueGetMsgSize (osMessageQueueId_t mq_id)
 Get maximum message size in a Memory Pool. More...
 
uint32_t osMessageQueueGetCount (osMessageQueueId_t mq_id)
 Get number of queued messages in a Message Queue. More...
 
uint32_t osMessageQueueGetSpace (osMessageQueueId_t mq_id)
 Get number of available slots for messages in a Message Queue. More...
 
osStatus_t osMessageQueueReset (osMessageQueueId_t mq_id)
 Reset a Message Queue to initial empty state. More...
 
osStatus_t osMessageQueueDelete (osMessageQueueId_t mq_id)
 Delete a Message Queue object. More...
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define __NO_RETURN
+
+ +
+
+ +
+
+ + + + +
#define osFlagsError   0x80000000U
+
+ +
+
+ +
+
+ + + + +
#define TZ_MODULEID_T
+
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef void* osMessageQueueId_t
+
+

Message Queue ID identifies the message queue.

+ +
+
+ +
+
+ + + + +
typedef uint32_t TZ_ModuleId_t
+
+

Data type that identifies secure software modules called by a process.

+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2_8txt.html b/docs/RTOS2/html/cmsis__os2_8txt.html new file mode 100644 index 0000000..62767ca --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2.txt File Reference +CMSIS-RTOS2: cmsis_os2.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__Event_8txt.html b/docs/RTOS2/html/cmsis__os2__Event_8txt.html new file mode 100644 index 0000000..a865790 --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__Event_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_Event.txt File Reference +CMSIS-RTOS2: cmsis_os2_Event.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_Event.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__Kernel_8txt.html b/docs/RTOS2/html/cmsis__os2__Kernel_8txt.html new file mode 100644 index 0000000..d380730 --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__Kernel_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_Kernel.txt File Reference +CMSIS-RTOS2: cmsis_os2_Kernel.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_Kernel.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__MemPool_8txt.html b/docs/RTOS2/html/cmsis__os2__MemPool_8txt.html new file mode 100644 index 0000000..d78a1e8 --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__MemPool_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_MemPool.txt File Reference +CMSIS-RTOS2: cmsis_os2_MemPool.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_MemPool.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__Message_8txt.html b/docs/RTOS2/html/cmsis__os2__Message_8txt.html new file mode 100644 index 0000000..36e08de --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__Message_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_Message.txt File Reference +CMSIS-RTOS2: cmsis_os2_Message.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_Message.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__MigrationGuide_8txt.html b/docs/RTOS2/html/cmsis__os2__MigrationGuide_8txt.html new file mode 100644 index 0000000..3c444b0 --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__MigrationGuide_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_MigrationGuide.txt File Reference +CMSIS-RTOS2: cmsis_os2_MigrationGuide.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_MigrationGuide.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__Migration_8txt.html b/docs/RTOS2/html/cmsis__os2__Migration_8txt.html new file mode 100644 index 0000000..dea4d94 --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__Migration_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_Migration.txt File Reference +CMSIS-RTOS2: cmsis_os2_Migration.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_Migration.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__Mutex_8txt.html b/docs/RTOS2/html/cmsis__os2__Mutex_8txt.html new file mode 100644 index 0000000..4fce0f5 --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__Mutex_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_Mutex.txt File Reference +CMSIS-RTOS2: cmsis_os2_Mutex.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_Mutex.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__Sema_8txt.html b/docs/RTOS2/html/cmsis__os2__Sema_8txt.html new file mode 100644 index 0000000..bb6bf2c --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__Sema_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_Sema.txt File Reference +CMSIS-RTOS2: cmsis_os2_Sema.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_Sema.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__Status_8txt.html b/docs/RTOS2/html/cmsis__os2__Status_8txt.html new file mode 100644 index 0000000..3566c2a --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__Status_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_Status.txt File Reference +CMSIS-RTOS2: cmsis_os2_Status.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_Status.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__ThreadFlags_8txt.html b/docs/RTOS2/html/cmsis__os2__ThreadFlags_8txt.html new file mode 100644 index 0000000..ae1fbf4 --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__ThreadFlags_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_ThreadFlags.txt File Reference +CMSIS-RTOS2: cmsis_os2_ThreadFlags.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_ThreadFlags.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__Thread_8txt.html b/docs/RTOS2/html/cmsis__os2__Thread_8txt.html new file mode 100644 index 0000000..383c001 --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__Thread_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_Thread.txt File Reference +CMSIS-RTOS2: cmsis_os2_Thread.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_Thread.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__Timer_8txt.html b/docs/RTOS2/html/cmsis__os2__Timer_8txt.html new file mode 100644 index 0000000..1ac965e --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__Timer_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_Timer.txt File Reference +CMSIS-RTOS2: cmsis_os2_Timer.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_Timer.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__Wait_8txt.html b/docs/RTOS2/html/cmsis__os2__Wait_8txt.html new file mode 100644 index 0000000..4666fc5 --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__Wait_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_Wait.txt File Reference +CMSIS-RTOS2: cmsis_os2_Wait.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_Wait.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/cmsis__os2__tick_8txt.html b/docs/RTOS2/html/cmsis__os2__tick_8txt.html new file mode 100644 index 0000000..db6bcc1 --- /dev/null +++ b/docs/RTOS2/html/cmsis__os2__tick_8txt.html @@ -0,0 +1,129 @@ + + + + + +cmsis_os2_tick.txt File Reference +CMSIS-RTOS2: cmsis_os2_tick.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
cmsis_os2_tick.txt File Reference
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/config_rtx5.html b/docs/RTOS2/html/config_rtx5.html new file mode 100644 index 0000000..4a2340d --- /dev/null +++ b/docs/RTOS2/html/config_rtx5.html @@ -0,0 +1,537 @@ + + + + + +Configure RTX v5 +CMSIS-RTOS2: Configure RTX v5 + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Configure RTX v5
+
+
+

The file "RTX_Config.h" defines the configuration parameters of CMSIS-RTOS RTX and must be part of every project that is using the CMSIS-RTOS RTX kernel. The configuration options are explained in detail in the following sections:

+ +

The file "RTX_Config.c" contains default implementations of the functions osRtxIdleThread and osRtxErrorNotify. Both functions can simply be overwritten with a customized behavior by redefining them as part of the user code.

+

The configuration file uses Configuration Wizard Annotations. Refer to Pack - Configuration Wizard Annotations for details. Depending on the development tool, the annotations might lead to a more user-friendly graphical representation of the settings. The picture below shows the µVision Configuration Wizard view in MDK:

+
+config_wizard.png +
+RTX_Config.h in Configuration Wizard View
+

Alternatively one can provide configuration options using the compiler command line.

+

For example one can customize the used tick frequency to 100us by (overwriting) the configuration using

+
cc -DOS_TICK_FREQ=100
+

+System Configuration

+

The system configuration covers system-wide settings for the global memory pool, tick frequency, ISR event buffer and round-robin thread switching.

+

System Configuration Options

+
+config_wizard_system.png +
+RTX_Config.h: System Configuration
+ + + + + + + + + + + + + + + +
Name #define Description
Global Dynamic Memory size [bytes] OS_DYNAMIC_MEM_SIZE Defines the combined global dynamic memory size for the Global Memory Pool. Default value is 4096. Value range is [0-1073741824] bytes, in multiples of 8 bytes.
Kernel Tick Frequency (Hz) OS_TICK_FREQ Defines base time unit for delays and timeouts in Hz. Default: 1000Hz = 1ms period.
Round-Robin Thread switching OS_ROBIN_ENABLE Enables Round-Robin Thread switching.
Round-Robin Timeout OS_ROBIN_TIMEOUT Defines how long a thread will execute before a thread switch. Default value is 5. Value range is [1-1000].
ISR FIFO Queue OS_ISR_FIFO_QUEUE RTOS Functions called from ISR store requests to this buffer. Default value is 16 entries. Value range is [4-256] entries in multiples of 4.
Object Memory usage counters OS_OBJ_MEM_USAGE Enables object memory usage counters to evaluate the maximum memory pool requirements individually for each RTOS object type.
+

+Global dynamic memory

+

Refer to Global Memory Pool.

+

+Round-Robin Thread Switching

+

RTX5 may be configured to use round-robin multitasking thread switching. Round-robin allows quasi-parallel execution of several threads of the same priority. Threads are not really executed concurrently, but are scheduled where the available CPU time is divided into time slices and RTX5 assigns a time slice to each thread. Because the time slice is typically short (only a few milliseconds), it appears as though threads execute simultaneously.

+

Round-robin thread switching functions as follows:

+
    +
  • the tick is preloaded with the timeout value when a thread switch occurs
  • +
  • the tick is decremented (if not already zero) each system tick if the same thread is still executing
  • +
  • when the tick reaches 0 it indicates that a timeout has occurred. If there is another thread ready with the same priority, then the system switches to that thread and the tick is preloaded with timeout again.
  • +
+

In other words, threads execute for the duration of their time slice (unless a thread's time slice is given up). Then, RTX switches to the next thread that is in READY state and has the same priority. If no other thread with the same priority is ready to run, the current running thread resumes it execution.

+
Note
When switching to higher priority threads, the round-robin timeout value is reset.
+

Round-Robin multitasking is controlled with the #define OS_ROBIN_ENABLE. The time slice period is configured (in RTX timer ticks) with the #define OS_ROBIN_TIMEOUT.

+

+ISR FIFO Queue

+

The RTX functions (Calls from Interrupt Service Routines), when called from and interrupt handler, store the request type and optional parameter to the ISR FIFO queue buffer to be processed later, after the interrupt handler exits.

+

The scheduler is activated immediately after the IRQ handler has finished its execution to process the requests stored to the FIFO queue buffer. The required size of this buffer depends on the number of functions that are called within the interrupt handler. An insufficient queue size will be caught by osRtxErrorNotify with error code osRtxErrorISRQueueOverflow.

+

+Object Memory Usage Counters

+

Object memory usage counters help to evaluate the maximum memory pool requirements for each object type, just like stack watermarking does for threads. The initial setup starts with a global memory pool for all object types. Consecutive runs of the application with object memory usage counters enabled, help to introduce object specific memory pools for each object type. Normally, this is required for applications that require a functional safety certification as global memory pools are not allowed in this case.

+

+Thread Configuration

+

The RTX5 provides several parameters to configure the Thread Management functions.

+

Thread Configuration Options

+
+config_wizard_threads.png +
+RTX_Config.h: Thread Configuration
+


+

+ + + + + + + + + + + + + + + + + + + + + + + +
Option #define Description
Object specific Memory allocation OS_THREAD_OBJ_MEM Enables object specific memory allocation. See Object-specific Memory Pools.
Number of user Threads OS_THREAD_NUM Defines maximum number of user threads that can be active at the same time. Applies to user threads with system provided memory for control blocks. Default value is 1. Value range is [1-1000].
Number of user Threads with default Stack size OS_THREAD_DEF_STACK_NUM Defines maximum number of user threads with default stack size and applies to user threads with 0 stack size specified. Value range is [0-1000].
Total Stack size [bytes] for user Threads with user-provided Stack size OS_THREAD_USER_STACK_SIZE Defines the combined stack size for user threads with user-provided stack size. Default value is 0. Value range is [0-1073741824] Bytes, in multiples of 8.
Default Thread Stack size [bytes] OS_STACK_SIZE Defines stack size for threads with zero stack size specified. Default value is 200. Value range is [96-1073741824] Bytes, in multiples of 8.
Idle Thread Stack size [bytes] OS_IDLE_THREAD_STACK_SIZE Defines stack size for Idle thread. Default value is 200. Value range is [72-1073741824] bytes, in multiples of 8.
Idle Thread TrustZone Module ID OS_IDLE_THREAD_TZ_MOD_ID Defines the TrustZone Module ID the Idle Thread shall use. This needs to be set to a non-zero value if the Idle Thread need to call secure functions. Default value is 0.
Stack overrun checking OS_STACK_CHECK Enable stack overrun checks at thread switch.
Stack usage watermark OS_STACK_WATERMARK Initialize thread stack with watermark pattern for analyzing stack usage. Enabling this option increases significantly the execution time of thread creation.
Processor mode for Thread execution OS_PRIVILEGE_MODE Controls the processor mode. Default value is Privileged mode. Value range is [0=Unprivileged; 1=Privileged] mode.
+

+Configuration of Thread Count and Stack Space

+

The RTX5 kernel uses a separate stack space for each thread and provides two methods for defining the stack requirements:

+
    +
  • Static allocation: when osThreadAttr_t::stack_mem and osThreadAttr_t::stack_size specify a memory area which is used for the thread stack. Attention: The stack memory provided must be 64-bit aligned, i.e. by using uint64_t for declaration.
  • +
  • Dynamic allocation: when osThreadAttr_t is NULL or osThreadAttr_t::stack_mem is NULL, the system allocates the stack memory from:
      +
    • Object-specific Memory Pool (default Stack size) when "Object specific Memory allocation" is enabled and "Number of + user Threads with default Stack size" is not 0 and osThreadAttr_t::stack_size is 0 (or osThreadAttr_t is NULL).
    • +
    • Object-specific Memory Pool (user-provided Stack size) when "Object specific Memory allocation" is enabled and "Total + Stack size for user..." is not 0 and osThreadAttr_t::stack_size is not 0.
    • +
    • Global Memory Pool when "Object specific Memory allocation" is disabled or (osThreadAttr_t::stack_size is not 0 and "Total Stack size for user..." is 0) or (osThreadAttr_t::stack_size is 0 and "Number of user Threads with default Stack size" is 0).
    • +
    +
  • +
+

osThreadAttr_t is a parameter of the function osThreadNew.

+
Note
Before the RTX kernel is started by the osKernelStart() function, the main stack defined in startup_device.s is used. The main stack is also used for:
    +
  • user application calls to RTX functions in thread mode using SVC calls
  • +
  • interrupt/exception handlers.
  • +
+
+

+Stack Overflow Checking

+

RTX5 implements a software stack overflow checking that traps stack overruns. Stack is used for return addresses and automatic variables. Extensive usage or incorrect stack configuration may cause a stack overflow. Software stack overflow checking is controlled with the define OS_STACK_CHECK.

+

If a stack overflow is detected, the function osRtxErrorNotify with error code osRtxErrorStackUnderflow is called. By default, this function is implemented as an endless loop and will practically stop code execution.

+

+Stack Usage Watermark

+

RTX5 initializes thread stack with a watermark pattern (0xCC) when a thread is created. This allows the debugger to determine the maximum stack usage for each thread. It is typically used during development but removed from the final application. Stack usage watermark is controlled with the define OS_STACK_WATERMARK.

+

Enabling this option significantly increases the execution time of osThreadNew (depends on thread stack size).

+

+Processor Mode for Thread Execution

+

RTX5 allows to execute threads in unprivileged or privileged processor mode. The processor mode is controlled with the define OS_PRIVILEGE_MODE.

+

In unprivileged processor mode, the application software:

+
    +
  • has limited access to the MSR and MRS instructions, and cannot use the CPS instruction.
  • +
  • cannot access the system timer, NVIC, or system control block.
  • +
  • might have restricted access to memory or peripherals.
  • +
+

In privileged processor mode, the application software can use all the instructions and has access to all resources.

+

+Timer Configuration

+

RTX5 provides several parameters to configure the Timer Management functions.

+

Timer Configuration Options

+
+config_wizard_timer.png +
+RTX_Config.h: Timer Configuration
+ + + + + + + + + + + + + + + +
Name #define Description
Object specific Memory allocation OS_TIMER_OBJ_MEM Enables object specific memory allocation.
Number of Timer objects OS_TIMER_NUM Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is [1-1000].
Timer Thread Priority OS_TIMER_THREAD_PRIO Defines priority for timer thread. Default value is 40. Value range is [8-48], in multiples of 8. The numbers have the following priority correlation: 8=Low; 16=Below Normal; 24=Normal; 32=Above Normal; 40=High; 48=Realtime
Timer Thread Stack size [bytes] OS_TIMER_THREAD_STACK_SIZE Defines stack size for Timer thread. May be set to 0 when timers are not used. Default value is 200. Value range is [0-1073741824], in multiples of 8.
Timer Thread TrustZone Module ID OS_TIMER_THREAD_TZ_MOD_ID Defines the TrustZone Module ID the Timer Thread shall use. This needs to be set to a non-zero value if any Timer Callbacks need to call secure functions. Default value is 0.
Timer Callback Queue entries OS_TIMER_CB_QUEUE Number of concurrent active timer callback functions. May be set to 0 when timers are not used. Default value is 4. Value range is [0-256].
+

+Object-specific memory allocation

+

See Object-specific Memory Pools.

+

+User Timer Thread

+

The RTX5 function osRtxTimerThread executes callback functions when a time period expires. The priority of the timer subsystem within the complete RTOS system is inherited from the priority of the osRtxTimerThread. This is configured by OS_TIMER_THREAD_PRIO. Stack for callback functions is supplied by osRtxTimerThread. OS_TIMER_THREAD_STACK_SIZE must satisfy the stack requirements of the callback function with the highest stack usage.

+

+Event Flags Configuration

+

RTX5 provides several parameters to configure the Event Flags functions.

+

Event Configuration Options

+
+config_wizard_eventFlags.png +
+RTX_Config.h: Event Flags Configuration
+ + + + + + + +
Name #define Description
Object specific Memory allocation OS_EVFLAGS_OBJ_MEM Enables object specific memory allocation. See Object-specific Memory Pools.
Number of Event Flags objects OS_EVFLAGS_NUM Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is [1-1000].
+

+Object-specific memory allocation

+

When object-specific memory is used, the pool size for all Event objects is specified by OS_EVFLAGS_NUM. Refer to Object-specific Memory Pools.

+

+Mutex Configuration

+

RTX5 provides several parameters to configure the Mutex Management functions.

+

Mutex Configuration Options

+
+config_wizard_mutex.png +
+RTX_Config.h: Mutex Configuration
+ + + + + + + +
Name #define Description
Object specific Memory allocation OS_MUTEX_OBJ_MEM Enables object specific memory allocation. See Object-specific Memory Pools.
Number of Mutex objects OS_MUTEX_NUM Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is [1-1000].
+

+Object-specific Memory Allocation

+

When object-specific memory is used, the pool size for all Mutex objects is specified by OS_MUTEX_NUM. Refer to Object-specific Memory Pools.

+

+Semaphore Configuration

+

RTX5 provides several parameters to configure the Semaphores functions.

+

Semaphore Configuration Options

+
+config_wizard_semaphore.png +
+RTX_Config.h: Semaphore Configuration
+ + + + + + + +
Name #define Description
Object specific Memory allocation OS_SEMAPHORE_OBJ_MEM Enables object specific memory allocation. See Object-specific Memory Pools.
Number of Semaphore objects OS_SEMAPHORE_NUM Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is [1-1000].
+

+Object-specific memory allocation

+

When Object-specific Memory is used, the pool size for all Semaphore objects is specified by OS_SEMAPHORE_NUM. Refer to Object-specific Memory Pools.

+

+Memory Pool Configuration

+

RTX5 provides several parameters to configure the Memory Pool functions.

+

Memory Pool Configuration Options

+
+config_wizard_memPool.png +
+RTX_Config.h: Memory Pool Configuration
+ + + + + + + + + +
Name #define Description
Object specific Memory allocation OS_MEMPOOL_OBJ_MEM Enables object specific memory allocation. See Object-specific Memory Pools.
Number of Memory Pool objects OS_MEMPOOL_NUM Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is [1-1000].
Data Storage Memory size [bytes] OS_MEMPOOL_DATA_SIZE Defines the combined data storage memory size. Applies to objects with system provided memory for data storage. Default value is 0. Value range is [0-1073741824], in multiples of 8.
+

+Object-specific memory allocation

+

When object-specific memory is used, the number of pools for all MemoryPool objects is specified by OS_MEMPOOL_NUM. The total storage size reserved for all pools is configured in OS_MEMPOOL_DATA_SIZE. Refer to Object-specific Memory Pools.

+

+Message Queue Configuration

+

RTX5 provides several parameters to configure the Message Queue functions.

+

MessageQueue Configuration Options

+
+config_wizard_msgQueue.png +
+RTX_Config.h: Message Queue Configuration
+ + + + + + + + + +
Name #define Description
Object specific Memory allocation OS_MSGQUEUE_OBJ_MEM Enables object specific memory allocation. See Object-specific Memory Pools.
Number of Message Queue objects OS_MSGQUEUE_NUM Defines maximum number of objects that can be active at the same time. Applies to objects with system provided memory for control blocks. Value range is [1-1000].
Data Storage Memory size [bytes] OS_MSGQUEUE_DATA_SIZE Defines the combined data storage memory size. Applies to objects with system provided memory for data storage. Default value is 0. Value range is [0-1073741824], in multiples of 8.
+

+Object-specific memory allocation

+

When Object-specific Memory is used, the number of queues for all Message Queue objects is specified by OS_MSGQUEUE_NUM. The total storage size reserved for all queues is configured in OS_MSGQUEUE_DATA_SIZE. Refer to Object-specific Memory Pools.

+

+Event Recorder Configuration

+

This section describes the configuration settings for the Event Recorder annotations. The usage requires the source variant of RTX5; refer to Add Event Recorder Visibility for more information.

+

+Global Configuration

+

Initialize Event Recorder during the osKernelInitialize and optionally start event recording.

+
+config_wizard_evtrecGlobIni.png +
+RTX_Config.h: Initialization and filter setup configuration
+


+

+ + + + + + + +
Name #define Description
Global Initialization OS_EVR_INIT Initialize Event Recorder during osKernelInitialize.
Start Recording OS_EVR_START Start event recording after initialization.
+
Note
    +
  • If Global Initialization (OS_EVR_INIT) is set, an explicit call to EventRecorderInitialize is not required.
  • +
  • If Start Recording (OS_EVR_START) is set, an explicit call to EventRecorderStart is not required. You may call the function EventRecorderStop to stop recording.
  • +
+
+

Global Event Filter Setup

+

These event filter settings are applied to all software component numbers, including MDK middleware and user components.

+
+config_wizard_evtrecGlobEvtFiltSetup.png +
+RTX_Config.h: Global Event Filter Setup
+


+

+ + + + + + + + + + + +
Name #define Description
Error events OS_EVR_LEVEL Enable error events.
API function call events OS_EVR_LEVEL Enable API function call events.
Operation events OS_EVR_LEVEL Enable operation events.
Detailed operation events OS_EVR_LEVEL Enable detailed operation events.
+
Note
You may disable event recording for specific software components by calling the function EventRecorderDisable.
+

RTOS Event Filter Setup

+

These event filter settings are applied to specific RTX component groups with sub-options for:

+
    +
  • Error events
  • +
  • API function call events
  • +
  • Operation events
  • +
  • Detailed operation events
  • +
+

The generation of events must be enabled as explained under RTOS Event Generation.

+
+config_wizard_evtrecRTOSEvtFilterSetup.png +
+RTX_Config.h: RTOS Event Filter Setup
+


+

+ + + + + + + + + + + + + + + + + + + + + +
Name #define Description
Memory Management OS_EVR_MEMORY_FILTER Filter enable for Memory Management events.
Kernel OS_EVR_KERNEL_FILTER Filter enable for Kernel events.
Thread OS_EVR_THREAD_FILTER Filter enable for Thread events.
Timer OS_EVR_TIMER_FILTER Filter enable for Timer events.
Event Flags OS_EVR_EVFLAGS_FILTER Filter enable for Event Flags events.
Mutex OS_EVR_MUTEX_FILTER Filter enable for Mutex events.
Semaphore OS_EVR_SEMAPHORE_FILTER Filter enable for Semaphore events.
Memory Pool OS_EVR_MEMPOOL_FILTER Filter enable for Memory Pool events.
Message Queue OS_EVR_MSGQUEUE_FILTER Filter enable for Message Queue events.
+

+RTOS Event Generation

+

Enable the event generation for specific RTX component groups. This requires the RTX source variant (refer to Add Event Recorder Visibility for more information).

+
+config_wizard_evtrecGeneration.png +
+RTX_Config.h: Event generation configuration
+


+

+ + + + + + + + + + + + + + + + + + + + + +
Name #define Description
Memory Management OS_EVR_MEMORY Enables Memory Management events recording.
Kernel OS_EVR_KERNEL Enables Kernel events recording.
Thread OS_EVR_THREAD Enables Thread events recording.
Timer OS_EVR_TIMER Enables Timer events recording.
Event Flags OS_EVR_EVFLAGS Enables Event Flags events recording.
Mutex OS_EVR_MUTEX Enables Mutex events recording.
Semaphore OS_EVR_SEMAPHORE Enables Semaphore events recording.
Memory Pool OS_EVR_MEMPOOL Enables Memory Pool events recording.
Message Queue OS_EVR_MSGQUEUE Enables Message Queue events recording.
+
Note
If event generation for a component is disabled, the code that generates the related events is not included. Thus, filters for this component will have no effect and the debugger is unable to display any events for the related component group.
+

+Manual event configuration

+

To disable the generation of events for a specific RTX API call, use the following #define settings (from rtx_evrt.h) and add these manually to the RTX_Config.h file:

+

Memory events
+EVR_RTX_MEMORY_INIT_DISABLE, EVR_RTX_MEMORY_ALLOC_DISABLE, EVR_RTX_MEMORY_FREE_DISABLE, EVR_RTX_MEMORY_BLOCK_INIT_DISABLE, EVR_RTX_MEMORY_BLOCK_ALLOC_DISABLE, EVR_RTX_MEMORY_BLOCK_FREE_DISABLE

+

Kernel events
+EVR_RTX_KERNEL_ERROR_DISABLE, EVR_RTX_KERNEL_INITIALIZE_DISABLE, EVR_RTX_KERNEL_INITIALIZED_DISABLE, EVR_RTX_KERNEL_GET_INFO_DISABLE, EVR_RTX_KERNEL_INFO_RETRIEVED_DISABLE, EVR_RTX_KERNEL_GET_STATE_DISABLE, EVR_RTX_KERNEL_START_DISABLE, EVR_RTX_KERNEL_STARTED_DISABLE, EVR_RTX_KERNEL_LOCK_DISABLE, EVR_RTX_KERNEL_LOCKED_DISABLE, EVR_RTX_KERNEL_UNLOCK_DISABLE, EVR_RTX_KERNEL_UNLOCKED_DISABLE, EVR_RTX_KERNEL_RESTORE_LOCK_DISABLE, EVR_RTX_KERNEL_LOCK_RESTORED_DISABLE, EVR_RTX_KERNEL_SUSPEND_DISABLE, EVR_RTX_KERNEL_SUSPENDED_DISABLE, EVR_RTX_KERNEL_RESUME_DISABLE, EVR_RTX_KERNEL_RESUMED_DISABLE, EVR_RTX_KERNEL_GET_TICK_COUNT_DISABLE, EVR_RTX_KERNEL_GET_TICK_FREQ_DISABLE, EVR_RTX_KERNEL_GET_SYS_TIMER_COUNT_DISABLE, EVR_RTX_KERNEL_GET_SYS_TIMER_FREQ_DISABLE

+

Thread events
+EVR_RTX_THREAD_ERROR_DISABLE, EVR_RTX_THREAD_NEW_DISABLE, EVR_RTX_THREAD_CREATED_DISABLE, EVR_RTX_THREAD_GET_NAME_DISABLE, EVR_RTX_THREAD_GET_ID_DISABLE, EVR_RTX_THREAD_GET_STATE_DISABLE, EVR_RTX_THREAD_GET_STACK_SIZE_DISABLE, EVR_RTX_THREAD_GET_STACK_SPACE_DISABLE, EVR_RTX_THREAD_SET_PRIORITY_DISABLE, EVR_RTX_THREAD_GET_PRIORITY_DISABLE, EVR_RTX_THREAD_YIELD_DISABLE, EVR_RTX_THREAD_SUSPEND_DISABLE, EVR_RTX_THREAD_SUSPENDED_DISABLE, EVR_RTX_THREAD_RESUME_DISABLE, EVR_RTX_THREAD_RESUMED_DISABLE, EVR_RTX_THREAD_DETACH_DISABLE, EVR_RTX_THREAD_DETACHED_DISABLE, EVR_RTX_THREAD_JOIN_DISABLE, EVR_RTX_THREAD_JOIN_PENDING_DISABLE, EVR_RTX_THREAD_JOINED_DISABLE, EVR_RTX_THREAD_BLOCKED_DISABLE, EVR_RTX_THREAD_UNBLOCKED_DISABLE, EVR_RTX_THREAD_PREEMPTED_DISABLE, EVR_RTX_THREAD_SWITCHED_DISABLE, EVR_RTX_THREAD_EXIT_DISABLE, EVR_RTX_THREAD_TERMINATE_DISABLE, EVR_RTX_THREAD_DESTROYED_DISABLE, EVR_RTX_THREAD_GET_COUNT_DISABLE, EVR_RTX_THREAD_ENUMERATE_DISABLE

+

Thread flag events
+EVR_RTX_THREAD_FLAGS_SET_DISABLE, EVR_RTX_THREAD_FLAGS_SET_DONE_DISABLE, EVR_RTX_THREAD_FLAGS_CLEAR_DISABLE, EVR_RTX_THREAD_FLAGS_CLEAR_DONE_DISABLE, EVR_RTX_THREAD_FLAGS_GET_DISABLE, EVR_RTX_THREAD_FLAGS_WAIT_DISABLE, EVR_RTX_THREAD_FLAGS_WAIT_PENDING_DISABLE, EVR_RTX_THREAD_FLAGS_WAIT_TIMEOUT_DISABLE, EVR_RTX_THREAD_FLAGS_WAIT_COMPLETED_DISABLE, EVR_RTX_THREAD_FLAGS_WAIT_NOT_COMPLETED_DISABLE

+

Generic wait events
+EVR_RTX_THREAD_DELAY_DISABLE, EVR_RTX_THREAD_DELAY_UNTIL_DISABLE, EVR_RTX_THREAD_DELAY_COMPLETED_DISABLE

+

Timer events
+EVR_RTX_TIMER_ERROR_DISABLE, EVR_RTX_TIMER_CALLBACK_DISABLE, EVR_RTX_TIMER_NEW_DISABLE, EVR_RTX_TIMER_CREATED_DISABLE, EVR_RTX_TIMER_GET_NAME_DISABLE, EVR_RTX_TIMER_START_DISABLE, EVR_RTX_TIMER_STARTED_DISABLE, EVR_RTX_TIMER_STOP_DISABLE, EVR_RTX_TIMER_STOPPED_DISABLE, EVR_RTX_TIMER_IS_RUNNING_DISABLE, EVR_RTX_TIMER_DELETE_DISABLE, EVR_RTX_TIMER_DESTROYED_DISABLE

+

Event flag events
+EVR_RTX_EVENT_FLAGS_ERROR_DISABLE, EVR_RTX_EVENT_FLAGS_NEW_DISABLE, EVR_RTX_EVENT_FLAGS_CREATED_DISABLE, EVR_RTX_EVENT_FLAGS_GET_NAME_DISABLE, EVR_RTX_EVENT_FLAGS_SET_DISABLE, EVR_RTX_EVENT_FLAGS_SET_DONE_DISABLE, EVR_RTX_EVENT_FLAGS_CLEAR_DISABLE, EVR_RTX_EVENT_FLAGS_CLEAR_DONE_DISABLE, EVR_RTX_EVENT_FLAGS_GET_DISABLE, EVR_RTX_EVENT_FLAGS_WAIT_DISABLE, EVR_RTX_EVENT_FLAGS_WAIT_PENDING_DISABLE, EVR_RTX_EVENT_FLAGS_WAIT_TIMEOUT_DISABLE, EVR_RTX_EVENT_FLAGS_WAIT_COMPLETED_DISABLE, EVR_RTX_EVENT_FLAGS_WAIT_NOT_COMPLETED_DISABLE, EVR_RTX_EVENT_FLAGS_DELETE_DISABLE, EVR_RTX_EVENT_FLAGS_DESTROYED_DISABLE

+

Mutex events
+EVR_RTX_MUTEX_ERROR_DISABLE, EVR_RTX_MUTEX_NEW_DISABLE, EVR_RTX_MUTEX_CREATED_DISABLE, EVR_RTX_MUTEX_GET_NAME_DISABLE, EVR_RTX_MUTEX_ACQUIRE_DISABLE, EVR_RTX_MUTEX_ACQUIRE_PENDING_DISABLE, EVR_RTX_MUTEX_ACQUIRE_TIMEOUT_DISABLE, EVR_RTX_MUTEX_ACQUIRED_DISABLE, EVR_RTX_MUTEX_NOT_ACQUIRED_DISABLE, EVR_RTX_MUTEX_RELEASE_DISABLE, EVR_RTX_MUTEX_RELEASED_DISABLE, EVR_RTX_MUTEX_GET_OWNER_DISABLE, EVR_RTX_MUTEX_DELETE_DISABLE, EVR_RTX_MUTEX_DESTROYED_DISABLE

+

Semaphore events
+EVR_RTX_SEMAPHORE_ERROR_DISABLE, EVR_RTX_SEMAPHORE_NEW_DISABLE, EVR_RTX_SEMAPHORE_CREATED_DISABLE, EVR_RTX_SEMAPHORE_GET_NAME_DISABLE, EVR_RTX_SEMAPHORE_ACQUIRE_DISABLE, EVR_RTX_SEMAPHORE_ACQUIRE_PENDING_DISABLE, EVR_RTX_SEMAPHORE_ACQUIRE_TIMEOUT_DISABLE, EVR_RTX_SEMAPHORE_ACQUIRED_DISABLE, EVR_RTX_SEMAPHORE_NOT_ACQUIRED_DISABLE, EVR_RTX_SEMAPHORE_RELEASE_DISABLE, EVR_RTX_SEMAPHORE_RELEASED_DISABLE, EVR_RTX_SEMAPHORE_GET_COUNT_DISABLE, EVR_RTX_SEMAPHORE_DELETE_DISABLE, EVR_RTX_SEMAPHORE_DESTROYED_DISABLE

+

Memory pool events
+EVR_RTX_MEMORY_POOL_ERROR_DISABLE, EVR_RTX_MEMORY_POOL_NEW_DISABLE, EVR_RTX_MEMORY_POOL_CREATED_DISABLE, EVR_RTX_MEMORY_POOL_GET_NAME_DISABLE, EVR_RTX_MEMORY_POOL_ALLOC_DISABLE, EVR_RTX_MEMORY_POOL_ALLOC_PENDING_DISABLE, EVR_RTX_MEMORY_POOL_ALLOC_TIMEOUT_DISABLE, EVR_RTX_MEMORY_POOL_ALLOCATED_DISABLE, EVR_RTX_MEMORY_POOL_ALLOC_FAILED_DISABLE, EVR_RTX_MEMORY_POOL_FREE_DISABLE, EVR_RTX_MEMORY_POOL_DEALLOCATED_DISABLE, EVR_RTX_MEMORY_POOL_FREE_FAILED_DISABLE, EVR_RTX_MEMORY_POOL_GET_CAPACITY_DISABLE, EVR_RTX_MEMORY_POOL_GET_BLOCK_SZIE_DISABLE, EVR_RTX_MEMORY_POOL_GET_COUNT_DISABLE, EVR_RTX_MEMORY_POOL_GET_SPACE_DISABLE, EVR_RTX_MEMORY_POOL_DELETE_DISABLE, EVR_RTX_MEMORY_POOL_DESTROYED_DISABLE

+

Message queue events
+EVR_RTX_MESSAGE_QUEUE_ERROR_DISABLE, EVR_RTX_MESSAGE_QUEUE_NEW_DISABLE, EVR_RTX_MESSAGE_QUEUE_CREATED_DISABLE, EVR_RTX_MESSAGE_QUEUE_GET_NAME_DISABLE, EVR_RTX_MESSAGE_QUEUE_PUT_DISABLE, EVR_RTX_MESSAGE_QUEUE_PUT_PENDING_DISABLE, EVR_RTX_MESSAGE_QUEUE_PUT_TIMEOUT_DISABLE, EVR_RTX_MESSAGE_QUEUE_INSERT_PENDING_DISABLE, EVR_RTX_MESSAGE_QUEUE_INSERTED_DISABLE, EVR_RTX_MESSAGE_QUEUE_NOT_INSERTED_DISABLE, EVR_RTX_MESSAGE_QUEUE_GET_DISABLE, EVR_RTX_MESSAGE_QUEUE_GET_PENDING_DISABLE, EVR_RTX_MESSAGE_QUEUE_GET_TIMEOUT_DISABLE, EVR_RTX_MESSAGE_QUEUE_RETRIEVED_DISABLE, EVR_RTX_MESSAGE_QUEUE_NOT_RETRIEVED_DISABLE, EVR_RTX_MESSAGE_QUEUE_GET_CAPACITY_DISABLE, EVR_RTX_MESSAGE_QUEUE_GET_MSG_SIZE_DISABLE, EVR_RTX_MESSAGE_QUEUE_GET_COUNT_DISABLE, EVR_RTX_MESSAGE_QUEUE_GET_SPACE_DISABLE, EVR_RTX_MESSAGE_QUEUE_RESET_DISABLE, EVR_RTX_MESSAGE_QUEUE_RESET_DONE_DISABLE, EVR_RTX_MESSAGE_QUEUE_DELETE_DISABLE, EVR_RTX_MESSAGE_QUEUE_DESTROYED_DISABLE

+
+
+ + + + diff --git a/docs/RTOS2/html/config_wizard.png b/docs/RTOS2/html/config_wizard.png new file mode 100644 index 0000000..578946d Binary files /dev/null and b/docs/RTOS2/html/config_wizard.png differ diff --git a/docs/RTOS2/html/config_wizard_eventFlags.png b/docs/RTOS2/html/config_wizard_eventFlags.png new file mode 100644 index 0000000..949cd75 Binary files /dev/null and b/docs/RTOS2/html/config_wizard_eventFlags.png differ diff --git a/docs/RTOS2/html/config_wizard_evtrecGeneration.png b/docs/RTOS2/html/config_wizard_evtrecGeneration.png new file mode 100644 index 0000000..f5bd1d7 Binary files /dev/null and b/docs/RTOS2/html/config_wizard_evtrecGeneration.png differ diff --git a/docs/RTOS2/html/config_wizard_evtrecGlobEvtFiltSetup.png b/docs/RTOS2/html/config_wizard_evtrecGlobEvtFiltSetup.png new file mode 100644 index 0000000..c65bd3f Binary files /dev/null and b/docs/RTOS2/html/config_wizard_evtrecGlobEvtFiltSetup.png differ diff --git a/docs/RTOS2/html/config_wizard_evtrecGlobIni.png b/docs/RTOS2/html/config_wizard_evtrecGlobIni.png new file mode 100644 index 0000000..1f2007f Binary files /dev/null and b/docs/RTOS2/html/config_wizard_evtrecGlobIni.png differ diff --git a/docs/RTOS2/html/config_wizard_evtrecRTOSEvtFilterSetup.png b/docs/RTOS2/html/config_wizard_evtrecRTOSEvtFilterSetup.png new file mode 100644 index 0000000..dab696f Binary files /dev/null and b/docs/RTOS2/html/config_wizard_evtrecRTOSEvtFilterSetup.png differ diff --git a/docs/RTOS2/html/config_wizard_memPool.png b/docs/RTOS2/html/config_wizard_memPool.png new file mode 100644 index 0000000..ecf9d5b Binary files /dev/null and b/docs/RTOS2/html/config_wizard_memPool.png differ diff --git a/docs/RTOS2/html/config_wizard_msgQueue.png b/docs/RTOS2/html/config_wizard_msgQueue.png new file mode 100644 index 0000000..528287c Binary files /dev/null and b/docs/RTOS2/html/config_wizard_msgQueue.png differ diff --git a/docs/RTOS2/html/config_wizard_mutex.png b/docs/RTOS2/html/config_wizard_mutex.png new file mode 100644 index 0000000..07ad063 Binary files /dev/null and b/docs/RTOS2/html/config_wizard_mutex.png differ diff --git a/docs/RTOS2/html/config_wizard_semaphore.png b/docs/RTOS2/html/config_wizard_semaphore.png new file mode 100644 index 0000000..03d2064 Binary files /dev/null and b/docs/RTOS2/html/config_wizard_semaphore.png differ diff --git a/docs/RTOS2/html/config_wizard_system.png b/docs/RTOS2/html/config_wizard_system.png new file mode 100644 index 0000000..6502d6e Binary files /dev/null and b/docs/RTOS2/html/config_wizard_system.png differ diff --git a/docs/RTOS2/html/config_wizard_threads.png b/docs/RTOS2/html/config_wizard_threads.png new file mode 100644 index 0000000..f7870fd Binary files /dev/null and b/docs/RTOS2/html/config_wizard_threads.png differ diff --git a/docs/RTOS2/html/config_wizard_timer.png b/docs/RTOS2/html/config_wizard_timer.png new file mode 100644 index 0000000..1722acb Binary files /dev/null and b/docs/RTOS2/html/config_wizard_timer.png differ diff --git a/docs/RTOS2/html/cre_rtx_proj.html b/docs/RTOS2/html/cre_rtx_proj.html new file mode 100644 index 0000000..97a0115 --- /dev/null +++ b/docs/RTOS2/html/cre_rtx_proj.html @@ -0,0 +1,208 @@ + + + + + +Create an RTX5 Project +CMSIS-RTOS2: Create an RTX5 Project + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Create an RTX5 Project
+
+
+

The steps to create a microcontroller application using RTX5 are:

+
    +
  • Create a new project and select a microcontroller device.
  • +
  • In the Manage Run-Time Environment window, select CMSIS::CORE and CMSIS::RTOS2 (API)::Keil RTX5. You can choose to either add RTX as a library (Variant: Library) or to add the full source code (Variant: Source - required if using the Event Recorder):

    +
    +manage_rte_output.png +
    +
  • +
  • If the Validation Output requires other components to be present, try to use the Resolve button.
  • +
  • Click OK. In the Project window, you will see the files that have been automatically added to you project, such as RTX_Config.h, RTX_Config.c, the library or the source code files, as well as the system and startup files:

    +
    +project_window.png +
    +
  • +
  • If using the Variant: Source as statet above, you have to assure to use at least C99 compiler mode (Project Options -> C/C++ -> C99 Mode).
  • +
  • You can add template files to the project by right-clicking on Source Group 1 and selecting Add New Item to 'Source Group 1'. In the new window, click on User Code Template. On the right-hand side you will see all available template files for CMSIS-RTOS RTX:

    +
    +add_item.png +
    +
  • +
  • Configure RTX5 to the application's needs using the RTX_Config.h file.
  • +
+

+Additional requirements for RTX on Cortex-A

+

Cortex-A based microcontrollers are less unified with respect to the interrupt and timer implementations used compared to M-class devices. Thus RTX requires additional components when an A-class device is used, namely IRQ Controller (API) and OS Tick (API) implementations.

+
+manage_rte_cortex-a.png +
+

The default implementations provided along with CMSIS are

+ +

For devices not implementing GIC, PTIM nor GTIM please refer to the according device family pack and select the proper implementations.

+

+Using Interrupts on Cortex-M

+

On Cortex-M processors, the RTX5 kernel uses the following interrupt exceptions. The table below also lists the priorities that must be assigned to these interrupts.

+ + + + + + + + + +
Handler Priority Interrupt/Exception
SysTick lowest Kernel system timer interrupt to generate periodic timer ticks
PendSV lowest PendSV (request for system-level service) when calling certain RTX functions from Handler mode
SCV lowest+1 Supervisor Call used to enter the RTOS kernel from Thread mode
+

Other device interrupts can be used without limitation. For Arm Cortex-M3/M4/M7/M23/M33 processors, interrupts are never disabled by RTX Kernel.

+

Usage of interrupt priority grouping

+
    +
  • The interrupt priority grouping should be configured using the CMSIS-Core function NVIC_SetPriorityGrouping before calling the function osKernelStart(). The RTX kernel uses the priority group value to setup the priority for SysTick and PendSV interrupts.
  • +
  • The RTX kernel sets the priority for the interrupts/exceptions listed in above table and uses the lowest two priority levels.
  • +
  • Do not change the priority used by the RTX kernel. If this cannot be avoided, ensure that the preempt priority of SysTick/PendSV is lower than SVC.
  • +
  • Permitted priority group values are 0 to 6. The priority group value 7 will cause RTX to fail as there is only one priority level available.
  • +
  • The main stack is used to run the RTX functionality. It is therefore required to configure sufficient stack for the RTX kernel execution.
  • +
+

Code Example

+
osKernelInitialize(); // initialize RTX
+
NVIC_SetPriorityGrouping (3); // setup priority grouping
+
tread_id = osThreadNew(tread_func, NULL, NULL); // create some threads
+
osKernelStart (); // start RTX kernel
+

+Add support for RTX specific functions

+

If you require some of the RTX specific functions in your application code, #include the header file rtx_os.h. This enables low-power and tick-less operation modes.

+

+Add Event Recorder Visibility

+

RTX5 interfaces to the Event Recorder to provide event information which helps you to understand and analyze the operation.

+
    +
  • To use the Event Recorder together with RTX5, select the software component Compiler:Event Recorder.
  • +
  • Select the Source variant of the software component CMSIS:RTOS2 (API):Keil RTX5.
    +event_recorder_rte.png +
    +Component selection for Event Recorder
    +
  • +
  • Enable the related settings under Event Recorder Configuration.
  • +
  • Build the application code and download it to the debug hardware.
  • +
+

Once the target application generates event information, it can be viewed in the µVision debugger using the Event Recorder.

+
+
+ + + + diff --git a/docs/RTOS2/html/creating_RTX5_LIB.html b/docs/RTOS2/html/creating_RTX5_LIB.html new file mode 100644 index 0000000..f1fdc95 --- /dev/null +++ b/docs/RTOS2/html/creating_RTX5_LIB.html @@ -0,0 +1,142 @@ + + + + + +Building the RTX5 Library +CMSIS-RTOS2: Building the RTX5 Library + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Building the RTX5 Library
+
+
+

The CMSIS Pack contains a µVision project for building the complete set of RTX5 libraries. This project can also be used as a reference for building the RTX5 libraries using a tool-chain of your choice.

+
    +
  1. Open the project RTX_CM.uvprojx from the pack folder CMSIS/RTOS2/RTX/Library/ARM/MDK in µVision.
  2. +
  3. Select the project target that matches your device's processor core.
    + The project provides target configuration for all supported Cortex-M targets supported by RTX5.
  4. +
  5. You can find out about the required preprocessor defines in the dialogs Options for Target - C/C++ and Options for Target - Asm. Note the need to use at least the C99 compiler mode when building RTX from source.
  6. +
  7. From the Project window you find the list of source files required for a complete library build.
  8. +
  9. Build the library of your choice using Project - Build Target (or press F7).
  10. +
+
+own_lib_projwin.png +
+Project with files for Armv8-M Mainline
+
+
+ + + + diff --git a/docs/RTOS2/html/dir_002cf2dd0f795cc97a8d08cc3fa6e516.html b/docs/RTOS2/html/dir_002cf2dd0f795cc97a8d08cc3fa6e516.html new file mode 100644 index 0000000..45811c2 --- /dev/null +++ b/docs/RTOS2/html/dir_002cf2dd0f795cc97a8d08cc3fa6e516.html @@ -0,0 +1,135 @@ + + + + + +RTX Directory Reference +CMSIS-RTOS2: RTX Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
RTX Directory Reference
+
+
+ + + + +

+Directories

directory  Include
 
+
+
+ + + + diff --git a/docs/RTOS2/html/dir_061ad8d12aa7dc7d03c29112cd6e086d.html b/docs/RTOS2/html/dir_061ad8d12aa7dc7d03c29112cd6e086d.html new file mode 100644 index 0000000..9f9645a --- /dev/null +++ b/docs/RTOS2/html/dir_061ad8d12aa7dc7d03c29112cd6e086d.html @@ -0,0 +1,137 @@ + + + + + +Include Directory Reference +CMSIS-RTOS2: Include Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Include Directory Reference
+
+
+ + + + + + +

+Files

file  rtx_evr.h
 
file  rtx_os.h
 
+
+
+ + + + diff --git a/docs/RTOS2/html/dir_899d076620cccde5757c1c1ca5de63cc.html b/docs/RTOS2/html/dir_899d076620cccde5757c1c1ca5de63cc.html new file mode 100644 index 0000000..9147c80 --- /dev/null +++ b/docs/RTOS2/html/dir_899d076620cccde5757c1c1ca5de63cc.html @@ -0,0 +1,136 @@ + + + + + +Source Directory Reference +CMSIS-RTOS2: Source Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.2 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Source Directory Reference
+
+
+ + + + + +

+Files

file  os_systick.c
 CMSIS OS Tick SysTick implementation.
 
+
+
+ + + + diff --git a/docs/RTOS2/html/dir_a43355fbfff7212ac2193223a73d577c.html b/docs/RTOS2/html/dir_a43355fbfff7212ac2193223a73d577c.html new file mode 100644 index 0000000..58bcdab --- /dev/null +++ b/docs/RTOS2/html/dir_a43355fbfff7212ac2193223a73d577c.html @@ -0,0 +1,137 @@ + + + + + +RTOS2 Directory Reference +CMSIS-RTOS2: RTOS2 Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
RTOS2 Directory Reference
+
+
+ + + + + + +

+Directories

directory  Include
 
directory  RTX
 
+
+
+ + + + diff --git a/docs/RTOS2/html/dir_f5870d36a7061bb81e1a64a750696f2d.html b/docs/RTOS2/html/dir_f5870d36a7061bb81e1a64a750696f2d.html new file mode 100644 index 0000000..98a9cc2 --- /dev/null +++ b/docs/RTOS2/html/dir_f5870d36a7061bb81e1a64a750696f2d.html @@ -0,0 +1,138 @@ + + + + + +Include Directory Reference +CMSIS-RTOS2: Include Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Include Directory Reference
+
+
+ + + + + + + +

+Files

file  cmsis_os2.h
 
file  os_tick.h
 CMSIS OS Tick header file.
 
+
+
+ + + + diff --git a/docs/RTOS2/html/dirstructfiles5.html b/docs/RTOS2/html/dirstructfiles5.html new file mode 100644 index 0000000..aa37888 --- /dev/null +++ b/docs/RTOS2/html/dirstructfiles5.html @@ -0,0 +1,200 @@ + + + + + +Directory Structure and File Overview +CMSIS-RTOS2: Directory Structure and File Overview + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.2 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Directory Structure and File Overview
+
+
+

The following section provides an overview of the directory structure and the files that are relevant for the user's for CMSIS-RTOS RTX v5. The following directory references start below the CMSIS pack installation path, for example ARM/CMSIS/version/CMSIS/RTOS2.

+

+RTX v5 Directory Structure

+

The CMSIS-RTOS RTX v5 is delivered in source code and several examples are provided.

+ + + + + + + + + + + + + + + + + + + + + + + +
Directory Content
Include The include file for CMSIS-RTOS API v2. cmsis_os2.h is the central include file for user applications.
Template CMSIS-RTOS API template source and header file.
RTX Directory with RTX specific files and folders. Also contains the component viewer description file.
RTX/Config CMSIS-RTOS RTX configuration files RTX_Config.h and RTX_Config.c.
RTX/Examples Example projects that can be directly used in development tools.
RTX/Include RTX v5 specific include files.
RTX/Include1 CMSIS-RTOS v1 API header file.
RTX/Library Pre-built libraries (see next table for details).
RTX/Source Source code that can be used with ARMCC and GCC.
RTX/Template User code templates for creating application projects with CMSIS-RTOS RTX v5.
+

+RTX v5 Library Files

+

The CMSIS-RTOS RTX Library is available pre-compiled for ARMCC and GCC compilers and supports all Cortex-M processor variants in every configuration, including ARM Cortex-M23 and Cortex-M33.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Library File Processor Configuration
Library/ARM/RTX_CM0.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M0 and M1, little-endian.
Library/ARM/RTX_CM3.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M3, M4, and M7 without FPU, little-endian.
Library/ARM/RTX_CM4F.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M4 and M7 with FPU, little-endian.
Library/ARM/RTX_V8MB.lib CMSIS-RTOS RTX Library for ARMCC Compiler, ARMv8-M baseline.
Library/ARM/RTX_V8MBN.lib CMSIS-RTOS RTX Library for ARMCC Compiler, ARMv8-M baseline, non-secure.
Library/ARM/RTX_V8MM.lib CMSIS-RTOS RTX Library for ARMCC Compiler, ARMv8-M mainline.
Library/ARM/RTX_V8MMF.lib CMSIS-RTOS RTX Library for ARMCC Compiler, ARMv8-M mainline with FPU.
Library/ARM/RTX_V8MMFN.lib CMSIS-RTOS RTX Library for ARMCC Compiler, ARMv8-M mainline with FPU, non-secure.
Library/ARM/RTX_V8MMN.lib CMSIS-RTOS RTX Library for ARMCC Compiler, ARMv8-M mainline, non-secure.
Library/GCC/libRTX_CM0.a CMSIS-RTOS libRTX Library for GCC Compiler, Cortex-M0 and M1, little-endian.
Library/GCC/libRTX_CM3.a CMSIS-RTOS libRTX Library for GCC Compiler, Cortex-M3, M4, and M7 without FPU, little-endian.
Library/GCC/libRTX_CM4F.a CMSIS-RTOS libRTX Library for GCC Compiler, Cortex-M4 and M7 with FPU, little-endian.
Library/GCC/libRTX_V8MB.a CMSIS-RTOS libRTX Library for GCC Compiler, ARMv8-M baseline.
Library/GCC/libRTX_V8MBN.a CMSIS-RTOS libRTX Library for GCC Compiler, ARMv8-M baseline, non-secure.
Library/GCC/libRTX_V8MM.a CMSIS-RTOS libRTX Library for GCC Compiler, ARMv8-M mainline.
Library/GCC/libRTX_V8MMF.a CMSIS-RTOS libRTX Library for GCC Compiler, ARMv8-M mainline with FPU.
Library/GCC/libRTX_V8MMFN.a CMSIS-RTOS libRTX Library for GCC Compiler, ARMv8-M mainline with FPU, non-secure.
Library/GCC/libRTX_V8MMN.a CMSIS-RTOS libRTX Library for GCC Compiler, ARMv8-M mainline, non-secure.
+
+
+ + + + diff --git a/docs/RTOS2/html/doxygen.css b/docs/RTOS2/html/doxygen.css new file mode 100644 index 0000000..e42f4ea --- /dev/null +++ b/docs/RTOS2/html/doxygen.css @@ -0,0 +1,1366 @@ +/* The standard CSS for doxygen 1.8.6 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #869DCC; + color: #344C7C; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3C578D; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4565A3; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9BAED4; + color: #ffffff; + border: 1px double #859CCB; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE6; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE6; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE6; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9BAED4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #496AAC; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4565A3; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4565A3; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A7B8DA; + border-left: 1px solid #A7B8DA; + border-right: 1px solid #A7B8DA; + padding: 6px 0px 6px 0px; + color: #243556; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A7B8DA; + border-left: 1px solid #A7B8DA; + border-right: 1px solid #A7B8DA; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #718CC2; + border-top:1px solid #5273B5; + border-left:1px solid #5273B5; + border-right:1px solid #C4CFE6; + border-bottom:1px solid #C4CFE6; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3C578D; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #293C62; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2C4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #364F80; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A7B8DA; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A7B8DA; + border-bottom: 1px solid #A7B8DA; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A7B8DA; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #243556; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A7B8DA; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#899FCD; + border:solid 1px #C2CDE5; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#354D7D; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #273A5E; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6784BE; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#354D7D; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE6; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5273B5; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #8FA4CF; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#324976; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4565A3; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/docs/RTOS2/html/doxygen.png b/docs/RTOS2/html/doxygen.png new file mode 100644 index 0000000..a3c4ad7 Binary files /dev/null and b/docs/RTOS2/html/doxygen.png differ diff --git a/docs/RTOS2/html/dynsections.js b/docs/RTOS2/html/dynsections.js new file mode 100644 index 0000000..ed092c7 --- /dev/null +++ b/docs/RTOS2/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} +function toggleLevel(level) +{ + $('table.directory tr').each(function(){ + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + +File List +CMSIS-RTOS2: File List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+ + + + + +
o*cmsis_os2.h
o*os_tick.hCMSIS OS Tick header file
o*rtx_evr.h
\*rtx_os.h
+
+
+
+ + + + diff --git a/docs/RTOS2/html/ftv2blank.png b/docs/RTOS2/html/ftv2blank.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/RTOS2/html/ftv2blank.png differ diff --git a/docs/RTOS2/html/ftv2cl.png b/docs/RTOS2/html/ftv2cl.png new file mode 100644 index 0000000..5e43099 Binary files /dev/null and b/docs/RTOS2/html/ftv2cl.png differ diff --git a/docs/RTOS2/html/ftv2doc.png b/docs/RTOS2/html/ftv2doc.png new file mode 100644 index 0000000..10d4c5e Binary files /dev/null and b/docs/RTOS2/html/ftv2doc.png differ diff --git a/docs/RTOS2/html/ftv2folderclosed.png b/docs/RTOS2/html/ftv2folderclosed.png new file mode 100644 index 0000000..46e4b0d Binary files /dev/null and b/docs/RTOS2/html/ftv2folderclosed.png differ diff --git a/docs/RTOS2/html/ftv2folderopen.png b/docs/RTOS2/html/ftv2folderopen.png new file mode 100644 index 0000000..ebcc288 Binary files /dev/null and b/docs/RTOS2/html/ftv2folderopen.png differ diff --git a/docs/RTOS2/html/ftv2lastnode.png b/docs/RTOS2/html/ftv2lastnode.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/RTOS2/html/ftv2lastnode.png differ diff --git a/docs/RTOS2/html/ftv2link.png b/docs/RTOS2/html/ftv2link.png new file mode 100644 index 0000000..10d4c5e Binary files /dev/null and b/docs/RTOS2/html/ftv2link.png differ diff --git a/docs/RTOS2/html/ftv2mlastnode.png b/docs/RTOS2/html/ftv2mlastnode.png new file mode 100644 index 0000000..9de16b8 Binary files /dev/null and b/docs/RTOS2/html/ftv2mlastnode.png differ diff --git a/docs/RTOS2/html/ftv2mnode.png b/docs/RTOS2/html/ftv2mnode.png new file mode 100644 index 0000000..9de16b8 Binary files /dev/null and b/docs/RTOS2/html/ftv2mnode.png differ diff --git a/docs/RTOS2/html/ftv2mo.png b/docs/RTOS2/html/ftv2mo.png new file mode 100644 index 0000000..609e79d Binary files /dev/null and b/docs/RTOS2/html/ftv2mo.png differ diff --git a/docs/RTOS2/html/ftv2node.png b/docs/RTOS2/html/ftv2node.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/RTOS2/html/ftv2node.png differ diff --git a/docs/RTOS2/html/ftv2ns.png b/docs/RTOS2/html/ftv2ns.png new file mode 100644 index 0000000..93b7f7e Binary files /dev/null and b/docs/RTOS2/html/ftv2ns.png differ diff --git a/docs/RTOS2/html/ftv2plastnode.png b/docs/RTOS2/html/ftv2plastnode.png new file mode 100644 index 0000000..b9bf462 Binary files /dev/null and b/docs/RTOS2/html/ftv2plastnode.png differ diff --git a/docs/RTOS2/html/ftv2pnode.png b/docs/RTOS2/html/ftv2pnode.png new file mode 100644 index 0000000..b9bf462 Binary files /dev/null and b/docs/RTOS2/html/ftv2pnode.png differ diff --git a/docs/RTOS2/html/ftv2splitbar.png b/docs/RTOS2/html/ftv2splitbar.png new file mode 100644 index 0000000..0dfe691 Binary files /dev/null and b/docs/RTOS2/html/ftv2splitbar.png differ diff --git a/docs/RTOS2/html/ftv2vertline.png b/docs/RTOS2/html/ftv2vertline.png new file mode 100644 index 0000000..63c605b Binary files /dev/null and b/docs/RTOS2/html/ftv2vertline.png differ diff --git a/docs/RTOS2/html/functionOverview.html b/docs/RTOS2/html/functionOverview.html new file mode 100644 index 0000000..a4c2eca --- /dev/null +++ b/docs/RTOS2/html/functionOverview.html @@ -0,0 +1,140 @@ + + + + + +Function Overview +CMSIS-RTOS2: Function Overview + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Function Overview
+
+
+

CMSIS-RTOS2 provides multiple API interfaces:

+
    +
  • CMSIS-RTOS C API v2 is the new C function interface that supports dynamic object creation and Armv8-M (Arm Cortex-M23 and Cortex-M33).
  • +
  • CMSIS-RTOS C API v1 is a C function API that is backward compatible with CMSIS-RTOS v1.
  • +
  • CMSIS-RTOS C++ API is a C++ class function API (future extension).
  • +
+

It is possible to intermix the different API variants in the same application and even in the same C/C++ source module. However, the functions of the CMSIS-RTOS C API v1 may be deprecated in future versions of CMSIS-RTOS.

+

CMSIS-RTOS2 defines also a generic system timer interface that works across the supported Arm Cortex processors:

+
    +
  • OS Tick API is the interface to a kernel system timer.
  • +
+
+
+ + + + diff --git a/docs/RTOS2/html/functionOverview.js b/docs/RTOS2/html/functionOverview.js new file mode 100644 index 0000000..1834187 --- /dev/null +++ b/docs/RTOS2/html/functionOverview.js @@ -0,0 +1,9 @@ +var functionOverview = +[ + [ "CMSIS-RTOS C API v2", "rtos_api2.html", [ + [ "Common Design Concepts", "rtos_api2.html#rtos_api2_basics", null ], + [ "Function Reference", "rtos_api2.html#rtos_api2_functions", null ] + ] ], + [ "CMSIS-RTOS C++ API", "rtos_apicpp.html", null ], + [ "OS Tick API", "rtos_os_tick_api.html", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/functions.html b/docs/RTOS2/html/functions.html new file mode 100644 index 0000000..2bd605c --- /dev/null +++ b/docs/RTOS2/html/functions.html @@ -0,0 +1,560 @@ + + + + + +Data Fields +CMSIS-RTOS2: Data Fields + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+
+
+ + + + diff --git a/docs/RTOS2/html/functions_vars.html b/docs/RTOS2/html/functions_vars.html new file mode 100644 index 0000000..5c079ba --- /dev/null +++ b/docs/RTOS2/html/functions_vars.html @@ -0,0 +1,560 @@ + + + + + +Data Fields - Variables +CMSIS-RTOS2: Data Fields - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+
+
+ + + + diff --git a/docs/RTOS2/html/genRTOS2IF.html b/docs/RTOS2/html/genRTOS2IF.html new file mode 100644 index 0000000..33583aa --- /dev/null +++ b/docs/RTOS2/html/genRTOS2IF.html @@ -0,0 +1,212 @@ + + + + + +Generic RTOS Interface +CMSIS-RTOS2: Generic RTOS Interface + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Generic RTOS Interface
+
+
+

CMSIS-RTOS2 is a generic API that is agnostic of the underlying RTOS kernel. Application programmers call CMSIS-RTOS2 API functions in the user code to ensure maximum portability from one RTOS to another. Middleware using CMSIS-RTOS2 API takes advantages of this approach by avoiding unnecessary porting efforts.

+
+API_Structure.png +
+CMSIS-RTOS API Structure
+

A typical CMSIS-RTOS2 API implementation interfaces to an existing real-time kernel. The CMSIS-RTOS2 API provides the following attributes and functionalities:

+
    +
  • Function names, identifiers, and parameters are descriptive and easy to understand. The functions are powerful and flexible which reduces the number of functions exposed to the user.
  • +
  • Thread Management allows you to define, create, and control threads.
  • +
  • Interrupt Service Routines (ISR) can call some CMSIS-RTOS functions. When a CMSIS-RTOS function cannot be called from an ISR context, it rejects the invocation and returns an error code.
  • +
  • Three different event types support communication between multiple threads and/or ISR:
      +
    • Thread Flags: may be used to indicate specific conditions to a thread.
    • +
    • Event Flags: may be used to indicate events to a thread or ISR.
    • +
    • Messages: can be sent to a thread or an ISR. Messages are buffered in a queue.
    • +
    +
  • +
  • Mutex Management and Semaphores are incorporated.
  • +
  • CPU time can be scheduled with the following functionalities:
      +
    • A timeout parameter is incorporated in many CMSIS-RTOS functions to avoid system lockup. When a timeout is specified, the system waits until a resource is available or an event occurs. While waiting, other threads are scheduled.
    • +
    • The osDelay and osDelayUntil functions put a thread into the WAITING state for a specified period of time.
    • +
    • The osThreadYield provides co-operative thread switching and passes execution to another thread of the same priority.
    • +
    +
  • +
  • Timer Management functions are used to trigger the execution of functions.
  • +
+

The CMSIS-RTOS2 API is designed to optionally incorporate multi-processor systems and/or access protection via the Cortex-M Memory Protection Unit (MPU).

+

In some RTOS implementations threads may execute on different processors, thus message queues may reside in shared memory resources.

+

The CMSIS-RTOS2 API encourages the software industry to evolve existing RTOS implementations. RTOS implementations can be different and optimized in various aspects towards the Cortex-M processors. Optional features may be for example

+
    +
  • Support of the Cortex-M Memory Protection Unit (MPU).
  • +
  • Support of multi-processor systems.
  • +
  • Support of a DMA controller.
  • +
  • Deterministic context switching.
  • +
  • Round-robin context switching.
  • +
  • Deadlock avoidance, for example with priority inversion.
  • +
  • Zero interrupt latency by using Armv7-M instructions LDREX and STREX.
  • +
+

+cmsis_os2.h header file

+

The file cmsis_os2.h is a standard header file that interfaces to every CMSIS-RTOS2 compliant real-time operating systems (RTOS). Each implementation is provided the same cmsis_os2.h which defines the interface to the CMSIS-RTOS C API v2.

+

Using the cmsis_os2.h along with dynamic object allocation allows to create source code or libraries that require no modifications when using on a different CMSIS-RTOS2 implementation.

+

+Using a CMSIS-RTOS2 Implementation

+

A CMSIS-RTOS2 component may be provided as library or source code (the picture below shows a library). A CMSIS-based application is extended with RTOS functionality by adding a CMSIS-RTOS2 component (and typically some configuration files). The cmsis_os2.h header file gives access to RTOS API functions and is the only interface header required when dynamic object allocation is used. This enables portable application that works with every RTOS kernel event without re-compilation of the source code when the kernel is changed.

+

Static object allocation requires access to RTOS object control block definitions. An implementation specific header file (rtos.h in the picture below) provides access to such definitions. The section For RTX v5 these definitions are provided in the header file rtx_os.h that contains this definitions for RTX v5.

+
+CMSIS_RTOS_Files.png +
+CMSIS-RTOS File Structure
+

Once the files are added to a project, the user can start working with the CMSIS-RTOS functions. A code example is provided below:

+

Code Example

+
/*----------------------------------------------------------------------------
+
* CMSIS-RTOS 'main' function template
+
*---------------------------------------------------------------------------*/
+
+
#include "RTE_Components.h"
+
#include CMSIS_device_header
+
#include "cmsis_os2.h"
+
+
/*----------------------------------------------------------------------------
+
* Application main thread
+
*---------------------------------------------------------------------------*/
+
void app_main (void *argument) {
+
+
// ...
+
for (;;) {}
+
}
+
+
int main (void) {
+
+
// System Initialization
+
SystemCoreClockUpdate();
+
#ifdef RTE_Compiler_EventRecorder
+
// Initialize and start Event Recorder
+
EventRecorderInitialize(EventRecordError, 1U);
+
#endif
+
// ...
+
+
osKernelInitialize(); // Initialize CMSIS-RTOS
+
osThreadNew(app_main, NULL, NULL); // Create application main thread
+
osKernelStart(); // Start thread execution
+
for (;;) {}
+
}
+
+
+ + + + diff --git a/docs/RTOS2/html/globals.html b/docs/RTOS2/html/globals.html new file mode 100644 index 0000000..30315f6 --- /dev/null +++ b/docs/RTOS2/html/globals.html @@ -0,0 +1,153 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- _ -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_defs.html b/docs/RTOS2/html/globals_defs.html new file mode 100644 index 0000000..d71ae6f --- /dev/null +++ b/docs/RTOS2/html/globals_defs.html @@ -0,0 +1,447 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- _ -

+ + +

- i -

+ + +

- o -

+ + +

- t -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_e.html b/docs/RTOS2/html/globals_e.html new file mode 100644 index 0000000..02defbf --- /dev/null +++ b/docs/RTOS2/html/globals_e.html @@ -0,0 +1,651 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- e -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_enum.html b/docs/RTOS2/html/globals_enum.html new file mode 100644 index 0000000..7d59388 --- /dev/null +++ b/docs/RTOS2/html/globals_enum.html @@ -0,0 +1,152 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
+ + + + diff --git a/docs/RTOS2/html/globals_eval.html b/docs/RTOS2/html/globals_eval.html new file mode 100644 index 0000000..0428d0c --- /dev/null +++ b/docs/RTOS2/html/globals_eval.html @@ -0,0 +1,375 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- o -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_func.html b/docs/RTOS2/html/globals_func.html new file mode 100644 index 0000000..b1bc66f --- /dev/null +++ b/docs/RTOS2/html/globals_func.html @@ -0,0 +1,648 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- e -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_func_o.html b/docs/RTOS2/html/globals_func_o.html new file mode 100644 index 0000000..e2de554 --- /dev/null +++ b/docs/RTOS2/html/globals_func_o.html @@ -0,0 +1,420 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- o -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_func_p.html b/docs/RTOS2/html/globals_func_p.html new file mode 100644 index 0000000..75430dd --- /dev/null +++ b/docs/RTOS2/html/globals_func_p.html @@ -0,0 +1,150 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/docs/RTOS2/html/globals_func_s.html b/docs/RTOS2/html/globals_func_s.html new file mode 100644 index 0000000..8bc8268 --- /dev/null +++ b/docs/RTOS2/html/globals_func_s.html @@ -0,0 +1,153 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- s -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_i.html b/docs/RTOS2/html/globals_i.html new file mode 100644 index 0000000..d7eddf4 --- /dev/null +++ b/docs/RTOS2/html/globals_i.html @@ -0,0 +1,156 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- i -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_o.html b/docs/RTOS2/html/globals_o.html new file mode 100644 index 0000000..0427010 --- /dev/null +++ b/docs/RTOS2/html/globals_o.html @@ -0,0 +1,1002 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- o -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_p.html b/docs/RTOS2/html/globals_p.html new file mode 100644 index 0000000..1afcca5 --- /dev/null +++ b/docs/RTOS2/html/globals_p.html @@ -0,0 +1,153 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- p -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_s.html b/docs/RTOS2/html/globals_s.html new file mode 100644 index 0000000..09aabf4 --- /dev/null +++ b/docs/RTOS2/html/globals_s.html @@ -0,0 +1,156 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- s -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_t.html b/docs/RTOS2/html/globals_t.html new file mode 100644 index 0000000..a1a0a75 --- /dev/null +++ b/docs/RTOS2/html/globals_t.html @@ -0,0 +1,156 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- t -

+
+
+ + + + diff --git a/docs/RTOS2/html/globals_type.html b/docs/RTOS2/html/globals_type.html new file mode 100644 index 0000000..8e2c4c4 --- /dev/null +++ b/docs/RTOS2/html/globals_type.html @@ -0,0 +1,170 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
+ + + + diff --git a/docs/RTOS2/html/globals_vars.html b/docs/RTOS2/html/globals_vars.html new file mode 100644 index 0000000..edb7f43 --- /dev/null +++ b/docs/RTOS2/html/globals_vars.html @@ -0,0 +1,164 @@ + + + + + +Globals +CMSIS-RTOS2: Globals + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS.html b/docs/RTOS2/html/group__CMSIS__RTOS.html new file mode 100644 index 0000000..e547e40 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS.html @@ -0,0 +1,178 @@ + + + + + +CMSIS-RTOS API v2 +CMSIS-RTOS2: CMSIS-RTOS API v2 + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
CMSIS-RTOS API v2
+
+
+ +

C interface of CMSIS-RTOS C API v2 defined in cmsis_os2.h. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Content

 Memory Management
 Information about memory management possibilities.
 
 Kernel Information and Control
 Provides version/system information and starts/controls the RTOS Kernel.
 
 Thread Management
 Define, create, and control thread functions.
 
 Thread Flags
 Synchronize threads using flags.
 
 Event Flags
 Synchronize threads using event flags.
 
 Generic Wait Functions
 Wait for a certain period of time.
 
 Timer Management
 Create and control timer and timer callback functions.
 
 Mutex Management
 Synchronize resource access using Mutual Exclusion (Mutex).
 
 Semaphores
 Access shared resources simultaneously from different threads.
 
 Memory Pool
 Manage thread-safe fixed-size blocks of dynamic memory.
 
 Message Queue
 Exchange messages between threads in a FIFO-like operation.
 
 Definitions
 Constants and enumerations used by many CMSIS-RTOS functions.
 
+

Description

+

C interface of CMSIS-RTOS C API v2 defined in cmsis_os2.h

+

The CMSIS-RTOS2 is a generic API layer that interfaces to an RTOS kernel.

+

The complete API interface is defined in the cmsis_os2.h header file. When using dynamic memory allocation for objects, source code or libraries require no modifications when using on a different CMSIS-RTOS2 implementation.

+

Refer to Common Design Concepts for further details.

+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS.js b/docs/RTOS2/html/group__CMSIS__RTOS.js new file mode 100644 index 0000000..9fed12b --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS.js @@ -0,0 +1,15 @@ +var group__CMSIS__RTOS = +[ + [ "Memory Management", "group__CMSIS__RTOS__MemoryMgmt.html", null ], + [ "Kernel Information and Control", "group__CMSIS__RTOS__KernelCtrl.html", "group__CMSIS__RTOS__KernelCtrl" ], + [ "Thread Management", "group__CMSIS__RTOS__ThreadMgmt.html", "group__CMSIS__RTOS__ThreadMgmt" ], + [ "Thread Flags", "group__CMSIS__RTOS__ThreadFlagsMgmt.html", "group__CMSIS__RTOS__ThreadFlagsMgmt" ], + [ "Event Flags", "group__CMSIS__RTOS__EventFlags.html", "group__CMSIS__RTOS__EventFlags" ], + [ "Generic Wait Functions", "group__CMSIS__RTOS__Wait.html", "group__CMSIS__RTOS__Wait" ], + [ "Timer Management", "group__CMSIS__RTOS__TimerMgmt.html", "group__CMSIS__RTOS__TimerMgmt" ], + [ "Mutex Management", "group__CMSIS__RTOS__MutexMgmt.html", "group__CMSIS__RTOS__MutexMgmt" ], + [ "Semaphores", "group__CMSIS__RTOS__SemaphoreMgmt.html", "group__CMSIS__RTOS__SemaphoreMgmt" ], + [ "Memory Pool", "group__CMSIS__RTOS__PoolMgmt.html", "group__CMSIS__RTOS__PoolMgmt" ], + [ "Message Queue", "group__CMSIS__RTOS__Message.html", "group__CMSIS__RTOS__Message" ], + [ "Definitions", "group__CMSIS__RTOS__Definitions.html", "group__CMSIS__RTOS__Definitions" ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__Definitions.html b/docs/RTOS2/html/group__CMSIS__RTOS__Definitions.html new file mode 100644 index 0000000..6ad3530 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__Definitions.html @@ -0,0 +1,297 @@ + + + + + +Definitions +CMSIS-RTOS2: Definitions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
+
+
+ +

Constants and enumerations used by many CMSIS-RTOS functions. +More...

+ + + + + +

+Content

 Flags Functions Error Codes
 Constants used by Thread Flags and Event Flags to return error codes.
 
+ + + + + + + + + + + + + +

+Macros

#define osWaitForever   0xFFFFFFFFU
 Wait forever timeout value. More...
 
#define osFlagsWaitAny   0x00000000U
 Wait for any flag (default). More...
 
#define osFlagsWaitAll   0x00000001U
 Wait for all flags. More...
 
#define osFlagsNoClear   0x00000002U
 Do not clear flags which have been specified to wait for. More...
 
+ + + + +

+Enumerations

enum  osStatus_t {
+  osOK = 0, +
+  osError = -1, +
+  osErrorTimeout = -2, +
+  osErrorResource = -3, +
+  osErrorParameter = -4, +
+  osErrorNoMemory = -5, +
+  osErrorISR = -6, +
+  osStatusReserved = 0x7FFFFFFF +
+ }
 Status code values returned by CMSIS-RTOS functions. More...
 
+

Description

+

The following constants and enumerations are used by many CMSIS-RTOS function calls.

+

Macro Definition Documentation

+ +
+
+ + + + +
#define osWaitForever   0xFFFFFFFFU
+
+

A special Timeout Value that informs the RTOS to wait infinite until a resource becomes available. It applies to the following functions:

+ + +
+
+ +
+
+ + + + +
#define osFlagsWaitAny   0x00000000U
+
+

Reference:

+ + +
+
+ +
+
+ + + + +
#define osFlagsWaitAll   0x00000001U
+
+

Reference:

+ + +
+
+ +
+
+ + + + +
#define osFlagsNoClear   0x00000002U
+
+

Reference:

+ + +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum osStatus_t
+
+

The osStatus_t enumeration defines the event status and error codes that are returned by many CMSIS-RTOS functions.

+ + + + + + + + + +
Enumerator
osOK  +

Operation completed successfully.

+
osError  +

Unspecified RTOS error: run-time error but no other error message fits.

+
osErrorTimeout  +

Operation not completed within the timeout period.

+
osErrorResource  +

Resource not available.

+
osErrorParameter  +

Parameter error.

+
osErrorNoMemory  +

System is out of memory: it was impossible to allocate or reserve memory for the operation.

+
osErrorISR  +

Not allowed in ISR context: the function cannot be called from interrupt service routines.

+
osStatusReserved  +

Prevents enum down-size compiler optimization.

+
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__Definitions.js b/docs/RTOS2/html/group__CMSIS__RTOS__Definitions.js new file mode 100644 index 0000000..c9b38ed --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__Definitions.js @@ -0,0 +1,18 @@ +var group__CMSIS__RTOS__Definitions = +[ + [ "Flags Functions Error Codes", "group__flags__error__codes.html", "group__flags__error__codes" ], + [ "osWaitForever", "group__CMSIS__RTOS__Definitions.html#ga9eb9a7a797a42e4b55eb171ecc609ddb", null ], + [ "osFlagsWaitAny", "group__CMSIS__RTOS__Definitions.html#ga18e63587b8450d5b8798b6f6ec04e012", null ], + [ "osFlagsWaitAll", "group__CMSIS__RTOS__Definitions.html#ga8b6f562736fbfb5428940e0c017dec24", null ], + [ "osFlagsNoClear", "group__CMSIS__RTOS__Definitions.html#gaade844a42237d8c37569d4d9b16b9f1c", null ], + [ "osStatus_t", "group__CMSIS__RTOS__Definitions.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813e", [ + [ "osOK", "cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea9e1c9e2550bb4de8969a935acffc968f", null ], + [ "osError", "cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eabb7b2d2c4efa66df42f1c10635467b09", null ], + [ "osErrorTimeout", "cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea913eb5df15ad85f8557eb3a456b56879", null ], + [ "osErrorResource", "cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea8fc5801e8b0482bdf22ad63a77f0155d", null ], + [ "osErrorParameter", "cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eac24adca6a5d072c9f01c32178ba0d109", null ], + [ "osErrorNoMemory", "cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eaf1fac0240218e51eb30a13da2f8aae81", null ], + [ "osErrorISR", "cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea21635bdc492d3094fe83027fa4a30e2f", null ], + [ "osStatusReserved", "cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea66cc9ce9106b508df0e4a733a55a439d", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__EventFlags.html b/docs/RTOS2/html/group__CMSIS__RTOS__EventFlags.html new file mode 100644 index 0000000..9d7271b --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__EventFlags.html @@ -0,0 +1,656 @@ + + + + + +Event Flags +CMSIS-RTOS2: Event Flags + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Synchronize threads using event flags. +More...

+ + + + + +

+Data Structures

struct  osEventFlagsAttr_t
 Attributes structure for event flags. More...
 
+ + + +

+Typedefs

typedef void * osEventFlagsId_t
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

osEventFlagsId_t osEventFlagsNew (const osEventFlagsAttr_t *attr)
 Create and Initialize an Event Flags object. More...
 
uint32_t osEventFlagsSet (osEventFlagsId_t ef_id, uint32_t flags)
 Set the specified Event Flags. More...
 
uint32_t osEventFlagsClear (osEventFlagsId_t ef_id, uint32_t flags)
 Clear the specified Event Flags. More...
 
uint32_t osEventFlagsGet (osEventFlagsId_t ef_id)
 Get the current Event Flags. More...
 
uint32_t osEventFlagsWait (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout)
 Wait for one or more Event Flags to become signaled. More...
 
osStatus_t osEventFlagsDelete (osEventFlagsId_t ef_id)
 Delete an Event Flags object. More...
 
const char * osEventFlagsGetName (osEventFlagsId_t ef_id)
 Get name of an Event Flags object. More...
 
+

Description

+

The event flags management functions in CMSIS-RTOS allow you to control or wait for event flags. Each signal has up to 31 event flags.

+

A thread

+
    +
  • can wait for event flags to be set (using osEventFlagsWait). Using this function, it enters the BLOCKED state.
  • +
  • may set one or more flags in any other given thread (using osEventFlagsSet).
  • +
  • may clear its own signals or the signals of other threads (using osEventFlagsClear).
  • +
+

When a thread wakes up and resumes execution, its signal flags are automatically cleared (unless event flags option osFlagsNoClear is specified).

+
Note
The functions osEventFlagsSet, osEventFlagsClear, osEventFlagsGet, and osEventFlagsWait can be called from Interrupt Service Routines.
+
+Refer to Event Flags Configuration for RTX5 configuration options.
+

Working with Events

+

Here is a simple example that shows how two thread can communicate with each others using event flags:

+
+simple_signal.png +
+Simple event communication
+

The following steps are required to use event flags:

+
    +
  1. In the thread that is supposed to send a event with id sig1_id, call the set function:
    osDelay (1000); // wait for 1 second
    +
    osEventFlagsSet (sig1_id, 0x0001U); // set the flag 0x0001U for event sig1_id
    +
  2. +
  3. In another thread (or threads) that are supposed to wait for the event, call the wait function:
    osEventFlagsWait (sig1_id, 0x0001U, NULL, osWaitForever); // wait forever for any flag
    +
  4. +
+

The following complete example code can be directly used with the "CMSIS-RTOS2 main template" and is also provided as a stand-alone template for RTX5:

+

Code Example

+
void Thread_EventSender (void *argument); // thread function 1
+
void Thread_EventReceiver (void *argument); // thread function 2
+
osThreadId_t tid_Thread_EventSender; // thread id 1
+
osThreadId_t tid_Thread_EventReceiver; // thread id 2
+
+
osEventFlagsId_t evt_id; // message queue id
+
+
#define FLAGS_MSK1 0x00000001ul
+
+
void app_main (void)
+
{
+
tid_Thread_EventSender = osThreadNew (Thread_EventSender, NULL, NULL);
+
if (tid_Thread_EventSender == NULL) {
+
; // do something
+
}
+
tid_Thread_EventReceiver = osThreadNew (Thread_EventReceiver, NULL, NULL);
+
if (tid_Thread_EventReceiver == NULL) {
+
; // do something
+
}
+
; // do something
+
}
+
+
void Thread_EventSender (void *argument)
+
{
+
evt_id = osEventFlagsNew(NULL);
+
while (1) {
+
osEventFlagsSet(evt_id, FLAGS_MSK1);
+
osDelay (1000); // suspend thread
+
}
+
}
+
+
void Thread_EventReceiver (void *argument)
+
{
+
uint32_t flags;
+
while (1) {
+
flags = osEventFlagsWait (evt_id,FLAGS_MSK1,osFlagsWaitAny, osWaitForever);
+
//handle event
+
}
+
}
+

Data Structure Documentation

+ +
+
+ + + + +
struct osEventFlagsAttr_t
+
+

Attributes to configure an event flag set.

+

Refer to Memory Management for details about usage of

+ +
+ + + + + + + + + + + + + +
Data Fields
+const char * +name +name of the event flags

Pointer to a string with a human readable name of the event object.
+Default: NULL.

+
+uint32_t +attr_bits +attribute bits

Reserved for future use (set to '0').
+Default: 0.

+
+void * +cb_mem +memory for control block

Pointer to a memory location for the event control block object. This can optionally be used for custom memory management systems.
+Default: NULL (uses kernel memory management).

+
+uint32_t +cb_size +size of provided memory for control block

The size of the memory block passed with cb_mem. Must be the size of an event control block object or larger.

+
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
osEventFlagsId_t
+
+

Event Flags ID identifies the event flags.

+

Returned by:

+ + +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
osEventFlagsId_t osEventFlagsNew (const osEventFlagsAttr_tattr)
+
+
Parameters
+ + +
[in]attrevent flags attributes; NULL: default values.
+
+
+
Returns
event flags ID for reference by other functions or NULL in case of error.
+

The function osEventFlagsNew creates a new event flags object that is used to send events across threads and returns the pointer to the event flags object identifier or NULL in case of an error. It can be safely called before the RTOS is started (call to osKernelStart), but not before it is initialized (call to osKernelInitialize).

+

The parameter attr sets the event flags attributes (refer to osEventFlagsAttr_t). Default attributes will be used if set to NULL, i.e. kernel memory allocation is used for the event control block.

+
Note
Cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h" // CMSIS RTOS header file
+
+
osEventFlagsId_t evt_id; // message queue id
+
+
void Thread_EventSender (void *argument)
+
{
+
evt_id = osEventFlagsNew(NULL);
+
while (1) {
+
osEventFlagsSet(evt_id, FLAGS_MSK1);
+
osThreadYield (); // suspend thread
+
}
+
}
+
+
void Thread_EventReceiver (void *argument)
+
{
+
uint32_t flags;
+
+
while (1) {
+
flags = osEventFlagsWait (evt_id,FLAGS_MSK1,osFlagsWaitAny, osWaitForever);
+
//handle event
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t osEventFlagsSet (osEventFlagsId_t ef_id,
uint32_t flags 
)
+
+
Parameters
+ + + +
[in]ef_idevent flags ID obtained by osEventFlagsNew.
[in]flagsspecifies the flags that shall be set.
+
+
+
Returns
event flags after setting or error code if highest bit set.
+

The function osEventFlagsSet sets the event flags specified by the parameter flags in an event flags object specified by parameter ef_id. All threads waiting for the flag set will be notified to resume from BLOCKED state. The function returns the event flags after setting or an error code (highest bit is set, refer to Flags Functions Error Codes).

+

Possible Flags Functions Error Codes return values:

+
    +
  • osFlagsErrorUnknown: Unspecified error.
  • +
  • osFlagsErrorResource: Event flags object specified by parameter ef_id is not ready to be used.
  • +
  • osFlagsErrorParameter: Parameter ef_id does not identify a valid event flags object or flags has highest bit set.
  • +
+
Note
This function may be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h" // CMSIS RTOS header file
+
+
osEventFlagsId_t evt_id; // message queue id
+
+
void Thread_EventSender (void *argument)
+
{
+
evt_id = osEventFlagsNew(NULL);
+
while (1) {
+
osEventFlagsSet(evt_id, FLAGS_MSK1);
+
osThreadYield (); // suspend thread
+
}
+
}
+
+
void Thread_EventReceiver (void *argument)
+
{
+
uint32_t flags;
+
+
while (1) {
+
flags = osEventFlagsWait (evt_id,FLAGS_MSK1,osFlagsWaitAny, osWaitForever);
+
//handle event
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t osEventFlagsClear (osEventFlagsId_t ef_id,
uint32_t flags 
)
+
+
Parameters
+ + + +
[in]ef_idevent flags ID obtained by osEventFlagsNew.
[in]flagsspecifies the flags that shall be cleared.
+
+
+
Returns
event flags before clearing or error code if highest bit set.
+

The function osEventFlagsClear clears the event flags specified by the parameter flags in an event flags object specified by parameter ef_id. The function returns the event flags before clearing or an error code (highest bit is set, refer to Flags Functions Error Codes).

+

Possible Flags Functions Error Codes return values:

+
    +
  • osFlagsErrorUnknown: Unspecified error.
  • +
  • osFlagsErrorResource: Event flags object specified by parameter ef_id is not ready to be used.
  • +
  • osFlagsErrorParameter: Parameter ef_id does not identify a valid event flags object or flags has highest bit set.
  • +
+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osEventFlagsGet (osEventFlagsId_t ef_id)
+
+
Parameters
+ + +
[in]ef_idevent flags ID obtained by osEventFlagsNew.
+
+
+
Returns
current event flags.
+

The function osEventFlagsGet returns the event flags currently set in an event flags object specified by parameter ef_id or 0 in case of an error.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t osEventFlagsWait (osEventFlagsId_t ef_id,
uint32_t flags,
uint32_t options,
uint32_t timeout 
)
+
+
Parameters
+ + + + + +
[in]ef_idevent flags ID obtained by osEventFlagsNew.
[in]flagsspecifies the flags to wait for.
[in]optionsspecifies flags options (osFlagsXxxx).
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+
Returns
event flags before clearing or error code if highest bit set.
+

The function osEventFlagsWait suspends the execution of the currently RUNNING thread until any or all event flags specified by the parameter flags in the event object specified by parameter ef_id are set. When these event flags are already set, the function returns instantly. Otherwise, the thread is put into the state BLOCKED.

+

The options parameter specifies the wait condition:

+ + + + + + + + + +
Option
osFlagsWaitAny Wait for any flag (default).
osFlagsWaitAll Wait for all flags.
osFlagsNoClear Do not clear flags which have been specified to wait for.
+

If osFlagsNoClear is set in the options osEventFlagsClear can be used to clear flags manually.

+

The parameter timeout specifies how long the system waits for event flags. While the system waits, the thread that is calling this function is put into the BLOCKED state. The parameter timeout can have the following values:

+
    +
  • when timeout is 0, the function returns instantly (i.e. try semantics).
  • +
  • when timeout is set to osWaitForever the function will wait for an infinite time until the event flags become available (i.e. wait semantics).
  • +
  • all other values specify a time in kernel ticks for a timeout (i.e. timed-wait semantics).
  • +
+

The function returns the event flags before clearing or an error code (highest bit is set, refer to Flags Functions Error Codes).

+

Possible Flags Functions Error Codes return values:

+
    +
  • osFlagsErrorUnknown: Unspecified error.
  • +
  • osFlagsErrorTimeout: The awaited flags has not been set during given timeout.
  • +
  • osFlagsErrorResource: Event flags object specified by parameter ef_id is not ready to be used.
  • +
  • osFlagsErrorParameter: Parameter ef_id does not identify a valid event flags object or flags has highest bit set.
  • +
+
Note
May be called from Interrupt Service Routines if the parameter timeout is set to 0.
+

Code Example

+
#include "cmsis_os2.h" // CMSIS RTOS header file
+
+
osEventFlagsId_t evt_id; // message queue id
+
+
void Thread_EventSender (void *argument)
+
{
+
evt_id = osEventFlagsNew(NULL);
+
while (1) {
+
osEventFlagsSet(evt_id, FLAGS_MSK1);
+
osThreadYield (); // suspend thread
+
}
+
}
+
+
void Thread_EventReceiver (void *argument)
+
{
+
uint32_t flags;
+
+
while (1) {
+
flags = osEventFlagsWait (evt_id,FLAGS_MSK1,osFlagsWaitAny, osWaitForever);
+
//handle event
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
osStatus_t osEventFlagsDelete (osEventFlagsId_t ef_id)
+
+
Parameters
+ + +
[in]ef_idevent flags ID obtained by osEventFlagsNew.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osEventFlagsDelete deletes the event flags object specified by parameter ef_id and releases the internal memory obtained for the event flags handling. After this call, the ef_id is no longer valid and cannot be used. This can cause starvation of threads that are waiting for flags of this event object. The ef_id may be created again using the function osEventFlagsNew.

+

Possible osStatus_t return values:

+
    +
  • osOK: the specified event flags object has been deleted.
  • +
  • osErrorISR: osEventFlagsDelete cannot be called from interrupt service routines.
  • +
  • osErrorParameter: the value of the parameter ef_id is incorrect.
  • +
  • osErrorResource: parameter ef_id is NULL or wrong.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
const char * osEventFlagsGetName (osEventFlagsId_t ef_id)
+
+
Parameters
+ + +
[in]ef_idevent flags ID obtained by osEventFlagsNew.
+
+
+
Returns
name as null-terminated string.
+

The function osEventFlagsGetName returns the pointer to the name string of the event flags object identified by parameter ef_id or NULL in case of an error.

+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
void EvtFlagsGetName_example (void) {
+
char id; // id of the event flags object
+
+ +
if (id == NULL) {
+
// Failed to get the event flags object name
+
}
+
}
+
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__EventFlags.js b/docs/RTOS2/html/group__CMSIS__RTOS__EventFlags.js new file mode 100644 index 0000000..d51031c --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__EventFlags.js @@ -0,0 +1,17 @@ +var group__CMSIS__RTOS__EventFlags = +[ + [ "osEventFlagsAttr_t", "group__CMSIS__RTOS__EventFlags.html#structosEventFlagsAttr__t", [ + [ "name", "group__CMSIS__RTOS__EventFlags.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__EventFlags.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__EventFlags.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__EventFlags.html#aa55a4335d12dc2785dc00fdc292d1159", null ] + ] ], + [ "osEventFlagsId_t", "group__CMSIS__RTOS__EventFlags.html#gafdbab933146d6d81d7cca7287e267a50", null ], + [ "osEventFlagsNew", "group__CMSIS__RTOS__EventFlags.html#gab14b1caeb12ffa42cce1bfe889cd07df", null ], + [ "osEventFlagsSet", "group__CMSIS__RTOS__EventFlags.html#ga33b71d14cecf90b4e72639dd19f23a5e", null ], + [ "osEventFlagsClear", "group__CMSIS__RTOS__EventFlags.html#ga93bf258ca0007c6641fbe8e4f2b8a1e5", null ], + [ "osEventFlagsGet", "group__CMSIS__RTOS__EventFlags.html#ga8bda3185f46bfd278cea8a6cf357677d", null ], + [ "osEventFlagsWait", "group__CMSIS__RTOS__EventFlags.html#ga52acb34a8322e58020227344fe662b4e", null ], + [ "osEventFlagsDelete", "group__CMSIS__RTOS__EventFlags.html#ga7c4acf2fb0d506ec82905dee53fb5435", null ], + [ "osEventFlagsGetName", "group__CMSIS__RTOS__EventFlags.html#ga59f4ddf0ee8c395b1672bb978d1cfc88", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__EventFlags_structosEventFlagsAttr__t.js b/docs/RTOS2/html/group__CMSIS__RTOS__EventFlags_structosEventFlagsAttr__t.js new file mode 100644 index 0000000..1a29eaa --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__EventFlags_structosEventFlagsAttr__t.js @@ -0,0 +1,7 @@ +var group__CMSIS__RTOS__EventFlags_structosEventFlagsAttr__t = +[ + [ "name", "group__CMSIS__RTOS__EventFlags.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__EventFlags.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__EventFlags.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__EventFlags.html#aa55a4335d12dc2785dc00fdc292d1159", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl.html b/docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl.html new file mode 100644 index 0000000..7f2075b --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl.html @@ -0,0 +1,813 @@ + + + + + +Kernel Information and Control +CMSIS-RTOS2: Kernel Information and Control + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Kernel Information and Control
+
+
+ +

Provides version/system information and starts/controls the RTOS Kernel. +More...

+ + + + + +

+Data Structures

struct  osVersion_t
 Version information. More...
 
+ + + + +

+Enumerations

enum  osKernelState_t {
+  osKernelInactive = 0, +
+  osKernelReady = 1, +
+  osKernelRunning = 2, +
+  osKernelLocked = 3, +
+  osKernelSuspended = 4, +
+  osKernelError = -1, +
+  osKernelReserved = 0x7FFFFFFFU +
+ }
 Kernel state. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

osStatus_t osKernelInitialize (void)
 Initialize the RTOS Kernel. More...
 
osStatus_t osKernelGetInfo (osVersion_t *version, char *id_buf, uint32_t id_size)
 Get RTOS Kernel Information. More...
 
osKernelState_t osKernelGetState (void)
 Get the current RTOS Kernel state. More...
 
osStatus_t osKernelStart (void)
 Start the RTOS Kernel scheduler. More...
 
int32_t osKernelLock (void)
 Lock the RTOS Kernel scheduler. More...
 
int32_t osKernelUnlock (void)
 Unlock the RTOS Kernel scheduler. More...
 
int32_t osKernelRestoreLock (int32_t lock)
 Restore the RTOS Kernel scheduler lock state. More...
 
uint32_t osKernelSuspend (void)
 Suspend the RTOS Kernel scheduler. More...
 
void osKernelResume (uint32_t sleep_ticks)
 Resume the RTOS Kernel scheduler. More...
 
uint32_t osKernelGetTickCount (void)
 Get the RTOS kernel tick count. More...
 
uint32_t osKernelGetTickFreq (void)
 Get the RTOS kernel tick frequency. More...
 
uint32_t osKernelGetSysTimerCount (void)
 Get the RTOS kernel system timer count. More...
 
uint32_t osKernelGetSysTimerFreq (void)
 Get the RTOS kernel system timer frequency. More...
 
+

Description

+

The kernel Information and Control function group allows to:

+
    +
  • obtain information about the system and the underlying kernel.
  • +
  • obtain version information about the CMSIS-RTOS API.
  • +
  • initialize of the RTOS kernel for creating objects.
  • +
  • start the RTOS kernel and thread switching.
  • +
  • check the execution status of the RTOS kernel.
  • +
+
Note
The kernel information and control functions cannot be called from Interrupt Service Routines.
+
+The kernel initialization for RTX5 is documented in System Startup.
+

Code Example

+
/*----------------------------------------------------------------------------
+
* Application main thread
+
*---------------------------------------------------------------------------*/
+
void app_main (void *argument) {
+
+
// ...
+
for (;;) {}
+
}
+
+
int main (void) {
+
+
// System Initialization
+
SystemCoreClockUpdate();
+
#ifdef RTE_Compiler_EventRecorder
+
// Initialize and start Event Recorder
+
EventRecorderInitialize(EventRecordError, 1U);
+
#endif
+
// ...
+
+
osKernelInitialize(); // Initialize CMSIS-RTOS
+
osThreadNew(app_main, NULL, NULL); // Create application main thread
+
osKernelStart(); // Start thread execution
+
for (;;) {}
+
}
+

Data Structure Documentation

+ +
+
+ + + + +
struct osVersion_t
+
+

Identifies the underlying RTOS kernel and API version number. The version is represented in a combined decimal number in the format: major.minor.rev: mmnnnrrrr

+

Use osKernelGetInfo to retrieve the version numbers.

+
+ + + + + + + +
Data Fields
+uint32_t +api +API version (major.minor.rev: mmnnnrrrr dec).
+uint32_t +kernel +Kernel version (major.minor.rev: mmnnnrrrr dec).
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum osKernelState_t
+
+

State of the kernel as retrieved by osKernelGetState. In case osKernelGetState fails or if it is called from an ISR, it will return osKernelError, otherwise it returns the kernel state.

+ + + + + + + + +
Enumerator
osKernelInactive  +

Inactive.

+

The kernel is not ready yet. osKernelInitialize needs to be executed successfully.

+
osKernelReady  +

Ready.

+

The kernel is not yet running. osKernelStart transfers the kernel to the running state.

+
osKernelRunning  +

Running.

+

The kernel is initialized and running.

+
osKernelLocked  +

Locked.

+

The kernel was locked with osKernelLock. The functions osKernelUnlock or osKernelRestoreLock unlocks it.

+
osKernelSuspended  +

Suspended.

+

The kernel was suspended using osKernelSuspend. The function osKernelResume returns to normal operation.

+
osKernelError  +

Error.

+

An error occurred.

+
osKernelReserved  +

Prevents enum down-size compiler optimization.

+

Reserved.

+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
osStatus_t osKernelInitialize (void )
+
+
Returns
status code that indicates the execution status of the function.
+

The function osKernelInitialize initializes the RTOS Kernel. Before it is successfully executed, only the functions osKernelGetInfo and osKernelGetState may be called.

+

Possible osStatus_t return values:

+
    +
  • osOK in case of success.
  • +
  • osError if an unspecific error occurred.
  • +
  • osErrorISR if called from an Interrupt Service Routine.
  • +
  • osErrorNoMemory if no memory could be reserved for the operation.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "RTE_Components.h"
+
#include CMSIS_device_header
+
#include "cmsis_os2.h"
+
+
/*----------------------------------------------------------------------------
+
* Application main thread
+
*---------------------------------------------------------------------------*/
+
void app_main (void *argument) {
+
+
// ...
+
for (;;) {}
+
}
+
+
int main (void) {
+
+
// System Initialization
+
SystemCoreClockUpdate();
+
// ...
+
+
osKernelInitialize(); // Initialize CMSIS-RTOS
+
osThreadNew(app_main, NULL, NULL); // Create application main thread
+
osKernelStart(); // Start thread execution
+
for (;;) {}
+
}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
osStatus_t osKernelGetInfo (osVersion_tversion,
char * id_buf,
uint32_t id_size 
)
+
+
Parameters
+ + + + +
[out]versionpointer to buffer for retrieving version information.
[out]id_bufpointer to buffer for retrieving kernel identification string.
[in]id_sizesize of buffer for kernel identification string.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osKernelGetInfo retrieves the API and kernel version of the underlying RTOS kernel and a human readable identifier string for the kernel. It can be safely called before the RTOS is initialized or started (call to osKernelInitialize or osKernelStart).

+

Possible osStatus_t return values:

+
    +
  • osOK in case of success.
  • +
  • osError if an unspecific error occurred.
  • +
+
Note
This function may be called from Interrupt Service Routines.
+

Code Example

+
void info (void) {
+
char infobuf[100];
+ +
osStatus_t status;
+
+
status = osKernelGetInfo(&osv, infobuf, sizeof(infobuf));
+
if(status == osOK) {
+
printf("Kernel Information: %s\r\n", infobuf);
+
printf("Kernel Version : %d\r\n", osv.kernel);
+
printf("Kernel API Version: %d\r\n", osv.api);
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
osKernelState_t osKernelGetState (void )
+
+
Returns
current RTOS Kernel state.
+

The function osKernelGetState returns the current state of the kernel and can be safely called before the RTOS is initialized or started (call to osKernelInitialize or osKernelStart). In case it fails it will return osKernelError, otherwise it returns the kernel state (refer to osKernelState_t for the list of kernel states).

+

Possible osKernelState_t return values:

+
    +
  • osKernelError if an unspecific error occurred.
  • +
  • the actual kernel state otherwise.
  • +
+
Note
This function may be called from Interrupt Service Routines.
+

Code Example

+
int main (void) {
+
// System Initialization
+
SystemCoreClockUpdate();
+
// ...
+
if(osKernelGetState() == osKernelInactive) { // Is the kernel initialized?
+
osKernelInitialize(); // Initialize CMSIS-RTOS kernel
+
}
+
;
+
}
+
+
+
+ +
+
+ + + + + + + + +
osStatus_t osKernelStart (void )
+
+
Returns
status code that indicates the execution status of the function.
+

The function osKernelStart starts the RTOS kernel and begins thread switching. It will not return to its calling function in case of success. Before it is successfully executed, only the functions osKernelGetInfo, osKernelGetState, and object creation functions (osXxxNew) may be called.

+

At least one initial thread should be created prior osKernelStart, see osThreadNew.

+

Possible osStatus_t return values:

+ +
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
int main (void) {
+
// System Initialization
+
SystemCoreClockUpdate();
+
// ...
+ + +
}
+
; // ... Start Threads
+
if (osKernelGetState() == osKernelReady) { // If kernel is ready to run...
+
osKernelStart(); // ... start thread execution
+
}
+
+
while(1); // only reached in case of error
+
}
+
+
+
+ +
+
+ + + + + + + + +
int32_t osKernelLock (void )
+
+
Returns
previous lock state (1 - locked, 0 - not locked, error code if negative).
+

The function osKernelLock allows to lock all task switches. It returns the previous value of the lock state (1 if it was locked, 0 if it was unlocked), or a negative number representing an error code otherwise (refer to osStatus_t).

+

Possible osStatus_t return values:

+ +
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
int32_t state = osKernelLock();
+
// ... critical code
+
osKernelRestore(state);
+
+
+
+ +
+
+ + + + + + + + +
int32_t osKernelUnlock (void )
+
+
Returns
previous lock state (1 - locked, 0 - not locked, error code if negative).
+

The function osKernelUnlock resumes from osKernelLock. It returns the previous value of the lock state (1 if it was locked, 0 if it was unlocked), or a negative number representing an error code otherwise (refer to osStatus_t).

+

Possible osStatus_t return values:

+ +
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
int32_t sl = osKernelLock();
+
// ... critical code
+
{
+
int32_t su = osKernelUnlock();
+
// ... uncritical code
+ +
}
+
// ... critical code
+ +
+
+
+ +
+
+ + + + + + + + +
int32_t osKernelRestoreLock (int32_t lock)
+
+
Parameters
+ + +
[in]locklock state obtained by osKernelLock or osKernelUnlock.
+
+
+
Returns
new lock state (1 - locked, 0 - not locked, error code if negative).
+

The function osKernelRestoreLock restores the previous lock state after osKernelLock or osKernelUnlock.

+

The argument lock specifies the lock state as obtained by osKernelLock or osKernelUnlock.

+

The function returns the new value of the lock state (1 if it was locked, 0 if it was unlocked), or a negative number representing an error code otherwise (refer to osStatus_t).

+

Possible osStatus_t return values:

+ +
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
int32_t sl = osKernelLock();
+
// ... critical code
+
{
+
int32_t su = osKernelUnlock();
+
// ... uncritical code
+ +
}
+
// ... critical code
+ +
+
+
+ +
+
+ + + + + + + + +
uint32_t osKernelSuspend (void )
+
+
Returns
time in ticks, for how long the system can sleep or power-down.
+

CMSIS-RTOS provides extension for tick-less operation which is useful for applications that use extensively low-power modes where the SysTick timer is also disabled. To provide a time-tick in such power-saving modes a wake-up timer is used to derive timer intervals. The function osKernelSuspend suspends the RTX kernel scheduler and thus enables sleep modes.

+

The return value can be used to determine the amount of system ticks until the next tick-based kernel event will occure, i.e. a delayed thread becomed ready again. It is recommended to set up the low power timer to generate a wake-up interrupt based on this return value.

+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
void osRtxIdleThread (void) {
+
/* The idle thread is running
+
when no other thread is ready
+
to run. */
+
unsigned int sleep;
+
+
for (;;) {
+
/* HERE: include optional user
+
code to be executed when no
+
task runs. */
+
sleep = osKernelSuspend(); /* Suspend RTX thread scheduler */
+
+
if (sleep) { /* How long can we sleep? */
+
/* "sleep" is in RTX Timer Ticks
+
which is 1ms in this
+
configuration */
+
+
/* Setup wake-up e.g. watchdog */
+
+
__WFE(); /* Enter Power-down mode */
+
+
/* After Wake-up */
+
sleep = tc; /* Adjust with cycles slept */
+
}
+
+
osKernelResume(sleep); /* Resume thread scheduler */
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
void osKernelResume (uint32_t sleep_ticks)
+
+
Parameters
+ + +
[in]sleep_tickstime in ticks for how long the system was in sleep or power-down mode.
+
+
+

CMSIS-RTOS provides extension for tick-less operation which is useful for applications that use extensively low-power modes where the SysTick timer is also disabled. To provide a time-tick in such power-saving modes a wake-up timer is used to derive timer intervals. The function osKernelResume enables the RTX kernel scheduler and thus wakes up the system from sleep mode.

+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
void osRtxIdleThread (void) {
+
/* The idle thread is running
+
when no other thread is ready
+
to run. */
+
unsigned int sleep;
+
+
for (;;) {
+
/* HERE: include optional user
+
code to be executed when no
+
task runs. */
+
sleep = osKernelSuspend(); /* Suspend RTX thread scheduler */
+
+
if (sleep) { /* How long can we sleep? */
+
/* "sleep" is in RTX Timer Ticks
+
which is 1ms in this
+
configuration */
+
+
/* Setup wake-up e.g. watchdog */
+
+
__WFE(); /* Enter Power-down mode */
+
+
/* After Wake-up */
+
sleep = tc; /* Adjust with cycles slept */
+
}
+
+
osKernelResume(sleep); /* Resume thread scheduler */
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
uint32_t osKernelGetTickCount (void )
+
+
Returns
RTOS kernel current tick count.
+

The function osKernelGetTickCount returns the current RTOS kernel tick count.

+
Note
This function may be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Thread_1 (void *arg) { // Thread function
+
uint32_t tick;
+
+
tick = osKernelGetTickCount(); // retrieve the number of system ticks
+
for (;;) {
+
tick += 1000; // delay 1000 ticks periodically
+
osDelayUntil(tick);
+
// ...
+
}
+
}
+

Due to the limited value range used for the tick count it may overflow during runtime, i.e. after 232 ticks which are roughly 49days @ 1ms. Typically one has not to take special care of this unless a monotonic counter is needed. For such a case an additional 64bit tick counter can be implemented as follows. The given example needs GetTick() called at least twice per tick overflow to work properly.

+

Code Example

+
uint64_t GetTick(void) {
+
static uint32_t tick_h = 0U;
+
static uint32_t tick_l = 0U;
+
uint32_t tick;
+
+ +
if (tick < tick_l) {
+
tick_h++;
+
}
+
tick_l = tick;
+
+
return (((uint64_t)tick_h << 32) | tick_l);
+
}
+
+
+
+ +
+
+ + + + + + + + +
uint32_t osKernelGetTickFreq (void )
+
+
Returns
frequency of the kernel tick in hertz, i.e. kernel ticks per second.
+

The function osKernelGetTickFreq returns the frequency of the current RTOS kernel tick.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osKernelGetSysTimerCount (void )
+
+
Returns
RTOS kernel current system timer count as 32-bit value.
+

The function osKernelGetSysTimerCount returns the current RTOS kernel system timer as a 32-bit value.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osKernelGetSysTimerFreq (void )
+
+
Returns
frequency of the system timer in hertz, i.e. timer ticks per second.
+

The function osKernelGetSysTimerFreq returns the frequency of the current RTOS kernel system timer.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl.js b/docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl.js new file mode 100644 index 0000000..19f988e --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl.js @@ -0,0 +1,29 @@ +var group__CMSIS__RTOS__KernelCtrl = +[ + [ "osVersion_t", "group__CMSIS__RTOS__KernelCtrl.html#structosVersion__t", [ + [ "api", "group__CMSIS__RTOS__KernelCtrl.html#a76a1ef1a4d3d9bd3e70783051f22a6d3", null ], + [ "kernel", "group__CMSIS__RTOS__KernelCtrl.html#ad8075d3f42141346ae2c56389358f9e7", null ] + ] ], + [ "osKernelState_t", "group__CMSIS__RTOS__KernelCtrl.html#ga08326469274b668140ca934b168a5ad4", [ + [ "osKernelInactive", "cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a2ad3e5912db47b497529d036c89e7995", null ], + [ "osKernelReady", "cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a0596c6e14113447604753656417c9a24", null ], + [ "osKernelRunning", "cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a8e0b699fbe1c8bb66fefadd5911cb6ce", null ], + [ "osKernelLocked", "cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a2fe382ad5ebab2257b35740414b28b01", null ], + [ "osKernelSuspended", "cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4ad364464ad84d63b1413a9ac8a962390c", null ], + [ "osKernelError", "cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a0545c92c18ce8e6b24e82a0d694a0b4a", null ], + [ "osKernelReserved", "cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4ab0a47576defa29396a649d9173d4bc4b", null ] + ] ], + [ "osKernelInitialize", "group__CMSIS__RTOS__KernelCtrl.html#gae818f6611d25ba3140bede410a52d659", null ], + [ "osKernelGetInfo", "group__CMSIS__RTOS__KernelCtrl.html#ga6f7764e7250c5c5364c00c45a5d1d199", null ], + [ "osKernelGetState", "group__CMSIS__RTOS__KernelCtrl.html#ga48b69b81012fce051f639be288b243ba", null ], + [ "osKernelStart", "group__CMSIS__RTOS__KernelCtrl.html#ga9ae2cc00f0d89d7b6a307bba942b5221", null ], + [ "osKernelLock", "group__CMSIS__RTOS__KernelCtrl.html#ga948609ee930d9b38336b9e1c2a4dfe12", null ], + [ "osKernelUnlock", "group__CMSIS__RTOS__KernelCtrl.html#gaf401728b4657456198c33fe75f8d6720", null ], + [ "osKernelRestoreLock", "group__CMSIS__RTOS__KernelCtrl.html#gae7d0a71b9586cbbb49fcbdf6a04f0289", null ], + [ "osKernelSuspend", "group__CMSIS__RTOS__KernelCtrl.html#gae26683e1606ec633354a2876c68f0c1f", null ], + [ "osKernelResume", "group__CMSIS__RTOS__KernelCtrl.html#ga8c4b4d7ed34cab73c001665d9176aced", null ], + [ "osKernelGetTickCount", "group__CMSIS__RTOS__KernelCtrl.html#ga84bcdbf2fb76b10c8df4e439f0c7e11b", null ], + [ "osKernelGetTickFreq", "group__CMSIS__RTOS__KernelCtrl.html#ga7a8d7bd927eaaa58999f91d7d6310cee", null ], + [ "osKernelGetSysTimerCount", "group__CMSIS__RTOS__KernelCtrl.html#gae0fcaff6cecfb4013bb556c87afcd7d2", null ], + [ "osKernelGetSysTimerFreq", "group__CMSIS__RTOS__KernelCtrl.html#ga4d69215a93220f72be3684cad582f16a", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl_structosVersion__t.js b/docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl_structosVersion__t.js new file mode 100644 index 0000000..64ecd5d --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__KernelCtrl_structosVersion__t.js @@ -0,0 +1,5 @@ +var group__CMSIS__RTOS__KernelCtrl_structosVersion__t = +[ + [ "api", "group__CMSIS__RTOS__KernelCtrl.html#a76a1ef1a4d3d9bd3e70783051f22a6d3", null ], + [ "kernel", "group__CMSIS__RTOS__KernelCtrl.html#ad8075d3f42141346ae2c56389358f9e7", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__MemoryMgmt.html b/docs/RTOS2/html/group__CMSIS__RTOS__MemoryMgmt.html new file mode 100644 index 0000000..be44ec0 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__MemoryMgmt.html @@ -0,0 +1,183 @@ + + + + + +Memory Management +CMSIS-RTOS2: Memory Management + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Memory Management
+
+
+ +

Information about memory management possibilities. +More...

+

The CMSIS-RTOS API v2 offers two options for memory management the user can choose. For object storage one can either use

+ +

In order to affect the memory allocation scheme all RTOS objects that can be created on request, i.e. those having a osXxxNew function, accept an optional osXxxAttr_t attr argument on creation. As a rule of thumb the object attributes at least have members to assign custom control block memory, i.e. cb_mem and cb_size members. By default, i.e. attr is NULL or cb_mem is NULL, Automatic Dynamic Allocation is used. Providing a pointer to user memory in cb_mem switches to Manual User-defined Allocation.

+
Note
For detailed information about memory allocation strategies provided in RTX5 refer to Memory Allocation.
+

+Automatic Dynamic Allocation

+

The automatic allocation is the default and viable for many use-cases. Moreover it is fully portable across different implementations of the CMSIS-RTOS API v2. The common drawback of dynamic memory allocation is the possibility of memory fragmentation and exhaustion. Given that all needed objects are created once upon system initialization and never deleted at runtime this class of runtime failures can be prevented, though.

+

The actual allocation strategy used is implementation specific, i.e. whether global heap or preallocated memory pools are used.

+

Code Example:

+
#include "cmsis_os2.h" // implementation agnostic
+
+
osMutexId_t mutex_id;
+
osMutexId_t mutex2_id;
+
+
const osMutexAttr_t Thread_Mutex_attr = {
+
"myThreadMutex", // human readable mutex name
+ +
NULL, // memory for control block (default)
+
0U // size for control block (default)
+
};
+
+
void CreateMutex (void) {
+
mutex_id = osMutexNew(NULL); // use default values for all attributes
+
mutex2_id = osMutexNew(&Thread_Mutex_attr); // use attributes from defined structure
+
:
+
}
+

The Mutexes in this example are created using automatic memory allocation.

+

+Manual User-defined Allocation

+

One can get fine grained control over memory allocation by providing user-defined memory. The actual requirements such user-defined memory are implementation specific. Thus one needs to carefully refer to the size and alignment rules of the implementation used, e.g. for RTX see Static Object Memory.

+

Code Example:

+
#include "rtx_os.h" // implementation specific
+
+
osMutexId_t mutex_id;
+
+
static uint32_t mutex_cb[osRtxMutexCbSize/4U]; // implementation specific
+
+
const osMutexAttr_t Thread_Mutex_attr = {
+
"myThreadMutex", // human readable mutex name
+ +
mutex_cb, // memory for control block (user-defined)
+
sizeof(mutex_cb) // size for control block (user-defined)
+
};
+
+
void CreateMutex (void) {
+
mutex_id = osMutexNew(&Thread_Mutex_attr); // use attributes from defined structure
+
:
+
}
+

The above example uses user-defined memory for the mutex control block. Depending on the actual implementation used one needs to include the specific header file, rtx_os.h in this case.

+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__Message.html b/docs/RTOS2/html/group__CMSIS__RTOS__Message.html new file mode 100644 index 0000000..3684b6d --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__Message.html @@ -0,0 +1,675 @@ + + + + + +Message Queue +CMSIS-RTOS2: Message Queue + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Exchange messages between threads in a FIFO-like operation. +More...

+ + + + + +

+Data Structures

struct  osMessageQueueAttr_t
 Attributes structure for message queue. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

osMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr)
 Create and Initialize a Message Queue object. More...
 
const char * osMessageQueueGetName (osMessageQueueId_t mq_id)
 Get name of a Message Queue object. More...
 
osStatus_t osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout)
 Put a Message into a Queue or timeout if Queue is full. More...
 
osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout)
 Get a Message from a Queue or timeout if Queue is empty. More...
 
uint32_t osMessageQueueGetCapacity (osMessageQueueId_t mq_id)
 Get maximum number of messages in a Message Queue. More...
 
uint32_t osMessageQueueGetMsgSize (osMessageQueueId_t mq_id)
 Get maximum message size in a Memory Pool. More...
 
uint32_t osMessageQueueGetCount (osMessageQueueId_t mq_id)
 Get number of queued messages in a Message Queue. More...
 
uint32_t osMessageQueueGetSpace (osMessageQueueId_t mq_id)
 Get number of available slots for messages in a Message Queue. More...
 
osStatus_t osMessageQueueReset (osMessageQueueId_t mq_id)
 Reset a Message Queue to initial empty state. More...
 
osStatus_t osMessageQueueDelete (osMessageQueueId_t mq_id)
 Delete a Message Queue object. More...
 
+

Description

+

Message passing is another basic communication model between threads. In the message passing model, one thread sends data explicitly, while another thread receives it. The operation is more like some kind of I/O rather than a direct access to information to be shared. In CMSIS-RTOS, this mechanism is called s message queue. The data is passed from one thread to another in a FIFO-like operation. Using message queue functions, you can control, send, receive, or wait for messages. The data to be passed can be of integer or pointer type:

+
+MessageQueue.png +
+CMSIS-RTOS Message Queue
+

Compared to a Memory Pool, message queues are less efficient in general, but solve a broader range of problems. Sometimes, threads do not have a common address space or the use of shared memory raises problems, such as mutual exclusion.

+
Note
The functions osMessageQueuePut, osMessageQueueGet, osMessageQueueGetCapacity, osMessageQueueGetMsgSize, osMessageQueueGetCount, osMessageQueueGetSpace can be called from Interrupt Service Routines.
+
+Refer to Message Queue Configuration for RTX5 configuration options.
+

Data Structure Documentation

+ +
+
+ + + + +
struct osMessageQueueAttr_t
+
+

Specifies the following attributes for the osMessageQueueNew function.

+
+ + + + + + + + + + + + + + + + + + + +
Data Fields
+const char * +name +name of the message queue

Pointer to a constant string with a human readable name (displayed during debugging) of the message queue object.

+

Default: NULL no name specified.

+
+uint32_t +attr_bits +attribute bits

Reserved for future use (must be set to '0' for future compatibility).

+
+void * +cb_mem +memory for control block

Pointer to a memory for the message queue control block object. Refer to Static Object Memory for more information.

+

Default: NULL to use Automatic Dynamic Allocation for the message queue control block.

+
+uint32_t +cb_size +size of provided memory for control block

The size (in bytes) of memory block passed with cb_mem. For RTX, the minimum value is defined with osRtxMessageQueueCbSize (higher values are permitted).

+

Default: 0 as the default is no memory provided with cb_mem.

+
+void * +mq_mem +memory for data storage

Pointer to a memory for the message queue data. Refer to Static Object Memory for more information.

+

Default: NULL to use Automatic Dynamic Allocation for the memory pool data.

+
+uint32_t +mq_size +size of provided memory for data storage

The size (in bytes) of memory block passed with mq_mem. The minimum memory block size is msg_count * msg_size (parameters of the osMessageQueueNew function). The msg_size is rounded up to a double even number to ensure 32-bit alignment of the memory blocks.

+

Default: 0 as the default is no memory provided with mq_mem.

+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
osMessageQueueId_t osMessageQueueNew (uint32_t msg_count,
uint32_t msg_size,
const osMessageQueueAttr_tattr 
)
+
+
Parameters
+ + + + +
[in]msg_countmaximum number of messages in queue.
[in]msg_sizemaximum message size in bytes.
[in]attrmessage queue attributes; NULL: default values.
+
+
+
Returns
message queue ID for reference by other functions or NULL in case of error.
+

The function osMessageQueueNew creates and initializes a message queue object. The function returns a message queue object identifier or NULL in case of an error.

+

The function can be called after kernel initialization with osKernelInitialize. It is possible to create message queue objects before the RTOS kernel is started with osKernelStart.

+

The total amount of memory required for the message queue data is at least msg_count * msg_size. The msg_size is rounded up to a double even number to ensure 32-bit alignment of the memory blocks.

+

The memory blocks allocated from the message queue have a fixed size defined with the parameter msg_size.

+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+

Refer to osMessageQueuePut

+ +
+
+ +
+
+ + + + + + + + +
const char * osMessageQueueGetName (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+
Returns
name as null-terminated string.
+

The function osMessageQueueGetName returns the pointer to the name string of the message queue identified by parameter mq_id or NULL in case of an error.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
osStatus_t osMessageQueuePut (osMessageQueueId_t mq_id,
const void * msg_ptr,
uint8_t msg_prio,
uint32_t timeout 
)
+
+
Parameters
+ + + + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]msg_ptrpointer to buffer with message to put into a queue.
[in]msg_priomessage priority.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The blocking function osMessageQueuePut puts the message pointed to by msg_ptr into the the message queue specified by parameter mq_id. The parameter msg_prio is used to sort message according their priority (higher numbers indicate a higher priority) on insertion.

+

The parameter timeout specifies how long the system waits to put the message into the queue. While the system waits, the thread that is calling this function is put into the BLOCKED state. The parameter timeout can have the following values:

+
    +
  • when timeout is 0, the function returns instantly (i.e. try semantics).
  • +
  • when timeout is set to osWaitForever the function will wait for an infinite time until the message is delivered (i.e. wait semantics).
  • +
  • all other values specify a time in kernel ticks for a timeout (i.e. timed-wait semantics).
  • +
+

Possible osStatus_t return values:

+
    +
  • osOK: the message has been put into the queue.
  • +
  • osErrorTimeout: the message could not be put into the queue in the given time (wait-timed semantics).
  • +
  • osErrorResource: not enough space in the queue (try semantics).
  • +
  • osErrorParameter: the parameter mq_id is incorrect, non-zero timeout specified in an ISR.
  • +
+
Note
May be called from Interrupt Service Routines if the parameter timeout is set to 0.
+

Code Example:

+
#include "cmsis_os2.h" // CMSIS RTOS header file
+
+
/*----------------------------------------------------------------------------
+
* Message Queue creation & usage
+
*---------------------------------------------------------------------------*/
+
+
void Thread_MsgQueue1 (void *argument); // thread function 1
+
void Thread_MsgQueue2 (void *argument); // thread function 2
+
osThreadId_t tid_Thread_MsgQueue1; // thread id 1
+
osThreadId_t tid_Thread_MsgQueue2; // thread id 2
+
+
#define MSGQUEUE_OBJECTS 16 // number of Message Queue Objects
+
+
typedef struct { // object data type
+
uint8_t Buf[32];
+
uint8_t Idx;
+
} MSGQUEUE_OBJ_t;
+
+
osMessageQueueId_t mid_MsgQueue; // message queue id
+
+
int Init_MsgQueue (void) {
+
+
mid_MsgQueue = osMessageQueueNew(MSGQUEUE_OBJECTS, sizeof(MSGQUEUE_OBJ_t), NULL);
+
if (!mid_MsgQueue) {
+
; // Message Queue object not created, handle failure
+
}
+
+
tid_Thread_MsgQueue1 = osThreadNew (Thread_MsgQueue1, NULL, NULL);
+
if (!tid_Thread_MsgQueue1) return(-1);
+
tid_Thread_MsgQueue2 = osThreadNew (Thread_MsgQueue2, NULL, NULL);
+
if (!tid_Thread_MsgQueue2) return(-1);
+
+
return(0);
+
}
+
+
void Thread_MsgQueue1 (void *argument) {
+
MSGQUEUE_OBJ_t msg;
+
+
while (1) {
+
; // Insert thread code here...
+
msg.Buf[0] = 0x55; // do some work...
+
msg.Idx = 0;
+
osMessageQueuePut (mid_MsgQueue, &msg, 0, NULL);
+
osThreadYield (); // suspend thread
+
}
+
}
+
+
void Thread_MsgQueue2 (void *argument) {
+
+
MSGQUEUE_OBJ_t msg;
+
osStatus_t status;
+
+
while (1) {
+
; // Insert thread code here...
+
status = osMessageQueueGet (mid_MsgQueue, &msg, NULL, NULL); // wait for message
+
if (status == osOK) {
+
; // process data
+
}
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id,
void * msg_ptr,
uint8_t * msg_prio,
uint32_t timeout 
)
+
+
Parameters
+ + + + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[out]msg_ptrpointer to buffer for message to get from a queue.
[out]msg_priopointer to buffer for message priority or NULL.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osMessageQueueGet retrieves a message from the message queue specified by the parameter mq_id and saves it to the buffer pointed to by the parameter msg_ptr. The message priority is stored to parameter msg_prio if not token{NULL}.

+

The parameter timeout specifies how long the system waits to retrieve the message from the queue. While the system waits, the thread that is calling this function is put into the BLOCKED state. The parameter timeout can have the following values:

+
    +
  • when timeout is 0, the function returns instantly (i.e. try semantics).
  • +
  • when timeout is set to osWaitForever the function will wait for an infinite time until the message is retrieved (i.e. wait semantics).
  • +
  • all other values specify a time in kernel ticks for a timeout (i.e. timed-wait semantics).
  • +
+

Possible osStatus_t return values:

+
    +
  • osOK: the message has been retrieved from the queue.
  • +
  • osErrorTimeout: the message could not be retrieved from the queue in the given time (timed-wait semantics).
  • +
  • osErrorResource: nothing to get from the queue (try semantics).
  • +
  • osErrorParameter: the parameter mq_id is incorrect, non-zero timeout specified in an ISR.
  • +
+
Note
May be called from Interrupt Service Routines if the parameter timeout is set to 0.
+

Code Example

+

Refer to osMessageQueuePut

+ +
+
+ +
+
+ + + + + + + + +
uint32_t osMessageQueueGetCapacity (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+
Returns
maximum number of messages.
+

The function osMessageQueueGetCapacity returns the maximum number of messages in the message queue object specified by parameter mq_id or 0 in case of an error.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osMessageQueueGetMsgSize (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+
Returns
maximum message size in bytes.
+

The function osMessageQueueGetMsgSize returns the maximum message size in bytes for the message queue object specified by parameter mq_id or 0 in case of an error.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osMessageQueueGetCount (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+
Returns
number of queued messages.
+

The function osMessageQueueGetCount returns the number of queued messages in the message queue object specified by parameter mq_id or 0 in case of an error.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osMessageQueueGetSpace (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+
Returns
number of available slots for messages.
+

The function osMessageQueueGetSpace returns the number available slots for messages in the message queue object specified by parameter mq_id or 0 in case of an error.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
osStatus_t osMessageQueueReset (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osMessageQueueReset resets the message queue specified by the parameter mq_id.

+

Possible osStatus_t return values:

+
    +
  • osOK: the message queue has been rest.
  • +
  • osErrorParameter: parameter mq_id is NULL or invalid.
  • +
  • osErrorResource: the message queue specified by parameter mq_id is in an invalid message queue state.
  • +
  • osErrorISR: osMessageQueueReset cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
osStatus_t osMessageQueueDelete (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osMessageQueueDelete deletes a message queue object specified by parameter mq_id. It releases internal memory obtained for message queue handling. After this call, the mq_id is no longer valid and cannot be used. The message queue may be created again using the function osMessageQueueNew.

+

Possible osStatus_t return values:

+
    +
  • osOK: the message queue object has been deleted.
  • +
  • osErrorParameter: parameter mq_id is NULL or invalid.
  • +
  • osErrorResource: the message queue specified by parameter mq_id is in an invalid message queue state.
  • +
  • osErrorISR: osMessageQueueDelete cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__Message.js b/docs/RTOS2/html/group__CMSIS__RTOS__Message.js new file mode 100644 index 0000000..000849b --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__Message.js @@ -0,0 +1,21 @@ +var group__CMSIS__RTOS__Message = +[ + [ "osMessageQueueAttr_t", "group__CMSIS__RTOS__Message.html#structosMessageQueueAttr__t", [ + [ "name", "group__CMSIS__RTOS__Message.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__Message.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__Message.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__Message.html#aa55a4335d12dc2785dc00fdc292d1159", null ], + [ "mq_mem", "group__CMSIS__RTOS__Message.html#a4e208dc0fb049b42c4b90cbd2791c5ad", null ], + [ "mq_size", "group__CMSIS__RTOS__Message.html#ac1cc09f875e20c926920b57bb83c70ee", null ] + ] ], + [ "osMessageQueueNew", "group__CMSIS__RTOS__Message.html#ga24e895a00f9d484db33aaf784c57bfed", null ], + [ "osMessageQueueGetName", "group__CMSIS__RTOS__Message.html#gae7cf7bf2b97a5ae481fb60fcce99247a", null ], + [ "osMessageQueuePut", "group__CMSIS__RTOS__Message.html#gaa515fc8b956f721a8f72b2c505813bfc", null ], + [ "osMessageQueueGet", "group__CMSIS__RTOS__Message.html#gad90d4959466a7a65105061da8256ab9e", null ], + [ "osMessageQueueGetCapacity", "group__CMSIS__RTOS__Message.html#gac24f87d4f395e9e9c900c320e45ade8a", null ], + [ "osMessageQueueGetMsgSize", "group__CMSIS__RTOS__Message.html#ga96d3d84069b20359de48109e28a1a89e", null ], + [ "osMessageQueueGetCount", "group__CMSIS__RTOS__Message.html#ga6a32ac394fcff568b251c160cc3014b2", null ], + [ "osMessageQueueGetSpace", "group__CMSIS__RTOS__Message.html#gaddf0904427436dd3880d46263c2dc9fa", null ], + [ "osMessageQueueReset", "group__CMSIS__RTOS__Message.html#gac6dce7f9ad132d266292c2e979d861b4", null ], + [ "osMessageQueueDelete", "group__CMSIS__RTOS__Message.html#gaba987f665444e0d83fa6a3a68bc72abe", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__Message_structosMessageQueueAttr__t.js b/docs/RTOS2/html/group__CMSIS__RTOS__Message_structosMessageQueueAttr__t.js new file mode 100644 index 0000000..6bc7b60 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__Message_structosMessageQueueAttr__t.js @@ -0,0 +1,9 @@ +var group__CMSIS__RTOS__Message_structosMessageQueueAttr__t = +[ + [ "name", "group__CMSIS__RTOS__Message.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__Message.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__Message.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__Message.html#aa55a4335d12dc2785dc00fdc292d1159", null ], + [ "mq_mem", "group__CMSIS__RTOS__Message.html#a4e208dc0fb049b42c4b90cbd2791c5ad", null ], + [ "mq_size", "group__CMSIS__RTOS__Message.html#ac1cc09f875e20c926920b57bb83c70ee", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt.html b/docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt.html new file mode 100644 index 0000000..9b6d2ee --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt.html @@ -0,0 +1,655 @@ + + + + + +Mutex Management +CMSIS-RTOS2: Mutex Management + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Mutex Management
+
+
+ +

Synchronize resource access using Mutual Exclusion (Mutex). +More...

+ + + + + +

+Data Structures

struct  osMutexAttr_t
 Attributes structure for mutex. More...
 
+ + + + + + + + + + +

+Macros

#define osMutexRecursive   0x00000001U
 Recursive mutex. More...
 
#define osMutexPrioInherit   0x00000002U
 Priority inherit protocol. More...
 
#define osMutexRobust   0x00000008U
 Robust mutex. More...
 
+ + + +

+Typedefs

typedef void * osMutexId_t
 
+ + + + + + + + + + + + + + + + + + + +

+Functions

osMutexId_t osMutexNew (const osMutexAttr_t *attr)
 Create and Initialize a Mutex object. More...
 
const char * osMutexGetName (osMutexId_t mutex_id)
 Get name of a Mutex object. More...
 
osStatus_t osMutexAcquire (osMutexId_t mutex_id, uint32_t timeout)
 Acquire a Mutex or timeout if it is locked. More...
 
osStatus_t osMutexRelease (osMutexId_t mutex_id)
 Release a Mutex that was acquired by osMutexAcquire. More...
 
osThreadId_t osMutexGetOwner (osMutexId_t mutex_id)
 Get Thread which owns a Mutex object. More...
 
osStatus_t osMutexDelete (osMutexId_t mutex_id)
 Delete a Mutex object. More...
 
+

Description

+

Mutual exclusion (widely known as Mutex) is used in various operating systems for resource management. Many resources in a microcontroller device can be used repeatedly, but only by one thread at a time (for example communication channels, memory, and files). Mutexes are used to protect access to a shared resource. A mutex is created and then passed between the threads (they can acquire and release the mutex).

+
+Mutex.png +
+CMSIS-RTOS Mutex
+

A mutex is a special version of a semaphore. Like the semaphore, it is a container for tokens. But instead of being able to have multiple tokens, a mutex can only carry one (representing the resource). Thus, a mutex token is binary and bounded, i.e. it is either available, or blocked by a owning thread. The advantage of a mutex is that it introduces thread ownership. When a thread acquires a mutex and becomes its owner, subsequent mutex acquires from that thread will succeed immediately without any latency (if osMutexRecursive is specified). Thus, mutex acquires/releases can be nested.

+
+mutex_states.png +
+CMSIS-RTOS Mutex States
+
Note
Mutex management functions cannot be called from Interrupt Service Routines (ISR), unlike a binary semaphore that can be released from an ISR.
+
+Refer to Mutex Configuration for RTX5 configuration options.
+

Data Structure Documentation

+ +
+
+ + + + +
struct osMutexAttr_t
+
+

Specifies the following attributes for the osMutexNew function.

+
+ + + + + + + + + + + + + +
Data Fields
+const char * +name +name of the mutex

Pointer to a constant string with a human readable name (displayed during debugging) of the mutex object.

+

Default: NULL no name specified.

+
+uint32_t +attr_bits +attribute bits

The following bit masks can be used to set options:

+
    +
  • osMutexRecursive : a thread can consume the mutex multiple times without locking itself.
  • +
  • osMutexPrioInherit : priority of a waiting thread is raised (when lower) to priority of mutex owner thread.
  • +
  • osMutexRobust : the mutex is automatically released when owner thread is terminated.
  • +
+

Use logical 'OR' operation to select multiple options, for example:

+

Default: 0 which specifies:

+
    +
  • non recursive mutex : a thread cannot consume the mutex multiple times.
  • +
  • non priority raising : the priority of a waiting thread is not changed.
  • +
  • mutex is not automatically release : the mutex object must be always is automatically released when owner thread is terminated.
  • +
+
+void * +cb_mem +memory for control block

Pointer to a memory for the mutex control block object. Refer to Static Object Memory for more information.

+

Default: NULL to use Automatic Dynamic Allocation for the mutex control block.

+
+uint32_t +cb_size +size of provided memory for control block

The size (in bytes) of memory block passed with cb_mem. For RTX, the minimum value is defined with osRtxMutexCbSize (higher values are permitted).

+

Default: 0 as the default is no memory provided with cb_mem.

+
+ +
+
+

Macro Definition Documentation

+ +
+
+ + + + +
#define osMutexRecursive   0x00000001U
+
+

Recursive flag in osMutexAttr_t.

+

The same thread can consume a mutex multiple times without locking itself. Each time the owning thread acquires the mutex the lock count is incremented. The mutex must be released multiple times as well until the lock count reaches zero. At reaching zero the mutex is actually released and can be acquired by other threads.

+
Note
The maximum amount of recursive locks possible is implementation specific, i.e. the type size used for the lock count. If the maximum amount of recursive locks is depleted mutex acquire might fail.
+

Code Example

+
#include "cmsis_os2.h"
+
+
osMutexId_t mutex_id;
+
+
const osMutexAttr_t Thread_Mutex_attr = {
+
"myThreadMutex", // human readable mutex name
+
osMutexRecursive, // attr_bits
+
NULL, // memory for control block
+
0U // size for control block
+
};
+
+
// must be called from a thread context
+
void UseMutexRecursively(int count) {
+
osStatus_t result = osMutexAcquire(mutex_id, osWaitForever); // lock count is incremented, might fail when lock count is depleted
+
if (result == osOK) {
+
if (count < 10) {
+
UseMutexRecursively(count + 1);
+
}
+
osMutexRelease(mutex_id); // lock count is decremented, actually releases the mutex on lock count zero
+
}
+
}
+
+
+
+ +
+
+ + + + +
#define osMutexPrioInherit   0x00000002U
+
+

Priority inheritance flag in osMutexAttr_t.

+

A mutex using priority inheritance protocol transfers a waiting threads priority to the current mutex owner if the owners thread priority is lower. This assures that a low priority thread does not block a high priority thread.

+

Otherwise a low priority thread might hold a mutex but is not granted execution time due to another mid priority thread. Without priority inheritance the high priority thread waiting for the mutex would be blocked by the mid priority thread, called priority inversion.

+

Code Example

+

This example reveals a blocked high priority thread if osMutexPrioInherit is removed.

+
#include "cmsis_os2.h"
+
+
osMutexId_t mutex_id;
+
+
const osMutexAttr_t Thread_Mutex_attr = {
+
"myThreadMutex", // human readable mutex name
+
osMutexPrioInherit, // attr_bits
+
NULL, // memory for control block
+
0U // size for control block
+
};
+
+
void HighPrioThread(void *argument) {
+
osDelay(1000); // wait 1s until start actual work
+
while(1) {
+
osMutexAcquire(mutex_id, osWaitForever); // try to acquire mutex
+
// do stuff
+
osMutexRelease(mutex_id);
+
}
+
}
+
+
void MidPrioThread(void *argument) {
+
osDelay(1000); // wait 1s until start actual work
+
while(1) {
+
// do non blocking stuff
+
}
+
}
+
+
void LowPrioThread(void *argument) {
+
while(1) {
+ +
osDelay(5000); // block mutex for 5s
+
osMutexRelease(mutex_id);
+
osDelay(5000); // sleep for 5s
+
}
+
}
+

During the first second the high and mid priority threads are delayed. Thus the low priority thread can start its work, acquires the mutex and delays while holding it.

+

After the first second the high and mid priority threads become ready. Thus the high priority thread gets precedence and tries to acquire the mutex. Because the mutex is already owned by the low priority thread the high priority thread gets blocked.

+

Finally the mid priority thread gets executed and start doing a lot of non-blocking stuff, i.e. it does not call any blocking RTOS functionality.

+

Without osMutexPrioInherit we would stuck here forever. Even if the low priority thread gets ready after 5s. Due to its low priority the mid priority thread always gets precedence. The effect called priority inversion leads to the mid priority thread blocking the high priority thread indirectly.

+

Using osMutexPrioInherit as shown in the example code we get rid of this situation. Due to the priority inheritance protocol the low priority thread inherits the high priority while holding the mutex. Thus the low priority thread gets precedence over the mid priority thread until it release the mutex. On osMutexRelease the high priority thread get ready and is scheduled immediately.

+ +
+
+ +
+
+ + + + +
#define osMutexRobust   0x00000008U
+
+

Robust flag in osMutexAttr_t.

+

Robust mutexes are automatically released if the owning thread is terminated (either by osThreadExit or osThreadTerminate). Non-robust mutexes are not released and the user must assure mutex release manually.

+

Code Example

+

This example reveals a blocked mutex if osMutexRobust is removed.

+
#include "cmsis_os2.h"
+
+
osMutexId_t mutex_id;
+
+
const osMutexAttr_t Thread_Mutex_attr = {
+
"myThreadMutex", // human readable mutex name
+
osMutexRobust, // attr_bits
+
NULL, // memory for control block
+
0U // size for control block
+
};
+
+
void Thread(void *argument) {
+ + +
}
+

Due to osMutexRobust the mutex gets released automatically. A non-robust mutex would stay locked and cannot be released anymore.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
osMutexId_t
+
+

Mutex ID identifies the mutex.

+

Returned by:

+ + +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
osMutexId_t osMutexNew (const osMutexAttr_tattr)
+
+
Parameters
+ + +
[in]attrmutex attributes; NULL: default values.
+
+
+
Returns
mutex ID for reference by other functions or NULL in case of error.
+

The function osMutexNew creates and initializes a new mutex object and returns the pointer to the mutex object identifier or NULL in case of an error. It can be safely called before the RTOS is started (call to osKernelStart), but not before it is initialized (call to osKernelInitialize).

+

The parameter attr sets the mutex object attributes (refer to osMutexAttr_t). Default attributes will be used if set to NULL.

+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
osMutexId_t mutex_id;
+
+
const osMutexAttr_t Thread_Mutex_attr = {
+
"myThreadMutex", // human readable mutex name
+ +
NULL, // memory for control block
+
0U // size for control block
+
};
+
+
void CreateMutex (void) {
+
mutex_id = osMutexNew(&Thread_Mutex_attr);
+
if (mutex_id != NULL) {
+
// Mutex object created
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
*const char * osMutexGetName (osMutexId_t mutex_id)
+
+
Parameters
+ + +
[in]mutex_idmutex ID obtained by osMutexNew.
+
+
+
Returns
name as null-terminated string.
+

The function osMutexGetName returns the pointer to the name string of the mutex identified by parameter mutex_id or NULL in case of an error.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
osStatus_t osMutexAcquire (osMutexId_t mutex_id,
uint32_t timeout 
)
+
+
Parameters
+ + + +
[in]mutex_idmutex ID obtained by osMutexNew.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The blocking function osMutexAcquire waits until a mutex object specified by parameter mutex_id becomes available. If no other thread has obtained the mutex, the function instantly returns and blocks the mutex object.

+

The parameter timeout specifies how long the system waits to acquire the mutex. While the system waits, the thread that is calling this function is put into the BLOCKED state. The parameter timeout can have the following values:

+
    +
  • when timeout is 0, the function returns instantly (i.e. try semantics).
  • +
  • when timeout is set to osWaitForever the function will wait for an infinite time until the mutex becomes available (i.e. wait semantics).
  • +
  • all other values specify a time in kernel ticks for a timeout (i.e. timed-wait semantics).
  • +
+

Possible osStatus_t return values:

+
    +
  • osOK: the mutex has been obtained.
  • +
  • osErrorTimeout: the mutex could not be obtained in the given time.
  • +
  • osErrorParameter: parameter mutex_id is NULL or invalid.
  • +
  • osErrorResource: the mutex specified by parameter mutex_id is in an invalid mutex state or the mutex could not be obtained when no timeout was specified.
  • +
  • osErrorISR: cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void WaitMutex (void) {
+
osMutexId_t mutex_id;
+
osStatus_t status;
+
+
mutex_id = osMutexNew(NULL);
+
if (mutex_id != NULL) {
+
status = osMutexAcquire(mutex_id, 0);
+
if (status != osOK) {
+
// handle failure code
+
}
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
osStatus_t osMutexRelease (osMutexId_t mutex_id)
+
+
Parameters
+ + +
[in]mutex_idmutex ID obtained by osMutexNew.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osMutexRelease releases a mutex specified by parameter mutex_id. Other threads that currently wait for this mutex will be put into the READY state.

+

Possible osStatus_t return values:

+
    +
  • osOK: the mutex has been correctly released.
  • +
  • osErrorParameter: parameter mutex_id is NULL or invalid.
  • +
  • osErrorResource: the mutex specified by parameter mutex_id is in an invalid mutex state or the mutex was not obtained before/the current thread is not the owner of the mutex.
  • +
  • osErrorISR: osMutexRelease cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
osMutexId_t mutex_id; // Mutex id populated by the function osMutexNew()
+
+
void ReleaseMutex (osMutexId_t mutex_id) {
+
osStatus_t status;
+
+
if (mutex_id != NULL) {
+
status = osMutexRelease(mutex_id);
+
if (status != osOK) {
+
// handle failure code
+
}
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
osThreadId_t osMutexGetOwner (osMutexId_t mutex_id)
+
+
Parameters
+ + +
[in]mutex_idmutex ID obtained by osMutexNew.
+
+
+
Returns
thread ID of owner thread or NULL when mutex was not acquired.
+

The function osMutexGetOwner returns the thread ID of the thread that acquired a mutex specified by parameter mutex_id. In case of an error or if the mutex is not blocked by any thread, it returns NULL.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
osStatus_t osMutexDelete (osMutexId_t mutex_id)
+
+
Parameters
+ + +
[in]mutex_idmutex ID obtained by osMutexNew.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osMutexDelete deletes a mutex object specified by parameter mutex_id. It releases internal memory obtained for mutex handling. After this call, the mutex_id is no longer valid and cannot be used. The mutex may be created again using the function osMutexNew.

+

Possible osStatus_t return values:

+
    +
  • osOK: the mutex object has been deleted.
  • +
  • osErrorParameter: parameter mutex_id is NULL or invalid.
  • +
  • osErrorResource: the mutex specified by parameter mutex_id is in an invalid mutex state.
  • +
  • osErrorISR: osMutexDelete cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
osMutexId_t mutex_id; // Mutex id populated by the function osMutexNew()
+
+
void DeleteMutex (osMutexId_t mutex_id) {
+
osStatus_t status;
+
+
if (mutex_id != NULL) {
+
status = osMutexDelete(mutex_id);
+
if (status != osOK) {
+
// handle failure code
+
}
+
}
+
}
+
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt.js b/docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt.js new file mode 100644 index 0000000..2569c62 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt.js @@ -0,0 +1,19 @@ +var group__CMSIS__RTOS__MutexMgmt = +[ + [ "osMutexAttr_t", "group__CMSIS__RTOS__MutexMgmt.html#structosMutexAttr__t", [ + [ "name", "group__CMSIS__RTOS__MutexMgmt.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__MutexMgmt.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__MutexMgmt.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__MutexMgmt.html#aa55a4335d12dc2785dc00fdc292d1159", null ] + ] ], + [ "osMutexRecursive", "group__CMSIS__RTOS__MutexMgmt.html#ga65c2482cc64a35d03871f3180f305926", null ], + [ "osMutexPrioInherit", "group__CMSIS__RTOS__MutexMgmt.html#ga40fba270cb31a977b3bd551d41eb9599", null ], + [ "osMutexRobust", "group__CMSIS__RTOS__MutexMgmt.html#gaf0e1dee376798b4d516d164981526780", null ], + [ "osMutexId_t", "group__CMSIS__RTOS__MutexMgmt.html#ga313801836c62deb23055efb55a420e42", null ], + [ "osMutexNew", "group__CMSIS__RTOS__MutexMgmt.html#gab90920022ab944296821368ef6bb52f8", null ], + [ "osMutexGetName", "group__CMSIS__RTOS__MutexMgmt.html#ga00b5e58cd247a412d1afd18732d8b752", null ], + [ "osMutexAcquire", "group__CMSIS__RTOS__MutexMgmt.html#gabc54686ea0fc281823b1763422d2a924", null ], + [ "osMutexRelease", "group__CMSIS__RTOS__MutexMgmt.html#gaea629705703580ff58776bf73c8db915", null ], + [ "osMutexGetOwner", "group__CMSIS__RTOS__MutexMgmt.html#ga7f9a7666df0978738cd570cb700b83fb", null ], + [ "osMutexDelete", "group__CMSIS__RTOS__MutexMgmt.html#gabee73ad227ba4587d3db12ef9bd582bc", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt_structosMutexAttr__t.js b/docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt_structosMutexAttr__t.js new file mode 100644 index 0000000..28b7627 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__MutexMgmt_structosMutexAttr__t.js @@ -0,0 +1,7 @@ +var group__CMSIS__RTOS__MutexMgmt_structosMutexAttr__t = +[ + [ "name", "group__CMSIS__RTOS__MutexMgmt.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__MutexMgmt.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__MutexMgmt.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__MutexMgmt.html#aa55a4335d12dc2785dc00fdc292d1159", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt.html b/docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt.html new file mode 100644 index 0000000..aacfbb5 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt.html @@ -0,0 +1,638 @@ + + + + + +Memory Pool +CMSIS-RTOS2: Memory Pool + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Manage thread-safe fixed-size blocks of dynamic memory. +More...

+ + + + + +

+Data Structures

struct  osMemoryPoolAttr_t
 Attributes structure for memory pool. More...
 
+ + + +

+Typedefs

typedef void * osMemoryPoolId_t
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

osMemoryPoolId_t osMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr)
 Create and Initialize a Memory Pool object. More...
 
const char * osMemoryPoolGetName (osMemoryPoolId_t mp_id)
 Get name of a Memory Pool object. More...
 
void * osMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout)
 Allocate a memory block from a Memory Pool. More...
 
osStatus_t osMemoryPoolFree (osMemoryPoolId_t mp_id, void *block)
 Return an allocated memory block back to a Memory Pool. More...
 
uint32_t osMemoryPoolGetCapacity (osMemoryPoolId_t mp_id)
 Get maximum number of memory blocks in a Memory Pool. More...
 
uint32_t osMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id)
 Get memory block size in a Memory Pool. More...
 
uint32_t osMemoryPoolGetCount (osMemoryPoolId_t mp_id)
 Get number of memory blocks used in a Memory Pool. More...
 
uint32_t osMemoryPoolGetSpace (osMemoryPoolId_t mp_id)
 Get number of memory blocks available in a Memory Pool. More...
 
osStatus_t osMemoryPoolDelete (osMemoryPoolId_t mp_id)
 Delete a Memory Pool object. More...
 
+

Description

+

Memory Pools are fixed-size blocks of memory that are thread-safe. They operate much faster than the dynamically allocated heap and do not suffer from fragmentation. Being thread-safe, they can be accessed from threads and ISRs alike.

+

A Memory Pool can be seen as a linked list of available (unused) memory blocks of fixed and equal size. Allocating memory from a pool (using osMemoryPoolAlloc) simply unchains a block from the list and hands over control to the user. Freeing memory to the pool (using osMemoryPoolFree) simply rechains the block into the list.

+
+mempool.png +
+CMSIS-RTOS Memory Pools
+
Note
One must not write to freed block. It is up to the implementation to reuse the memory of unused blocks for internal control data, i.e. linked list pointers.
+

Shared memory is one of the basic models to exchange information between threads. Using memory pools for exchanging data, you can share more complex objects between threads if compared to a Message Queue. Memory pool management functions are used to define and manage such fixed-sized memory pools.

+
Note
The functions osMemoryPoolAlloc, osMemoryPoolFree, osMemoryPoolGetCapacity, osMemoryPoolGetBlockSize, osMemoryPoolGetCount, osMemoryPoolGetSpace can be called from Interrupt Service Routines.
+
+Refer to Memory Pool Configuration for RTX5 configuration options.
+

Data Structure Documentation

+ +
+
+ + + + +
struct osMemoryPoolAttr_t
+
+

Attributes to configure a memory pool.

+

Refer to Memory Management for details about usage of

+ +
+ + + + + + + + + + + + + + + + + + + +
Data Fields
+const char * +name +name of the memory pool

Pointer to a string with a human readable name of the memory pool object.
+Default: NULL.

+
+uint32_t +attr_bits +attribute bits

Reserved for future use (set to '0').
+Default: 0.

+
+void * +cb_mem +memory for control block

Pointer to a memory location for the memory pool control block object. This can optionally be used for custom memory management systems.
+Default: NULL (uses kernel memory management).

+
+uint32_t +cb_size +size of provided memory for control block

The size of the memory block passed with cb_mem. Must be the size of a memory pool control block object or larger.

+
+void * +mp_mem +memory for data storage

Pointer to a memory location for the data of the memory pool object.
+Default: NULL.

+
+uint32_t +mp_size +size of provided memory for data storage

The size of the memory passed with mp_mem.

+
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
osMemoryPoolId_t
+
+

Memory Pool ID identifies the memory pool.

+

Returned by:

+ + +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
osMemoryPoolId_t osMemoryPoolNew (uint32_t block_count,
uint32_t block_size,
const osMemoryPoolAttr_tattr 
)
+
+
Parameters
+ + + + +
[in]block_countmaximum number of memory blocks in memory pool.
[in]block_sizememory block size in bytes.
[in]attrmemory pool attributes; NULL: default values.
+
+
+
Returns
memory pool ID for reference by other functions or NULL in case of error.
+

The function osMemoryPoolNew creates and initializes a memory pool object and returns the pointer to the memory pool object identifier or NULL in case of an error. It can be safely called before the RTOS is started (call to osKernelStart), but not before it is initialized (call to osKernelInitialize).

+

The total amount of memory needed is at least block_count * block_size. Memory from the pool can only be allocated/freed in fixed portions of block_size.

+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h" // CMSIS RTOS header file
+
+
/*----------------------------------------------------------------------------
+
* Memory Pool creation & usage
+
*---------------------------------------------------------------------------*/
+
+
#define MEMPOOL_OBJECTS 16 // number of Memory Pool Objects
+
+
typedef struct { // object data type
+
uint8_t Buf[32];
+
uint8_t Idx;
+
} MEM_BLOCK_t;
+
+
void Thread_MemPool (void *argument); // thread function
+
osThreadId_t tid_Thread_MemPool; // thread id
+
+
osMemoryPoolId_t mpid_MemPool; // memory pool id
+
+
int Init_MemPool (void)
+
{
+
+
mpid_MemPool = osMemoryPoolNew(MEMPOOL_OBJECTS,sizeof(MEM_BLOCK_t), NULL);
+
if (mpid_MemPool == NULL) {
+
; // MemPool object not created, handle failure
+
}
+
+
tid_Thread_MemPool = osThreadNew (Thread_MemPool,NULL , NULL);
+
if (tid_Thread_MemPool == NULL) {
+
return(-1);
+
}
+
+
return(0);
+
}
+
+
void Thread_MemPool (void *argument)
+
{
+
osStatus_t status;
+
MEM_BLOCK_t *pMem = 0;
+
+
while (1) {
+
; // Insert thread code here...
+
+
pMem = (MEM_BLOCK_t *)osMemoryPoolAlloc (mpid_MemPool, NULL); // get Mem Block
+
if (pMem) { // Mem Block was available
+
pMem->Buf[0] = 0x55; // do some work...
+
pMem->Idx = 0;
+
+
status = osMemoryPoolFree (mpid_MemPool, pMem); // free mem block
+
switch (status) {
+
case osOK:
+
break;
+ +
break;
+ +
break;
+
default:
+
break;
+
}
+
}
+
+
osThreadYield (); // suspend thread
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
const char * osMemoryPoolGetName (osMemoryPoolId_t mp_id)
+
+
Parameters
+ + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
+
+
+
Returns
name as null-terminated string.
+

The function osMemoryPoolGetName returns the pointer to the name string of the memory pool identified by parameter mp_id or NULL in case of an error.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void * osMemoryPoolAlloc (osMemoryPoolId_t mp_id,
uint32_t timeout 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+
Returns
address of the allocated memory block or NULL in case of no memory is available.
+

The blocking function osMemoryPoolAlloc allocates the memory pool parameter mp_id and returns a pointer to the address of the allocated memory or 0 in case of an error.

+

The parameter timeout specifies how long the system waits to allocate the memory. While the system waits, the thread that is calling this function is put into the BLOCKED state. The thread will become READY as soon as at least one block of memory gets available.

+

The parameter timeout can have the following values:

+
    +
  • when timeout is 0, the function returns instantly (i.e. try semantics).
  • +
  • when timeout is set to osWaitForever the function will wait for an infinite time until the memory is allocated (i.e. wait semantics).
  • +
  • all other values specify a time in kernel ticks for a timeout (i.e. timed-wait semantics).
  • +
+

The result is the pointer to the memory block allocated, or NULL if no memory is available.

+
Note
It is in the responsibility of the user to respect the block size, i.e. not access memory beyond the blocks limit.
+
+May be called from Interrupt Service Routines if the parameter timeout is set to 0.
+

Code Example

+

Refer to osMemoryPoolNew.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
osStatus_t osMemoryPoolFree (osMemoryPoolId_t mp_id,
void * block 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]blockaddress of the allocated memory block to be returned to the memory pool.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osMemoryPoolFree frees the memory pool block specified by the parameter block in the memory pool object specified by the parameter mp_id. The memory block is put back to the list of available blocks.

+

If another thread is waiting for memory to become available the thread is put to READY state.

+

Possible osStatus_t return values:

+
    +
  • osOK: the memory has been freed.
  • +
  • osErrorParameter: parameter mp_id is NULL or invalid, block points to invalid memory.
  • +
  • osErrorResource: the memory pool specified by parameter mp_id is in an invalid memory pool state.
  • +
+
Note
osMemoryPoolFree may perform certain checks on the block pointer given. But using osMemoryPoolFree with a pointer other than one received from osMemoryPoolAlloc has UNPREDICTED behaviour.
+
+This function may be called from Interrupt Service Routines.
+

Code Example

+

Refer to osMemoryPoolNew.

+ +
+
+ +
+
+ + + + + + + + +
uint32_t osMemoryPoolGetCapacity (osMemoryPoolId_t mp_id)
+
+
Parameters
+ + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
+
+
+
Returns
maximum number of memory blocks.
+

The function osMemoryPoolGetCapacity returns the maximum number of memory blocks in the memory pool object specified by parameter mp_id or 0 in case of an error.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id)
+
+
Parameters
+ + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
+
+
+
Returns
memory block size in bytes.
+

The function osMemoryPoolGetBlockSize returns the memory block size in bytes in the memory pool object specified by parameter mp_id or 0 in case of an error.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osMemoryPoolGetCount (osMemoryPoolId_t mp_id)
+
+
Parameters
+ + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
+
+
+
Returns
number of memory blocks used.
+

The function osMemoryPoolGetCount returns the number of memory blocks used in the memory pool object specified by parameter mp_id or 0 in case of an error.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osMemoryPoolGetSpace (osMemoryPoolId_t mp_id)
+
+
Parameters
+ + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
+
+
+
Returns
number of memory blocks available.
+

The function osMemoryPoolGetSpace returns the number of memory blocks available in the memory pool object specified by parameter mp_id or 0 in case of an error.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
osStatus_t osMemoryPoolDelete (osMemoryPoolId_t mp_id)
+
+
Parameters
+ + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osMemoryPoolDelete deletes a memory pool object specified by parameter mp_id. It releases internal memory obtained for memory pool handling. After this call, the mp_id is no longer valid and cannot be used. The memory pool may be created again using the function osMemoryPoolNew.

+

Possible osStatus_t return values:

+
    +
  • osOK: the memory pool object has been deleted.
  • +
  • osErrorParameter: parameter mp_id is NULL or invalid.
  • +
  • osErrorResource: the memory pool specified by parameter mp_id is in an invalid memory pool state.
  • +
  • osErrorISR: osMemoryPoolDelete cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt.js b/docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt.js new file mode 100644 index 0000000..061aa89 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt.js @@ -0,0 +1,21 @@ +var group__CMSIS__RTOS__PoolMgmt = +[ + [ "osMemoryPoolAttr_t", "group__CMSIS__RTOS__PoolMgmt.html#structosMemoryPoolAttr__t", [ + [ "name", "group__CMSIS__RTOS__PoolMgmt.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__PoolMgmt.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__PoolMgmt.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__PoolMgmt.html#aa55a4335d12dc2785dc00fdc292d1159", null ], + [ "mp_mem", "group__CMSIS__RTOS__PoolMgmt.html#a5799465cca9c71c5587ceb0986f5b06a", null ], + [ "mp_size", "group__CMSIS__RTOS__PoolMgmt.html#a66c26015c0ac8e88a4ad907c120aee4f", null ] + ] ], + [ "osMemoryPoolId_t", "group__CMSIS__RTOS__PoolMgmt.html#ga2e44473caf338266f56800960294f960", null ], + [ "osMemoryPoolNew", "group__CMSIS__RTOS__PoolMgmt.html#ga497ced5d72dc5cd405c4c418516220dc", null ], + [ "osMemoryPoolGetName", "group__CMSIS__RTOS__PoolMgmt.html#gab414a1e138205a55820acfa277c8f386", null ], + [ "osMemoryPoolAlloc", "group__CMSIS__RTOS__PoolMgmt.html#ga8ead54e99ccb8f112356c88f99d38fbe", null ], + [ "osMemoryPoolFree", "group__CMSIS__RTOS__PoolMgmt.html#gabb4f4560daa6d1f8c8789082ee186d16", null ], + [ "osMemoryPoolGetCapacity", "group__CMSIS__RTOS__PoolMgmt.html#gad696e94bfbe28f0b6613f9303fdf6a37", null ], + [ "osMemoryPoolGetBlockSize", "group__CMSIS__RTOS__PoolMgmt.html#gab2bf059b7fa7679c3cccdaeec60b6c0e", null ], + [ "osMemoryPoolGetCount", "group__CMSIS__RTOS__PoolMgmt.html#ga958a9449bff8c95ce213de98eef5739d", null ], + [ "osMemoryPoolGetSpace", "group__CMSIS__RTOS__PoolMgmt.html#ga0394cffa9479a7994e3b03c79c1cb909", null ], + [ "osMemoryPoolDelete", "group__CMSIS__RTOS__PoolMgmt.html#ga8c39e7e5cd2b9eda907466808e59d62e", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt_structosMemoryPoolAttr__t.js b/docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt_structosMemoryPoolAttr__t.js new file mode 100644 index 0000000..969141b --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__PoolMgmt_structosMemoryPoolAttr__t.js @@ -0,0 +1,9 @@ +var group__CMSIS__RTOS__PoolMgmt_structosMemoryPoolAttr__t = +[ + [ "name", "group__CMSIS__RTOS__PoolMgmt.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__PoolMgmt.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__PoolMgmt.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__PoolMgmt.html#aa55a4335d12dc2785dc00fdc292d1159", null ], + [ "mp_mem", "group__CMSIS__RTOS__PoolMgmt.html#a5799465cca9c71c5587ceb0986f5b06a", null ], + [ "mp_size", "group__CMSIS__RTOS__PoolMgmt.html#a66c26015c0ac8e88a4ad907c120aee4f", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt.html b/docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt.html new file mode 100644 index 0000000..38d76d2 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt.html @@ -0,0 +1,554 @@ + + + + + +Semaphores +CMSIS-RTOS2: Semaphores + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Access shared resources simultaneously from different threads. +More...

+ + + + + +

+Data Structures

struct  osSemaphoreAttr_t
 Attributes structure for semaphore. More...
 
+ + + +

+Typedefs

typedef void * osSemaphoreId_t
 
+ + + + + + + + + + + + + + + + + + + +

+Functions

osSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr)
 Create and Initialize a Semaphore object. More...
 
const char * osSemaphoreGetName (osSemaphoreId_t semaphore_id)
 Get name of a Semaphore object. More...
 
osStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout)
 Acquire a Semaphore token or timeout if no tokens are available. More...
 
osStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id)
 Release a Semaphore token up to the initial maximum count. More...
 
uint32_t osSemaphoreGetCount (osSemaphoreId_t semaphore_id)
 Get current Semaphore token count. More...
 
osStatus_t osSemaphoreDelete (osSemaphoreId_t semaphore_id)
 Delete a Semaphore object. More...
 
+

Description

+

Semaphores are used to manage and protect access to shared resources. Semaphores are very similar to Mutexes. Whereas a Mutex permits just one thread to access a shared resource at a time, a semaphore can be used to permit a fixed number of threads/ISRs to access a pool of shared resources. Using semaphores, access to a group of identical peripherals can be managed (for example multiple DMA channels).

+
+Semaphore.png +
+CMSIS-RTOS Semaphore
+

A semaphore object should be initialized to the maximum number of available tokens. This number of available resources is specified as parameter of the osSemaphoreNew function. Each time a semaphore token is obtained with osSemaphoreAcquire (in available state), the semaphore count is decremented. When the semaphore count is 0 (i.e. depleted state), no more semaphore tokens can be obtained. The thread/ISR that tries to obtain the semaphore token needs to wait until the next token is free. Semaphores are released with osSemaphoreRelease incrementing the semaphore count.

+
+semaphore_states.png +
+CMSIS-RTOS Semaphore States
+
Note
The functions osSemaphoreAcquire, osSemaphoreGetCount, and osSemaphoreRelease can be called from Interrupt Service Routines.
+
+Refer to Semaphore Configuration for RTX5 configuration options.
+

Semaphore Use Cases

+

Due to their flexibility, semaphores cover a wide range of synchronizing applications. At the same time, they are perhaps the most challenging RTOS object to understand. The following explains a use case for semaphores, taken from the book The Little Book Of Semaphores by Allen B. Downey which is available for free download.

+

Non-binary Semaphore (Multiplex)

+

A multiplex limits the number of threads that can access a critical section of code. For example, this could be a function accessing DMA resources which can only support a limited number of calls.

+

To allow multiple threads to run the function, initialize a semaphore to the maximum number of threads that can be allowed. The number of tokens in the semaphore represents the number of additional threads that may enter. If this number is zero, then the next thread trying to access the function will have to wait until one of the other threads exits and releases its token. When all threads have exited the token number is back to n. The following example shows the code for one of the threads that might access the resource:

+
osSemaphoreId_t multiplex_id;
+
+
void thread_n (void)
+
{
+
multiplex_id = osSemaphoreNew(3, 3, NULL);
+
while(1)
+
{
+ +
// do something
+
osSemaphoreRelease(multiplex_id);
+
}
+
}
+

Producer/Consumer Semaphore

+

The producer-consumer problem can be solved using two semaphores.

+

A first semaphore (empty_id) counts down the available (empty) buffers, i.e. the producer thread can wait for available buffer slots by acquiring from this one.

+

A second semaphore (filled_id) counts up the used (filled) buffers, i.e. the consumer thread can wait for available data by acquiring from this one.

+

It is crucial for the correct behaviour that the threads acquire and release on both semaphores in the given sequence. According to this example one can have multiple producer and/or consumer threads running concurrently.

+
#define BUFFER_SIZE 10
+
osSemaphoreId_t empty_id = osSemaphoreNew(BUFFER_SIZE, BUFFER_SIZE, NULL);
+
osSemaphoreId_t filled_id = osSemaphoreNew(BUFFER_SIZE, 0, NULL);
+
+
void producer_thread (void)
+
{
+
while(1)
+
{
+ +
// produce data
+
osSemaphoreRelease(filled_id);
+
}
+
}
+
+
void consumer_thread (void)
+
{
+
while(1)
+
{
+ +
// consume data
+
osSemaphoreRelease(empty_id);
+
}
+
}
+

Data Structure Documentation

+ +
+
+ + + + +
struct osSemaphoreAttr_t
+
+

Specifies the following attributes for the osSemaphoreNew function.

+
+ + + + + + + + + + + + + +
Data Fields
+const char * +name +name of the semaphore

Pointer to a constant string with a human readable name (displayed during debugging) of the semaphore object.

+

Default: NULL no name specified.

+
+uint32_t +attr_bits +attribute bits

Reserved for future use (must be set to '0' for future compatibility).

+
+void * +cb_mem +memory for control block

Pointer to a memory for the semaphore control block object. Refer to Static Object Memory for more information.

+

Default: NULL to use Automatic Dynamic Allocation for the semaphore control block.

+
+uint32_t +cb_size +size of provided memory for control block

The size (in bytes) of memory block passed with cb_mem. For RTX, the minimum value is defined with osRtxSemaphoreCbSize (higher values are permitted).

+

Default: 0 as the default is no memory provided with cb_mem.

+
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
osSemaphoreId_t
+
+

Semaphore ID identifies the semaphore.

+

Returned by:

+ + +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
osSemaphoreId_t osSemaphoreNew (uint32_t max_count,
uint32_t initial_count,
const osSemaphoreAttr_tattr 
)
+
+
Parameters
+ + + + +
[in]max_countmaximum number of available tokens.
[in]initial_countinitial number of available tokens.
[in]attrsemaphore attributes; NULL: default values.
+
+
+
Returns
semaphore ID for reference by other functions or NULL in case of error.
+

The function osSemaphoreNew creates and initializes a semaphore object that is used to manage access to shared resources and returns the pointer to the semaphore object identifier or NULL in case of an error. It can be safely called before the RTOS is started (call to osKernelStart), but not before it is initialized (call to osKernelInitialize).

+

The parameter max_count specifies the maximum number of available tokens. A max_count value of 1 creates a binary semaphore.

+

The parameter initial_count sets the initial number of available tokens.

+

The parameter attr specifies additional semaphore attributes. Default attributes will be used if set to NULL.

+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h" // CMSIS RTOS header file
+
+
void Thread_Semaphore (void *argument); // thread function
+
osThreadId_t tid_Thread_Semaphore; // thread id
+
+
osSemaphoreId_t sid_Thread_Semaphore; // semaphore id
+
+
int Init_Semaphore (void)
+
{
+
+
sid_Thread_Semaphore = osSemaphoreNew(2, 2, NULL);
+
if (!sid_Thread_Semaphore) {
+
; // Semaphore object not created, handle failure
+
}
+
+
tid_Thread_Semaphore = osThreadNew (Thread_Semaphore, NULL, NULL);
+
if (!tid_Thread_Semaphore) {
+
return(-1);
+
}
+
+
return(0);
+
}
+
+
void Thread_Semaphore (void *argument)
+
{
+
osStatus_t val;
+
+
while (1) {
+
; // Insert thread code here...
+
+
val = osSemaphoreAcquire (sid_Thread_Semaphore, 10); // wait for max. 10 ticks for semaphore token to get available
+
switch (val) {
+
case osOK:
+
; // Use protected code here...
+
osSemaphoreRelease (sid_Thread_Semaphore); // Return a token back to a semaphore
+
break;
+ +
break;
+ +
break;
+
default:
+
break;
+
}
+
+
osThreadYield (); // suspend thread
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
const char * osSemaphoreGetName (osSemaphoreId_t semaphore_id)
+
+
Parameters
+ + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
+
+
+
Returns
name as null-terminated string.
+

The function osSemaphoreGetName returns the pointer to the name string of the semaphore identified by parameter semaphore_id or NULL in case of an error.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
osStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id,
uint32_t timeout 
)
+
+
Parameters
+ + + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The blocking function osSemaphoreAcquire waits until a token of the semaphore object specified by parameter semaphore_id becomes available. If a token is available, the function instantly returns and decrements the token count.

+

The parameter timeout specifies how long the system waits to acquire the token. While the system waits, the thread that is calling this function is put into the BLOCKED state. The parameter timeout can have the following values:

+
    +
  • when timeout is 0, the function returns instantly (i.e. try semantics).
  • +
  • when timeout is set to osWaitForever the function will wait for an infinite time until the semaphore becomes available (i.e. wait semantics).
  • +
  • all other values specify a time in kernel ticks for a timeout (i.e. timed-wait semantics).
  • +
+

Possible osStatus_t return values:

+
    +
  • osOK: the token has been obtained.
  • +
  • osErrorTimeout: the token could not be obtained in the given time.
  • +
  • osErrorResource: the token could not be obtained when no timeout was specified.
  • +
  • osErrorParameter: the parameter semaphore_id is incorrect.
  • +
+
Note
May be called from Interrupt Service Routines if the parameter timeout is set to 0.
+

Code Example

+

Refer to osSemaphoreNew.

+ +
+
+ +
+
+ + + + + + + + +
osStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id)
+
+
Parameters
+ + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osSemaphoreRelease releases a token of the semaphore object specified by parameter semaphore_id. Tokens can only be released up to the maximum count specified at creation time, see osSemaphoreNew. Other threads that currently wait for a token of this semaphore object will be put into the READY state.

+

Possible osStatus_t return values:

+
    +
  • osOK: the token has been correctly released and the count increased.
  • +
  • osErrorResource: the maximum token count has been reached.
  • +
  • osErrorParameter: the parameter semaphore_id is incorrect.
  • +
+
Note
This function may be called from Interrupt Service Routines.
+

Code Example

+

Refer to osSemaphoreNew.

+ +
+
+ +
+
+ + + + + + + + +
uint32_t osSemaphoreGetCount (osSemaphoreId_t semaphore_id)
+
+
Parameters
+ + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
+
+
+
Returns
number of tokens available.
+

The function osSemaphoreGetCount returns the number of available tokens of the semaphore object specified by parameter semaphore_id. In case of an error it returns 0.

+
Note
This function may be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
osStatus_t osSemaphoreDelete (osSemaphoreId_t semaphore_id)
+
+
Parameters
+ + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osSemaphoreDelete deletes a semaphore object specified by parameter semaphore_id. It releases internal memory obtained for semaphore handling. After this call, the semaphore_id is no longer valid and cannot be used. The semaphore may be created again using the function osSemaphoreNew.

+

Possible osStatus_t return values:

+
    +
  • osOK: the semaphore object has been deleted.
  • +
  • osErrorParameter: the parameter semaphore_id is NULL or invalid.
  • +
  • osErrorResource: the semaphore specified by parameter semaphore_id is in an invalid semaphore state.
  • +
  • osErrorISR: osSemaphoreDelete cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt.js b/docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt.js new file mode 100644 index 0000000..cf5b4b6 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt.js @@ -0,0 +1,16 @@ +var group__CMSIS__RTOS__SemaphoreMgmt = +[ + [ "osSemaphoreAttr_t", "group__CMSIS__RTOS__SemaphoreMgmt.html#structosSemaphoreAttr__t", [ + [ "name", "group__CMSIS__RTOS__SemaphoreMgmt.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__SemaphoreMgmt.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__SemaphoreMgmt.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__SemaphoreMgmt.html#aa55a4335d12dc2785dc00fdc292d1159", null ] + ] ], + [ "osSemaphoreId_t", "group__CMSIS__RTOS__SemaphoreMgmt.html#ga6e1c1c4b04175bb92b013c8f37249f40", null ], + [ "osSemaphoreNew", "group__CMSIS__RTOS__SemaphoreMgmt.html#ga2a39806ace781a0008a4374ca701b14a", null ], + [ "osSemaphoreGetName", "group__CMSIS__RTOS__SemaphoreMgmt.html#ga9586952051f00285f1482dbe6695bbc4", null ], + [ "osSemaphoreAcquire", "group__CMSIS__RTOS__SemaphoreMgmt.html#ga7e94c8b242a0c81f2cc79ec22895c87b", null ], + [ "osSemaphoreRelease", "group__CMSIS__RTOS__SemaphoreMgmt.html#ga0abcee1b5449d7a6928fb9248c690bb6", null ], + [ "osSemaphoreGetCount", "group__CMSIS__RTOS__SemaphoreMgmt.html#ga7559d4dff3cda9992fc5ab5de3e74c70", null ], + [ "osSemaphoreDelete", "group__CMSIS__RTOS__SemaphoreMgmt.html#ga81258ce9c67fa89f07cc49d2e136cd88", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt_structosSemaphoreAttr__t.js b/docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt_structosSemaphoreAttr__t.js new file mode 100644 index 0000000..41ef6a9 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__SemaphoreMgmt_structosSemaphoreAttr__t.js @@ -0,0 +1,7 @@ +var group__CMSIS__RTOS__SemaphoreMgmt_structosSemaphoreAttr__t = +[ + [ "name", "group__CMSIS__RTOS__SemaphoreMgmt.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__SemaphoreMgmt.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__SemaphoreMgmt.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__SemaphoreMgmt.html#aa55a4335d12dc2785dc00fdc292d1159", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__ThreadFlagsMgmt.html b/docs/RTOS2/html/group__CMSIS__RTOS__ThreadFlagsMgmt.html new file mode 100644 index 0000000..5c25af2 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__ThreadFlagsMgmt.html @@ -0,0 +1,376 @@ + + + + + +Thread Flags +CMSIS-RTOS2: Thread Flags + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Thread Flags
+
+
+ +

Synchronize threads using flags. +More...

+ + + + + + + + + + + + + + +

+Functions

uint32_t osThreadFlagsSet (osThreadId_t thread_id, uint32_t flags)
 Set the specified Thread Flags of a thread. More...
 
uint32_t osThreadFlagsClear (uint32_t flags)
 Clear the specified Thread Flags of current running thread. More...
 
uint32_t osThreadFlagsGet (void)
 Get the current Thread Flags of current running thread. More...
 
uint32_t osThreadFlagsWait (uint32_t flags, uint32_t options, uint32_t timeout)
 Wait for one or more Thread Flags of the current running thread to become signaled. More...
 
+

Description

+

Thread Flags are a more specialized version of the Event Flags. See Event Flags. While Event Flags can be used to globally signal a number of threads, thread flags are only send to a single specific thread. Every thread instance can receive thread flags without any additional allocation of a thread flags object.

+
Note
Thread flag management functions cannot be called from Interrupt Service Routines, except for osThreadFlagsSet.
+

Usage Example

+

The following (incomplete) code excerpt sketches the usage principals for Thread Flags.

+

The behavior is the following:

+
    +
  • app_main starts executing
  • +
  • statement A sets thread flags to 0x02 (flags = 0x02 – after set)
  • +
  • app_main enters delay
  • +
  • execution switches to threadX
  • +
  • statement B waits for flag 0x01 and blocks since flag is not set
  • +
  • execution switches to app_main
  • +
  • statement C sets thread flags to 0x07
  • +
  • threadX wakes-up and clears flag 0x01, thread flags = 0x06, return value set to 0x07 (before clear), note: all this happens during statement C
  • +
  • statement C returns with flags = 0x06
  • +
  • app_main enters delay
  • +
  • execution switches to threadX
  • +
  • statement B returns with flagsX = 0x07
  • +
+
#include "cmsis_os2.h"
+
+ +
uint32_t flagsX;
+
uint32_t flags;
+
+
void threadX (void *argument) {
+
+
osDelay(1U);
+
for (;;) {
+
flagsX = osThreadFlagsWait(0x0001U, osFlagsWaitAny, osWaitForever); /* B */
+
}
+
}
+
+
void app_main (void *argument) {
+
+
tid = osThreadNew(threadX, NULL, NULL);
+
+
flags = osThreadFlagsSet(tid, 0x0002U); /* A */
+
osDelay(2U);
+
flags = osThreadFlagsSet(tid, 0x0005U); /* C */
+
osDelay(2U);
+
+
for(;;);
+
}
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t osThreadFlagsSet (osThreadId_t thread_id,
uint32_t flags 
)
+
+
Parameters
+ + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
[in]flagsspecifies the flags of the thread that shall be set.
+
+
+
Returns
thread flags after setting or error code if highest bit set.
+

The function osThreadFlagsSet sets the thread flags for a thread specified by parameter thread_id. It returns the flags set, or an error code if highest bit is set (refer to Flags Functions Error Codes). This function may be used also within interrupt service routines. Threads waiting for a flag to be set will resume from BLOCKED state.

+

Possible Flags Functions Error Codes return values:

+
    +
  • osFlagsErrorUnknown: Unspecified error.
  • +
  • osFlagsErrorResource: Thread specified by parameter thread_id is not active to receive flags.
  • +
  • osFlagsErrorParameter: Parameter thread_id is not a valid thread or flags has highest bit set.
  • +
+
Note
This function may be called from Interrupt Service Routines.
+

Code Example

+
/*----------------------------------------------------------------------------
+
* Function 'signal_func' called from multiple threads
+
*---------------------------------------------------------------------------*/
+
void signal_func (osThreadId_t tid) {
+
osThreadFlagsSet(tid_clock, 0x0100); /* set signal to clock thread */
+
osDelay(500); /* delay 500ms */
+
osThreadFlagsSet(tid_clock, 0x0100); /* set signal to clock thread */
+
osDelay(500); /* delay 500ms */
+
osThreadFlagsSet(tid, 0x0001); /* set signal to thread 'thread' */
+
osDelay(500); /* delay 500ms */
+
}
+
+
+
+ +
+
+ + + + + + + + +
uint32_t osThreadFlagsClear (uint32_t flags)
+
+
Parameters
+ + +
[in]flagsspecifies the flags of the thread that shall be cleared.
+
+
+
Returns
thread flags before clearing or error code if highest bit set.
+

The function osThreadFlagsClear clears the specified flags for the currently running thread. It returns the flags before clearing, or an error code if highest bit is set (refer to Flags Functions Error Codes).

+

Possible Flags Functions Error Codes return values:

+
    +
  • osFlagsErrorUnknown: Unspecified error, i.e. not called from a running threads context.
  • +
  • osFlagsErrorResource: Running thread is not active to receive flags.
  • +
  • osFlagsErrorParameter: Parameter flags has highest bit set.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osThreadFlagsGet (void )
+
+
Returns
current thread flags.
+

The function osThreadFlagsGet returns the flags currently set for the currently running thread. If called without a active and currently running thread osThreadFlagsGet return zero.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint32_t osThreadFlagsWait (uint32_t flags,
uint32_t options,
uint32_t timeout 
)
+
+
Parameters
+ + + + +
[in]flagsspecifies the flags to wait for.
[in]optionsspecifies flags options (osFlagsXxxx).
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+
Returns
thread flags before clearing or error code if highest bit set.
+

The function osThreadFlagsWait suspends the execution of the currently RUNNING thread until any or all of the thread flags specified with the parameter flags are set. When these thread flags are already set, the function returns instantly. Otherwise the thread is put into the state BLOCKED.

+

The parameter options specifies the wait condition:

+ + + + + + + + + +
Option
osFlagsWaitAny Wait for any flag (default).
osFlagsWaitAll Wait for all flags.
osFlagsNoClear Do not clear flags which have been specified to wait for.
+

If osFlagsNoClear is set in the options osThreadFlagsClear can be used to clear flags manually. Otherwise osThreadFlagsWait automatically clears the flags waited for.

+

The parameter timeout represents a number of timer ticks and is an upper bound. The exact time delay depends on the actual time elapsed since the last timer tick.

+

The function returns the flags before clearing, or an error code if highest bit is set (refer to Flags Functions Error Codes).

+

Possible Flags Functions Error Codes return values:

+
    +
  • osFlagsErrorUnknown: Unspecified error, i.e. not called from a running threads context.
  • +
  • osFlagsErrorTimeout: The awaited flags has not been set during given timeout.
  • +
  • osFlagsErrorResource: Running thread is not active to receive flags.
  • +
  • osFlagsErrorParameter: Parameter flags has highest bit set.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Thread (void* arg) {
+
;
+
osThreadFlagsWait (0x00000001U, osFlagsWaitAny, osWaitForever); // Wait forever until thread flag 1 is set.
+
;
+
osThreadFlagsWait (0x00000003U, osFlagsWaitAny, osWaitForever); // Wait forever until either thread flag 0 or 1 is set.
+
;
+
osThreadFlagsWait (0x00000003U, osFlagsWaitAll, 10); // Wait for 10 timer ticks until thread flags 0 and 1 are set. Timeout afterwards.
+
;
+
osThreadFlagsWait (0x00000003U, osFlagsWaitAll | osFlagsNoClear, osWaitForever); // Same as the above, but the flags will not be cleared.
+
}
+
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__ThreadFlagsMgmt.js b/docs/RTOS2/html/group__CMSIS__RTOS__ThreadFlagsMgmt.js new file mode 100644 index 0000000..80852eb --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__ThreadFlagsMgmt.js @@ -0,0 +1,7 @@ +var group__CMSIS__RTOS__ThreadFlagsMgmt = +[ + [ "osThreadFlagsSet", "group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga6f89ef9caded1d9963c7b12b0f6412c9", null ], + [ "osThreadFlagsClear", "group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga656abc1c862c5b9a2b13584c42cc0bfa", null ], + [ "osThreadFlagsGet", "group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga85c8d2c89466e25abbcb545d9ddd71ba", null ], + [ "osThreadFlagsWait", "group__CMSIS__RTOS__ThreadFlagsMgmt.html#gac11542ad6300b600f872fc96e340ec2b", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt.html b/docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt.html new file mode 100644 index 0000000..dba38af --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt.html @@ -0,0 +1,1467 @@ + + + + + +Thread Management +CMSIS-RTOS2: Thread Management + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Define, create, and control thread functions. +More...

+ + + + + +

+Data Structures

struct  osThreadAttr_t
 Attributes structure for thread. More...
 
+ + + + + + + +

+Macros

#define osThreadJoinable   0x00000001U
 Thread created in joinable mode. More...
 
#define osThreadDetached   0x00000000U
 Thread created in detached mode (default) More...
 
+ + + + + + +

+Typedefs

typedef void(* osThreadFunc_t )(void *argument)
 Entry point of a thread. More...
 
typedef void * osThreadId_t
 
+ + + + + + + +

+Enumerations

enum  osThreadState_t {
+  osThreadInactive = 0, +
+  osThreadReady = 1, +
+  osThreadRunning = 2, +
+  osThreadBlocked = 3, +
+  osThreadTerminated = 4, +
+  osThreadError = -1, +
+  osThreadReserved = 0x7FFFFFFF +
+ }
 Thread state. More...
 
enum  osPriority_t {
+  osPriorityNone = 0, +
+  osPriorityIdle = 1, +
+  osPriorityLow = 8, +
+  osPriorityLow1 = 8+1, +
+  osPriorityLow2 = 8+2, +
+  osPriorityLow3 = 8+3, +
+  osPriorityLow4 = 8+4, +
+  osPriorityLow5 = 8+5, +
+  osPriorityLow6 = 8+6, +
+  osPriorityLow7 = 8+7, +
+  osPriorityBelowNormal = 16, +
+  osPriorityBelowNormal1 = 16+1, +
+  osPriorityBelowNormal2 = 16+2, +
+  osPriorityBelowNormal3 = 16+3, +
+  osPriorityBelowNormal4 = 16+4, +
+  osPriorityBelowNormal5 = 16+5, +
+  osPriorityBelowNormal6 = 16+6, +
+  osPriorityBelowNormal7 = 16+7, +
+  osPriorityNormal = 24, +
+  osPriorityNormal1 = 24+1, +
+  osPriorityNormal2 = 24+2, +
+  osPriorityNormal3 = 24+3, +
+  osPriorityNormal4 = 24+4, +
+  osPriorityNormal5 = 24+5, +
+  osPriorityNormal6 = 24+6, +
+  osPriorityNormal7 = 24+7, +
+  osPriorityAboveNormal = 32, +
+  osPriorityAboveNormal1 = 32+1, +
+  osPriorityAboveNormal2 = 32+2, +
+  osPriorityAboveNormal3 = 32+3, +
+  osPriorityAboveNormal4 = 32+4, +
+  osPriorityAboveNormal5 = 32+5, +
+  osPriorityAboveNormal6 = 32+6, +
+  osPriorityAboveNormal7 = 32+7, +
+  osPriorityHigh = 40, +
+  osPriorityHigh1 = 40+1, +
+  osPriorityHigh2 = 40+2, +
+  osPriorityHigh3 = 40+3, +
+  osPriorityHigh4 = 40+4, +
+  osPriorityHigh5 = 40+5, +
+  osPriorityHigh6 = 40+6, +
+  osPriorityHigh7 = 40+7, +
+  osPriorityRealtime = 48, +
+  osPriorityRealtime1 = 48+1, +
+  osPriorityRealtime2 = 48+2, +
+  osPriorityRealtime3 = 48+3, +
+  osPriorityRealtime4 = 48+4, +
+  osPriorityRealtime5 = 48+5, +
+  osPriorityRealtime6 = 48+6, +
+  osPriorityRealtime7 = 48+7, +
+  osPriorityISR = 56, +
+  osPriorityError = -1, +
+  osPriorityReserved = 0x7FFFFFFF +
+ }
 Priority values. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

osThreadId_t osThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr)
 Create a thread and add it to Active Threads. More...
 
const char * osThreadGetName (osThreadId_t thread_id)
 Get name of a thread. More...
 
osThreadId_t osThreadGetId (void)
 Return the thread ID of the current running thread. More...
 
osThreadState_t osThreadGetState (osThreadId_t thread_id)
 Get current thread state of a thread. More...
 
osStatus_t osThreadSetPriority (osThreadId_t thread_id, osPriority_t priority)
 Change priority of a thread. More...
 
osPriority_t osThreadGetPriority (osThreadId_t thread_id)
 Get current priority of a thread. More...
 
osStatus_t osThreadYield (void)
 Pass control to next thread that is in state READY. More...
 
osStatus_t osThreadSuspend (osThreadId_t thread_id)
 Suspend execution of a thread. More...
 
osStatus_t osThreadResume (osThreadId_t thread_id)
 Resume execution of a thread. More...
 
osStatus_t osThreadDetach (osThreadId_t thread_id)
 Detach a thread (thread storage can be reclaimed when thread terminates). More...
 
osStatus_t osThreadJoin (osThreadId_t thread_id)
 Wait for specified thread to terminate. More...
 
__NO_RETURN void osThreadExit (void)
 Terminate execution of current running thread. More...
 
osStatus_t osThreadTerminate (osThreadId_t thread_id)
 Terminate execution of a thread. More...
 
uint32_t osThreadGetStackSize (osThreadId_t thread_id)
 Get stack size of a thread. More...
 
uint32_t osThreadGetStackSpace (osThreadId_t thread_id)
 Get available stack space of a thread based on stack watermark recording during execution. More...
 
uint32_t osThreadGetCount (void)
 Get number of active threads. More...
 
uint32_t osThreadEnumerate (osThreadId_t *thread_array, uint32_t array_items)
 Enumerate active threads. More...
 
+

Description

+

The Thread Management function group allows defining, creating, and controlling thread functions in the system.

+
Note
Thread management functions cannot be called from Interrupt Service Routines.
+

+

Thread states

+

Threads can be in the following states:

+
    +
  • RUNNING: The thread that is currently running is in the RUNNING state. Only one thread at a time can be in this state.
  • +
  • READY: Threads which are ready to run are in the READY state. Once the RUNNING thread has terminated, or is BLOCKED, the next READY thread with the highest priority becomes the RUNNING thread.
  • +
  • BLOCKED: Threads that are blocked either delayed, waiting for an event to occur or suspended are in the BLOCKED state.
  • +
  • TERMINATED: When osThreadTerminate is called, threads are TERMINATED with resources not yet released.
  • +
  • INACTIVE: Threads that are not created or have been terminated with all resources released are in the INACTIVE state.
  • +
+
+ThreadStatus.png +
+Thread State and State Transitions
+

A CMSIS-RTOS assumes that threads are scheduled as shown in the figure Thread State and State Transitions. The thread states change as follows:

+
    +
  • A thread is created using the function osThreadNew. This puts the thread into the READY or RUNNING state (depending on the thread priority).
  • +
  • CMSIS-RTOS is preemptive. The active thread with the highest priority becomes the RUNNING thread provided it does not wait for any event. The initial priority of a thread is defined with the osThreadAttr_t but may be changed during execution using the function osThreadSetPriority.
  • +
  • The RUNNING thread transfers into the BLOCKED state when it is delayed, waiting for an event or suspended.
  • +
  • Active threads can be terminated any time using the function osThreadTerminate. Threads can terminate also by just returning from the thread function. Threads that are terminated are in the INACTIVE state and typically do not consume any dynamic memory resources.
  • +
+
Note
Refer to Thread Configuration for RTX5 configuration options.
+

+

Thread Examples

+

The following examples show various scenarios to create threads:

+

Example 1 - Create a simple thread

+

Create a thread out of the function thread1 using all default values for thread attributes and memory from the Global Memory Pool.

+
__NO_RETURN void thread1 (void *argument) {
+
// ...
+
for (;;) {}
+
}
+
+
int main (void) {
+ +
;
+
osThreadNew(thread1, NULL, NULL); // Create thread with default settings
+
;
+ +
}
+

Example 2 - Create thread with stack non-default stack size

+

Similar to the simple thread all attributes are default. The stack is dynamically allocated from the Global Memory Pool

+

osThreadAttr_t::stack_size is used to pass the stack size in Bytes to osThreadNew.

+
__NO_RETURN void thread1 (void *argument) {
+
// ...
+
for (;;) {}
+
}
+
+
const osThreadAttr_t thread1_attr = {
+
.stack_size = 1024 // Create the thread stack with a size of 1024 bytes
+
};
+
+
int main (void) {
+
;
+
osThreadNew(thread1, NULL, &thread1_attr); // Create thread with custom sized stack memory
+
;
+
}
+

Example 3 - Create thread with statically allocated stack

+

Similar to the simple thread all attributes are default. The stack is statically allocated using the uint64_t array thread1_stk_1. This allocates 64*8 Bytes (=512 Bytes) with an alignment of 8 Bytes (mandatory for Cortex-M stack memory).

+

osThreadAttr_t::stack_mem holds a pointer to the stacks lowest address.

+

osThreadAttr_t::stack_size is used to pass the stack size in Bytes to osThreadNew.

+
__NO_RETURN void thread1 (void *argument) {
+
// ...
+
for (;;) {}
+
}
+
+
static uint64_t thread1_stk_1[64];
+
+
const osThreadAttr_t thread1_attr = {
+
.stack_mem = &thread1_stk_1[0],
+
.stack_size = sizeof(thread1_stk_1)
+
};
+
+
int main (void) {
+
;
+
osThreadNew(thread1, NULL, &thread1_attr); // Create thread with statically allocated stack memory
+
;
+
}
+

Example 4 - Thread with statically allocated task control block

+

Typically this method is chosen together with a statically allocated stack as shown in Example 2.

+
#include "cmsis_os2.h"
+
+
//include rtx_os.h for types of RTX objects
+
#include "rtx_os.h"
+
+
__NO_RETURN void thread1 (void *argument) {
+
// ...
+
for (;;) {}
+
}
+
+
static osRtxThread_t thread1_tcb;
+
+
const osThreadAttr_t thread1_attr = {
+
.cb_mem = &thread1_tcb,
+
.cb_size = sizeof(thread1_tcb),
+
};
+
+
int main (void) {
+
;
+
osThreadNew(thread1, NULL, &thread1_attr); // Create thread with custom tcb memory
+
;
+
}
+

Example 5 - Create thread with a different priority

+

The default priority of RTX is osPriorityNormal. Often you want to run a task with a higher or lower priority. Using the osThreadAttr_t control structure you can set any initial priority required.

+
__NO_RETURN void thread1 (void *argument) {
+
// ...
+
for (;;) {}
+
}
+
+
const osThreadAttr_t thread1_attr = {
+
.priority = osPriorityHigh //Set initial thread priority to high
+
};
+
+
int main (void) {
+
;
+
osThreadNew(thread1, NULL, &thread1_attr);
+
;
+
}
+

Example 6 - Joinable threads

+

In this example a master thread creates four threads with the osThreadJoinable attribute. These will do some work and return using the osThreadExit call after finished. osThreadJoin is used to synchronize the thread termination.

+
__NO_RETURN void worker (void *argument) {
+
; // work a lot on data[]
+
osDelay(1000);
+ +
}
+
+
__NO_RETURN void thread1 (void *argument) {
+
osThreadAttr_t worker_attr;
+
osThreadId_t worker_ids[4];
+
uint8_t data[4][10];
+
+
memset(&worker_attr, 0, sizeof(worker_attr));
+
worker_attr.attr_bits = osThreadJoinable;
+
+
worker_ids[0] = osThreadNew(worker, &data[0][0], &worker_attr);
+
worker_ids[1] = osThreadNew(worker, &data[1][0], &worker_attr);
+
worker_ids[2] = osThreadNew(worker, &data[2][0], &worker_attr);
+
worker_ids[3] = osThreadNew(worker, &data[3][0], &worker_attr);
+
+
osThreadJoin(worker_ids[0]);
+
osThreadJoin(worker_ids[1]);
+
osThreadJoin(worker_ids[2]);
+
osThreadJoin(worker_ids[3]);
+
+ +
}
+

Data Structure Documentation

+ +
+
+ + + + +
struct osThreadAttr_t
+
+

Specifies the following attributes for the osThreadNew function.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+const char * +name +name of the thread

Pointer to a constant string with a human readable name (displayed during debugging) of the thread object.

+

Default: NULL no name specified (debugger may display function name instead).

+
+uint32_t +attr_bits +attribute bits

The following bit masks can be used to set options:

+ +
+void * +cb_mem +memory for control block

Pointer to a memory for the thread control block object. Refer to Static Object Memory for more information.

+

Default: NULL to use Automatic Dynamic Allocation for the thread control block.

+
+uint32_t +cb_size +size of provided memory for control block

The size (in bytes) of memory block passed with cb_mem. For RTX, the minimum value is defined with osRtxThreadCbSize (higher values are permitted).

+

Default: 0 as the default is no memory provided with cb_mem.

+
+void * +stack_mem +memory for stack

Pointer to a memory location for the thread stack (64-bit aligned).

+

Default: NULL to allocate stack from a fixed-size memory pool using Thread Stack Management.

+
+uint32_t +stack_size +size of stack

The size (in bytes) of the stack specified by stack_mem.

+

Default: 0 as the default is no memory provided with stack_mem.

+
+osPriority_t +priority +initial thread priority (default: osPriorityNormal)

Specifies the initial thread priority with a value from osPriority_t.

+

Default: osPriorityNormal.

+
+TZ_ModuleId_t +tz_module +TrustZone module identifier.

TrustZone Thread Context Management Identifier to allocate context memory for threads. The RTOS kernel that runs in non-secure state calls the interface functions defined by the header file TZ_context.h. Can safely be set to zero for threads not using secure calls at all. See TrustZone RTOS Context Management.

+

Default: token{0} not thread context specified.

+
+uint32_t +reserved +reserved (must be 0)

Reserved for future use.

+
+ +
+
+

Macro Definition Documentation

+ +
+
+ + + + +
#define osThreadJoinable   0x00000001U
+
+

A thread in this state can be joined using osThreadJoin.

+ +
+
+ +
+
+ + + + +
#define osThreadDetached   0x00000000U
+
+

A thread in this state cannot be joined using osThreadJoin.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
void(* osThreadFunc_t)(void *argument)
+
+

Entry function for threads. Setting up a new thread (osThreadNew) will start execution with a call into this entry function. The optional argument can be used to hand over arbitrary user data to the thread, i.e. to identify the thread or for runtime parameters.

+
Parameters
+ + +
[in]argumentArbitrary user data set on osThreadNew.
+
+
+ +
+
+ +
+
+ + + + +
osThreadId_t
+
+

Thread ID identifies the thread.

+

Returned by:

+ + +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum osThreadState_t
+
+

State of a thread as retrieved by osThreadGetState. In case osThreadGetState fails or if it is called from an ISR, it will return osThreadError, otherwise it returns the thread state.

+ + + + + + + + +
Enumerator
osThreadInactive  +

Inactive.

+

The thread is created but not actively used, or has been terminated.

+
osThreadReady  +

Ready.

+

The thread is ready for execution but not currently running.

+
osThreadRunning  +

Running.

+

The thread is currently running.

+
osThreadBlocked  +

Blocked.

+

The thread is currently blocked (delayed, waiting for an event or suspended).

+
osThreadTerminated  +

Terminated.

+

The thread is terminated and all its resources are freed.

+
osThreadError  +

Error.

+

The thread thread has raised an error condition and cannot be scheduled.

+
osThreadReserved  +

Prevents enum down-size compiler optimization.

+
+ +
+
+ +
+
+ + + + +
enum osPriority_t
+
+

The osPriority_t value specifies the priority for a thread. The default thread priority should be osPriorityNormal. If an active thread becomes ready that has a higher priority than the currently running thread then a thread switch occurs immediately. The system continues executing the thread with the higher priority.

+

To prevent from a priority inversion, a CMSIS-RTOS compliant OS may optionally implement a priority inheritance method. A priority inversion occurs when a high priority thread is waiting for a resource or event that is controlled by a thread with a lower priority. Thus causing the high priority thread potentially beeing blocked forever by another thread with lower priority. To come over this issue the low priority thread controlling the resource should be treated as having the higher priority until it releases the resource.

+
Note
Priority inheritance only applies to mutexes.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
osPriorityNone  +

No priority (not initialized).

+
osPriorityIdle  +

Reserved for Idle thread.

+

This lowest priority should not be used for any other thread.

+
osPriorityLow  +

Priority: low.

+
osPriorityLow1  +

Priority: low + 1.

+
osPriorityLow2  +

Priority: low + 2.

+
osPriorityLow3  +

Priority: low + 3.

+
osPriorityLow4  +

Priority: low + 4.

+
osPriorityLow5  +

Priority: low + 5.

+
osPriorityLow6  +

Priority: low + 6.

+
osPriorityLow7  +

Priority: low + 7.

+
osPriorityBelowNormal  +

Priority: below normal.

+
osPriorityBelowNormal1  +

Priority: below normal + 1.

+
osPriorityBelowNormal2  +

Priority: below normal + 2.

+
osPriorityBelowNormal3  +

Priority: below normal + 3.

+
osPriorityBelowNormal4  +

Priority: below normal + 4.

+
osPriorityBelowNormal5  +

Priority: below normal + 5.

+
osPriorityBelowNormal6  +

Priority: below normal + 6.

+
osPriorityBelowNormal7  +

Priority: below normal + 7.

+
osPriorityNormal  +

Priority: normal.

+
osPriorityNormal1  +

Priority: normal + 1.

+
osPriorityNormal2  +

Priority: normal + 2.

+
osPriorityNormal3  +

Priority: normal + 3.

+
osPriorityNormal4  +

Priority: normal + 4.

+
osPriorityNormal5  +

Priority: normal + 5.

+
osPriorityNormal6  +

Priority: normal + 6.

+
osPriorityNormal7  +

Priority: normal + 7.

+
osPriorityAboveNormal  +

Priority: above normal.

+
osPriorityAboveNormal1  +

Priority: above normal + 1.

+
osPriorityAboveNormal2  +

Priority: above normal + 2.

+
osPriorityAboveNormal3  +

Priority: above normal + 3.

+
osPriorityAboveNormal4  +

Priority: above normal + 4.

+
osPriorityAboveNormal5  +

Priority: above normal + 5.

+
osPriorityAboveNormal6  +

Priority: above normal + 6.

+
osPriorityAboveNormal7  +

Priority: above normal + 7.

+
osPriorityHigh  +

Priority: high.

+
osPriorityHigh1  +

Priority: high + 1.

+
osPriorityHigh2  +

Priority: high + 2.

+
osPriorityHigh3  +

Priority: high + 3.

+
osPriorityHigh4  +

Priority: high + 4.

+
osPriorityHigh5  +

Priority: high + 5.

+
osPriorityHigh6  +

Priority: high + 6.

+
osPriorityHigh7  +

Priority: high + 7.

+
osPriorityRealtime  +

Priority: realtime.

+
osPriorityRealtime1  +

Priority: realtime + 1.

+
osPriorityRealtime2  +

Priority: realtime + 2.

+
osPriorityRealtime3  +

Priority: realtime + 3.

+
osPriorityRealtime4  +

Priority: realtime + 4.

+
osPriorityRealtime5  +

Priority: realtime + 5.

+
osPriorityRealtime6  +

Priority: realtime + 6.

+
osPriorityRealtime7  +

Priority: realtime + 7.

+
osPriorityISR  +

Reserved for ISR deferred thread.

+

This highest priority might be used by the RTOS implementation but must not be used for any user thread.

+
osPriorityError  +

System cannot determine priority or illegal priority.

+
osPriorityReserved  +

Prevents enum down-size compiler optimization.

+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
osThreadId_t osThreadNew (osThreadFunc_t func,
void * argument,
const osThreadAttr_tattr 
)
+
+
Parameters
+ + + + +
[in]functhread function.
[in]argumentpointer that is passed to the thread function as start argument.
[in]attrthread attributes; NULL: default values.
+
+
+
Returns
thread ID for reference by other functions or NULL in case of error.
+

The function osThreadNew starts a thread function by adding it to the list of active threads and sets it to state READY. Arguments for the thread function are passed using the parameter pointer *argument. When the priority of the created thread function is higher than the current RUNNING thread, the created thread function starts instantly and becomes the new RUNNING thread. Thread attributes are defined with the parameter pointer attr. Attributes include settings for thread priority, stack size, or memory allocation.

+

The function can be safely called before the RTOS is started (call to osKernelStart), but not before it is initialized (call to osKernelInitialize).

+

The function osThreadNew returns the pointer to the thread object identifier or NULL in case of an error.

+
Note
Cannot be called from Interrupt Service Routines.
+

Code Example

+

Refer to the Thread Examples section.

+ +
+
+ +
+
+ + + + + + + + +
const char * osThreadGetName (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+
Returns
name as null-terminated string.
+

The function osThreadGetName returns the pointer to the name string of the thread identified by parameter thread_id or NULL in case of an error.

+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
void ThreadGetName_example (void) {
+
osThreadId_t thread_id = osThreadGetId ();
+
const char* name = osThreadGetName (thread_id);
+
if (name == NULL) {
+
// Failed to get the thread name; not in a thread
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
osThreadId_t osThreadGetId (void )
+
+
Returns
thread ID for reference by other functions or NULL in case of error.
+

The function osThreadGetId returns the thread object ID of the currently running thread or NULL in case of an error.

+
Note
This function may be called from Interrupt Service Routines.
+

Code Example

+
void ThreadGetId_example (void) {
+
osThreadId_t id; // id for the currently running thread
+
+
id = osThreadGetId ();
+
if (id == NULL) {
+
// Failed to get the id
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
osThreadState_t osThreadGetState (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+
Returns
current thread state of the specified thread.
+

The function osThreadGetState returns the state of the thread identified by parameter thread_id. In case it fails or if it is called from an ISR, it will return osThreadError, otherwise it returns the thread state (refer to osThreadState_t for the list of thread states).

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
osStatus_t osThreadSetPriority (osThreadId_t thread_id,
osPriority_t priority 
)
+
+
Parameters
+ + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
[in]prioritynew priority value for the thread function.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osThreadSetPriority changes the priority of an active thread specified by the parameter thread_id to the priority specified by the parameter priority.

+

Possible osStatus_t return values:

+
    +
  • osOK: the priority of the specified thread has been changed successfully.
  • +
  • osErrorParameter: thread_id is NULL or invalid or priority is incorrect.
  • +
  • osErrorResource: thread specified by parameter thread_id is in an invalid thread state.
  • +
  • osErrorISR: the function osThreadSetPriority cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Thread_1 (void const *arg) { // Thread function
+
osThreadId_t id; // id for the currently running thread
+
osStatus_t status; // status of the executed function
+
+
:
+
id = osThreadGetId (); // Obtain ID of current running thread
+
+
status = osThreadSetPriority (id, osPriorityBelowNormal); // Set thread priority
+
if (status == osOK) {
+
// Thread priority changed to BelowNormal
+
}
+
else {
+
// Failed to set the priority
+
}
+
:
+
}
+
+
+
+ +
+
+ + + + + + + + +
osPriority_t osThreadGetPriority (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+
Returns
current priority value of the specified thread.
+

The function osThreadGetPriority returns the priority of an active thread specified by the parameter thread_id.

+

Possible osPriority_t return values:

+
    +
  • priority: the priority of the specified thread.
  • +
  • osPriorityError: priority cannot be determined or is illegal. It is also returned when the function is called from Interrupt Service Routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Thread_1 (void const *arg) { // Thread function
+
osThreadId_t id; // id for the currently running thread
+
osPriority_t priority; // thread priority
+
+
id = osThreadGetId (); // Obtain ID of current running thread
+
priority = osThreadGetPriority (id); // Obtain the thread priority
+
}
+
+
+
+ +
+
+ + + + + + + + +
osStatus_t osThreadYield (void )
+
+
Returns
status code that indicates the execution status of the function.
+

The function osThreadYield passes control to the next thread with the same priority that is in the READY state. If there is no other thread with the same priority in state READY, then the current thread continues execution and no thread switch occurs. osThreadYield does not set the thread to state BLOCKED. Thus no thread with a lower priority will be scheduled even if threads in state READY are available.

+

Possible osStatus_t return values:

+
    +
  • osOK: control has been passed to the next thread successfully.
  • +
  • osError: an unspecified error has occurred.
  • +
  • osErrorISR: the function osThreadYield cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+
+This function has no impact when called when the kernel is locked, see osKernelLock.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Thread_1 (void const *arg) { // Thread function
+
osStatus_t status; // status of the executed function
+
:
+
while (1) {
+
status = osThreadYield(); //
+
if (status != osOK) {
+
// an error occurred
+
}
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
osStatus_t osThreadSuspend (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osThreadSuspend suspends the execution of the thread identified by parameter thread_id. The thread is put into the BLOCKED state (osThreadBlocked). Suspending the running thread will cause a context switch to another thread in READY state immediately. The suspended thread is not executed until explicitly resumed with the function osThreadResume.

+

Threads that are already BLOCKED are removed from any wait list and become ready when they are resumed. Thus it is not recommended to suspend an already blocked thread.

+

Possible osStatus_t return values:

+
    +
  • osOK: the thread has been suspended successfully.
  • +
  • osErrorParameter: thread_id is NULL or invalid.
  • +
  • osErrorResource: thread specified by parameter thread_id is in an invalid thread state.
  • +
  • osErrorISR: the function osThreadSuspend cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+
+This function must not be called to suspend the running thread when the kernel is locked, i.e. osKernelLock.
+ +
+
+ +
+
+ + + + + + + + +
osStatus_t osThreadResume (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osThreadResume puts the thread identified by parameter thread_id (which has to be in BLOCKED state) back to the READY state. If the resumed thread has a higher priority than the running thread a context switch occurs immediately.

+

The thread becomes ready regardless of the reason why the thread was blocked. Thus it is not recommended to resume a thread not suspended by osThreadSuspend.

+

Functions that will put a thread into BLOCKED state are: osEventFlagsWait and osThreadFlagsWait, osDelay and osDelayUntil, osMutexAcquire and osSemaphoreAcquire, osMessageQueueGet, osMemoryPoolAlloc, osThreadJoin, osThreadSuspend.

+

Possible osStatus_t return values:

+
    +
  • osOK: the thread has been resumed successfully.
  • +
  • osErrorParameter: thread_id is NULL or invalid.
  • +
  • osErrorResource: thread specified by parameter thread_id is in an invalid thread state.
  • +
  • osErrorISR: the function osThreadResume cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+
+This function may be called when kernel is locked (osKernelLock). Under this circumstances a potential context switch is delayed until the kernel gets unlocked, i.e. osKernelUnlock or osKernelRestoreLock.
+ +
+
+ +
+
+ + + + + + + + +
osStatus_t osThreadDetach (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osThreadDetach changes the attribute of a thread (specified by thread_id) to osThreadDetached. Detached threads are not joinable with osThreadJoin. When a detached thread is terminated, all resources are returned to the system. The behavior of osThreadDetach on an already detached thread is undefined.

+

Possible osStatus_t return values:

+
    +
  • osOK: the attribute of the specified thread has been changed to detached successfully.
  • +
  • osErrorParameter: thread_id is NULL or invalid.
  • +
  • osErrorResource: thread specified by parameter thread_id is in an invalid thread state.
  • +
  • osErrorISR: the function osThreadDetach cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
osStatus_t osThreadJoin (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osThreadJoin waits for the thread specified by thread_id to terminate. If that thread has already terminated, then osThreadJoin returns immediately. The thread must be joinable. By default threads are created with the attribute osThreadDetached.

+

Possible osStatus_t return values:

+
    +
  • osOK: if the thread has already been terminated and joined or once the thread has been terminated and the join operations succeeds.
  • +
  • osErrorParameter: thread_id is NULL or invalid.
  • +
  • osErrorResource: parameter thread_id is NULL or refers to a thread that is not an active thread or the thread is not joinable.
  • +
  • osErrorISR: the function osThreadJoin cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
__NO_RETURN void osThreadExit (void )
+
+

The function osThreadExit terminates the calling thread. This allows the thread to be synchronized with osThreadJoin.

+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
__NO_RETURN void worker (void *argument) {
+
// do something
+
osDelay(1000);
+ +
}
+
+
+
+ +
+
+ + + + + + + + +
osStatus_t osThreadTerminate (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osThreadTerminate removes the thread specified by parameter thread_id from the list of active threads. If the thread is currently RUNNING, the thread terminates and the execution continues with the next READY thread. If no such thread exists, the function will not terminate the running thread, but return osErrorResource.

+

Possible osStatus_t return values:

+
    +
  • osOK: the specified thread has been removed from the active thread list successfully.
  • +
  • osErrorParameter: thread_id is NULL or invalid.
  • +
  • osErrorResource: thread specified by parameter thread_id is in an invalid thread state or no other READY thread exists.
  • +
  • osErrorISR: the function osThreadTerminate cannot be called from interrupt service routines.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+
+Avoid calling the function with a thread_id that does not exist or has been terminated already.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Thread_1 (void *arg); // function prototype for Thread_1
+
+
void ThreadTerminate_example (void) {
+
osStatus_t status;
+ +
+
id = osThreadNew (Thread_1, NULL, NULL); // create the thread
+
// do something
+
status = osThreadTerminate (id); // stop the thread
+
if (status == osOK) {
+
// Thread was terminated successfully
+
}
+
else {
+
// Failed to terminate a thread
+
}
+
}
+
+
+
+ +
+
+ + + + + + + + +
uint32_t osThreadGetStackSize (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+
Returns
stack size in bytes.
+

The function osThreadGetStackSize returns the stack size of the thread specified by parameter thread_id. In case of an error, it returns 0.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osThreadGetStackSpace (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+
Returns
remaining stack space in bytes.
+

The function osThreadGetStackSpace returns the size of unused stack space for the thread specified by parameter thread_id. Stack watermark recording during execution needs to be enabled (refer to Thread Configuration). In case of an error, it returns 0.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
uint32_t osThreadGetCount (void )
+
+
Returns
number of active threads.
+

The function osThreadGetCount returns the number of active threads or 0 in case of an error.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t osThreadEnumerate (osThreadId_tthread_array,
uint32_t array_items 
)
+
+
Parameters
+ + + +
[out]thread_arraypointer to array for retrieving thread IDs.
[in]array_itemsmaximum number of items in array for retrieving thread IDs.
+
+
+
Returns
number of enumerated threads.
+

The function osThreadEnumerate returns the number of enumerated threads or 0 in case of an error.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt.js b/docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt.js new file mode 100644 index 0000000..d98ec65 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt.js @@ -0,0 +1,107 @@ +var group__CMSIS__RTOS__ThreadMgmt = +[ + [ "osThreadAttr_t", "group__CMSIS__RTOS__ThreadMgmt.html#structosThreadAttr__t", [ + [ "name", "group__CMSIS__RTOS__ThreadMgmt.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__ThreadMgmt.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__ThreadMgmt.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__ThreadMgmt.html#aa55a4335d12dc2785dc00fdc292d1159", null ], + [ "stack_mem", "group__CMSIS__RTOS__ThreadMgmt.html#ad7c9b42355a4c8b9467130ab3fb19e43", null ], + [ "stack_size", "group__CMSIS__RTOS__ThreadMgmt.html#aacbc9a219f2d6870e9ce89bb93f975c9", null ], + [ "priority", "group__CMSIS__RTOS__ThreadMgmt.html#a6a5183df4c54c3e28dc8dc704f2487d5", null ], + [ "tz_module", "group__CMSIS__RTOS__ThreadMgmt.html#a697f2aad6119d655d212ea10245ae394", null ], + [ "reserved", "group__CMSIS__RTOS__ThreadMgmt.html#a66f538babc389986738ec70104e0562b", null ] + ] ], + [ "osThreadJoinable", "group__CMSIS__RTOS__ThreadMgmt.html#ga249499c519f3f8eef5673009ab6cfcbe", null ], + [ "osThreadDetached", "group__CMSIS__RTOS__ThreadMgmt.html#gaa9336c1073858d6b118e2e011636246f", null ], + [ "osThreadFunc_t", "group__CMSIS__RTOS__ThreadMgmt.html#gadd51f99a6eb50b94eee75f27cae815eb", null ], + [ "osThreadId_t", "group__CMSIS__RTOS__ThreadMgmt.html#gaa6c32fe2a3e0a2e01f212d55b02e51c7", null ], + [ "osThreadState_t", "group__CMSIS__RTOS__ThreadMgmt.html#gad3dc89e942e38d9f3af858a0269a820d", [ + [ "osThreadInactive", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dae9d77830b6866e287417b6e1d983e971", null ], + [ "osThreadReady", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da59e286915944fe0e4d1ffdb1f2946f14", null ], + [ "osThreadRunning", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dac4fe336e0790188fcf7d667372eca19d", null ], + [ "osThreadBlocked", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820daf0e992e354fba8695957c530226a4968", null ], + [ "osThreadTerminated", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dad5b2726c2d0228f4f1a76cf6b630963c", null ], + [ "osThreadError", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da339313e26613bc12f66a852e2ff8745e", null ], + [ "osThreadReserved", "cmsis__os2_8h.html#gad3dc89e942e38d9f3af858a0269a820da8872f7e352370eb11ee772c7dcca6e6c", null ] + ] ], + [ "osPriority_t", "group__CMSIS__RTOS__ThreadMgmt.html#gad4e3e0971b41f2d17584a8c6837342ec", [ + [ "osPriorityNone", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca6c437c7185161a3bd1e7e4669dfa17a3", null ], + [ "osPriorityIdle", "group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342ecacd5864eac01a6916a7c866bb51a6aac1", null ], + [ "osPriorityLow", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca61cb822239ac8f66dfbdc7291598a3d4", null ], + [ "osPriorityLow1", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaba2b6919f0b630c8c1b2c940e3bfadbe", null ], + [ "osPriorityLow2", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca78ad5d00aa07a2b4bf30a639544f5507", null ], + [ "osPriorityLow3", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca28ccb07942c16f5f5efefb6cf68a7f50", null ], + [ "osPriorityLow4", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5a4a4f26d5b220a968e221e854f69a81", null ], + [ "osPriorityLow5", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecad69b8c14809bc5bdce4887f5a57d9353", null ], + [ "osPriorityLow6", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecac0f188468664d06d4cd9e6e1ed351393", null ], + [ "osPriorityLow7", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5b151ebba7fdeb1baaa9b7b420890b7a", null ], + [ "osPriorityBelowNormal", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca193b650117c209b4a203954542bcc3e6", null ], + [ "osPriorityBelowNormal1", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca9138da7187690b15f52d8e5729c18da5", null ], + [ "osPriorityBelowNormal2", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca4f081d6735bf2f513338b07eddf13ae3", null ], + [ "osPriorityBelowNormal3", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca19c013690d0d6bf3ac90707942be3fdf", null ], + [ "osPriorityBelowNormal4", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca36931ad6cee5e4700e2c8622bdd2cd24", null ], + [ "osPriorityBelowNormal5", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca0bcd9ad1e7a02e3bf03be7dcc8ece38e", null ], + [ "osPriorityBelowNormal6", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecabd3cc7df5b92b752ddf1e7843a786c05", null ], + [ "osPriorityBelowNormal7", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecab18e3bda7b5e418e309a62d6267ea14b", null ], + [ "osPriorityNormal", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca45a2895ad30c79fb97de18cac7cc19f1", null ], + [ "osPriorityNormal1", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca3e70c19e03d5a54e66bd071f0776782c", null ], + [ "osPriorityNormal2", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca19e96f2b025b6462a43b1965043c8205", null ], + [ "osPriorityNormal3", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca402bd7ab26fb57c8cee8cf94168f4c91", null ], + [ "osPriorityNormal4", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca93ef07d3a107aeee6508bfd29ba3485d", null ], + [ "osPriorityNormal5", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca68f3f6fdaa639de300277802aa13a0ab", null ], + [ "osPriorityNormal6", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca8221eb0d059726a6309f1f2d0cdb6204", null ], + [ "osPriorityNormal7", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca049abd04f8951415407ec9d92bd9b80b", null ], + [ "osPriorityAboveNormal", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca17b36cd9cd38652c2bc6d4803990674b", null ], + [ "osPriorityAboveNormal1", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecabfeafc713edfc7b9130aa5c762d68998", null ], + [ "osPriorityAboveNormal2", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca901acf86070e06f5990b611734ee2562", null ], + [ "osPriorityAboveNormal3", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecad566b876b64e6efdc3eba0fc04e54013", null ], + [ "osPriorityAboveNormal4", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca6ccac37d7dae4586a2031966d36a63ec", null ], + [ "osPriorityAboveNormal5", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecae36e8b38ee046a3104bcccabb10cf78c", null ], + [ "osPriorityAboveNormal6", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca61e6ce27e1e0f34f2540b413b8a8b207", null ], + [ "osPriorityAboveNormal7", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecadbbb0fed3ada6b9b50d4a628abc2a67d", null ], + [ "osPriorityHigh", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca914433934143a9ba767e59577c56e6c2", null ], + [ "osPriorityHigh1", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca17b7a7e6febf12444a84e90edfce36cb", null ], + [ "osPriorityHigh2", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca40a120cf8bbc42e575455c027f3d9b03", null ], + [ "osPriorityHigh3", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca0b15518b0b5321a29efa0b42b2f8c759", null ], + [ "osPriorityHigh4", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecafe5a4f393fab04551ac7d93e80cdf0fb", null ], + [ "osPriorityHigh5", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5960841bfbdd959b163429e8502ea4e9", null ], + [ "osPriorityHigh6", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5714dda6effc1a3f8ec155d97e3e69bc", null ], + [ "osPriorityHigh7", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca63ad0cc52a701ef3d9df52b59b995652", null ], + [ "osPriorityRealtime", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca1485dec3702434a1ec3cb74c7a17a4af", null ], + [ "osPriorityRealtime1", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaf685a06b30f0635476e21347a986305b", null ], + [ "osPriorityRealtime2", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecab832bd9de84e5eec2ecad69d085dadff", null ], + [ "osPriorityRealtime3", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca3f2261e5e733e92844ae8c630f2f9eaa", null ], + [ "osPriorityRealtime4", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaf614e3dc966d559cd9d9d2a0f78ebe70", null ], + [ "osPriorityRealtime5", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaff84f31ceff203c711fb9476443507df", null ], + [ "osPriorityRealtime6", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca80ae9d0dd256312c0c8f44af48316194", null ], + [ "osPriorityRealtime7", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaa76da6825c4bd31c4958200bc289103b", null ], + [ "osPriorityISR", "group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342eca4b4fa46c3ebaf4259662a0a0a3173b7f", null ], + [ "osPriorityError", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecae35f5e2f9c64ad346822521b643bdea4", null ], + [ "osPriorityReserved", "cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecac86c171f8d466cced0cb1b03bb03343b", null ] + ] ], + [ "osThreadInactive", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dae9d77830b6866e287417b6e1d983e971", null ], + [ "osThreadReady", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da59e286915944fe0e4d1ffdb1f2946f14", null ], + [ "osThreadRunning", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dac4fe336e0790188fcf7d667372eca19d", null ], + [ "osThreadBlocked", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820daf0e992e354fba8695957c530226a4968", null ], + [ "osThreadTerminated", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dad5b2726c2d0228f4f1a76cf6b630963c", null ], + [ "osThreadError", "group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da339313e26613bc12f66a852e2ff8745e", null ], + [ "osPriorityIdle", "group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342ecacd5864eac01a6916a7c866bb51a6aac1", null ], + [ "osPriorityISR", "group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342eca4b4fa46c3ebaf4259662a0a0a3173b7f", null ], + [ "osThreadNew", "group__CMSIS__RTOS__ThreadMgmt.html#ga48d68b8666d99d28fa646ee1d2182b8f", null ], + [ "osThreadGetName", "group__CMSIS__RTOS__ThreadMgmt.html#gac3230f3a55a297514b013ebf38f27e0a", null ], + [ "osThreadGetId", "group__CMSIS__RTOS__ThreadMgmt.html#ga8df03548e89fbc56402a5cd584a505da", null ], + [ "osThreadGetState", "group__CMSIS__RTOS__ThreadMgmt.html#gacc0a98b42f0a5928e12dc91dc76866b9", null ], + [ "osThreadSetPriority", "group__CMSIS__RTOS__ThreadMgmt.html#ga861a420fb2d643115b06622903fb3bfb", null ], + [ "osThreadGetPriority", "group__CMSIS__RTOS__ThreadMgmt.html#ga0aeaf349604f456e68e78f9d3b42e44b", null ], + [ "osThreadYield", "group__CMSIS__RTOS__ThreadMgmt.html#gad01c7ec26535b1de6b018bb9466720e2", null ], + [ "osThreadSuspend", "group__CMSIS__RTOS__ThreadMgmt.html#gaa9de419d0152bf77e9bbcd1f369fb990", null ], + [ "osThreadResume", "group__CMSIS__RTOS__ThreadMgmt.html#ga3dbad90eff394b02de76a452c84c5d80", null ], + [ "osThreadDetach", "group__CMSIS__RTOS__ThreadMgmt.html#gaaad14cd9547341ea8109dc4e8540f1dc", null ], + [ "osThreadJoin", "group__CMSIS__RTOS__ThreadMgmt.html#ga3fca90fb0679afeb968aa8c3d5874487", null ], + [ "osThreadExit", "group__CMSIS__RTOS__ThreadMgmt.html#gaddaa452dd7610e4096647a566d3556fc", null ], + [ "osThreadTerminate", "group__CMSIS__RTOS__ThreadMgmt.html#ga2f8ba6dba6e9c065a6e236ffd410d74a", null ], + [ "osThreadGetStackSize", "group__CMSIS__RTOS__ThreadMgmt.html#gab9f8bd715d671c6ee27644867bc1bf65", null ], + [ "osThreadGetStackSpace", "group__CMSIS__RTOS__ThreadMgmt.html#ga9c83bd5dd8de329701775d6ef7012720", null ], + [ "osThreadGetCount", "group__CMSIS__RTOS__ThreadMgmt.html#ga495b3f812224e7301f23a691793765db", null ], + [ "osThreadEnumerate", "group__CMSIS__RTOS__ThreadMgmt.html#ga5606604d56e21ece1a654664be877439", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt_structosThreadAttr__t.js b/docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt_structosThreadAttr__t.js new file mode 100644 index 0000000..e9b615e --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__ThreadMgmt_structosThreadAttr__t.js @@ -0,0 +1,12 @@ +var group__CMSIS__RTOS__ThreadMgmt_structosThreadAttr__t = +[ + [ "name", "group__CMSIS__RTOS__ThreadMgmt.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__ThreadMgmt.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__ThreadMgmt.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__ThreadMgmt.html#aa55a4335d12dc2785dc00fdc292d1159", null ], + [ "stack_mem", "group__CMSIS__RTOS__ThreadMgmt.html#ad7c9b42355a4c8b9467130ab3fb19e43", null ], + [ "stack_size", "group__CMSIS__RTOS__ThreadMgmt.html#aacbc9a219f2d6870e9ce89bb93f975c9", null ], + [ "priority", "group__CMSIS__RTOS__ThreadMgmt.html#a6a5183df4c54c3e28dc8dc704f2487d5", null ], + [ "tz_module", "group__CMSIS__RTOS__ThreadMgmt.html#a697f2aad6119d655d212ea10245ae394", null ], + [ "reserved", "group__CMSIS__RTOS__ThreadMgmt.html#a66f538babc389986738ec70104e0562b", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__TickAPI.html b/docs/RTOS2/html/group__CMSIS__RTOS__TickAPI.html new file mode 100644 index 0000000..0a55e13 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__TickAPI.html @@ -0,0 +1,446 @@ + + + + + +OS Tick API +CMSIS-RTOS2: OS Tick API + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
OS Tick API
+
+
+ +

System tick timer interface for periodic RTOS Kernel Ticks defined in os_tick.h +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

int32_t OS_Tick_Setup (uint32_t freq, IRQHandler_t handler)
 Setup OS Tick timer to generate periodic RTOS Kernel Ticks. More...
 
void OS_Tick_Enable (void)
 Enable OS Tick timer interrupt. More...
 
void OS_Tick_Disable (void)
 Disable OS Tick timer interrupt. More...
 
void OS_Tick_AcknowledgeIRQ (void)
 Acknowledge execution of OS Tick timer interrupt. More...
 
int32_t OS_Tick_GetIRQn (void)
 Get OS Tick timer IRQ number. More...
 
uint32_t OS_Tick_GetClock (void)
 Get OS Tick timer clock frequency. More...
 
uint32_t OS_Tick_GetInterval (void)
 Get OS Tick timer interval reload value. More...
 
uint32_t OS_Tick_GetCount (void)
 Get OS Tick timer counter value. More...
 
uint32_t OS_Tick_GetOverflow (void)
 Get OS Tick timer overflow status. More...
 
+

Description

+

The OS Tick API is an interface to a system timer that generates the Kernel Ticks.

+

All Cortex-M processors provide an unified System Tick Timer that is typically used to generate the RTOS Kernel Tick. The Cortex-A processors do not implement an unified system timer and required a device specific implementation.

+

CMSIS-RTOS2 provides in the directory CMSIS/RTOS2/Source the several OS Tick implementations that can be used by any RTOS kernel.

+ + + + + + + + + +
Filename OS Tick Implementation for...
os_systick.c Cortex-M SysTick timer
os_tick_gtim.c Cortex-A Generic Timer (available in some devices)
os_tick_ptim.c Cortex-A Private Timer (available in some devices)
+
Note
The above OS Tick source files implement weak functions which may be overwritten by user-specific implementations.
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int32_t OS_Tick_Setup (uint32_t freq,
IRQHandler_t handler 
)
+
+
Parameters
+ + + +
[in]freqtick frequency in Hz
[in]handlertick IRQ handler
+
+
+
Returns
0 on success, -1 on error.
+

Setup OS Tick timer to generate periodic RTOS Kernel Ticks.

+

The timer should be configured to generate periodic interrupts at frequency specified by freq. The parameter handler defines the interrupt handler function that is called.

+

The timer should only be initialized and configured but must not be started to create interrupts. The RTOS kernel calls the function OS_Tick_Enable to start the timer interrupts.

+

Cortex-M SysTick implementation:

+
#ifndef SYSTICK_IRQ_PRIORITY
+
#define SYSTICK_IRQ_PRIORITY 0xFFU
+
#endif
+
+
static uint8_t PendST;
+
+
int32_t OS_Tick_Setup (uint32_t freq, IRQHandler_t handler) {
+
(void)handler;
+
uint32_t load;
+
+
if (freq == 0U) {
+
return (-1);
+
}
+
+
load = (SystemCoreClock / freq) - 1U;
+
if (load > 0x00FFFFFFU) {
+
return (-1);
+
}
+
+
NVIC_SetPriority(SysTick_IRQn, SYSTICK_IRQ_PRIORITY);
+
+
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk;
+
SysTick->LOAD = load;
+
SysTick->VAL = 0U;
+
+
PendST = 0U;
+
+
return (0);
+
}
+
+
+
+ +
+
+ + + + + + + + +
int32_t OS_Tick_Enable (void )
+
+

Enable OS Tick timer interrupt.

+

Enable and start the OS Tick timer to generate periodic RTOS Kernel Tick interrupts.

+

Cortex-M SysTick implementation:

+
int32_t OS_Tick_Enable (void) {
+
+
if (PendST != 0U) {
+
PendST = 0U;
+
SCB->ICSR = SCB_ICSR_PENDSTSET_Msk;
+
}
+
+
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
+
+
return (0);
+
}
+
+
+
+ +
+
+ + + + + + + + +
int32_t OS_Tick_Disable (void )
+
+

Disable OS Tick timer interrupt.

+

Stop the OS Tick timer and disable generation of RTOS Kernel Tick interrupts.

+

Cortex-M SysTick implementation:

+
int32_t OS_Tick_Disable (void) {
+
+
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
+
+
if ((SCB->ICSR & SCB_ICSR_PENDSTSET_Msk) != 0U) {
+
SCB->ICSR = SCB_ICSR_PENDSTCLR_Msk;
+
PendST = 1U;
+
}
+
+
return (0);
+
}
+
+
+
+ +
+
+ + + + + + + + +
int32_t OS_Tick_AcknowledgeIRQ (void )
+
+

Acknowledge execution of OS Tick timer interrupt.

+

Acknowledge the execution of the OS Tick timer interrupt function, for example clear the pending flag.

+

Cortex-M SysTick implementation:

+
int32_t OS_Tick_AcknowledgeIRQ (void) {
+
(void)SysTick->CTRL;
+
return (0);
+
}
+
+
+
+ +
+
+ + + + + + + + +
int32_t OS_Tick_GetIRQn (void )
+
+
Returns
OS Tick IRQ number
+

Get OS Tick timer IRQ number.

+

Return the numeric value that identifies the interrupt called by the OS Tick timer.

+

Cortex-M SysTick implementation:

+
int32_t OS_Tick_GetIRQn (void) {
+
return (SysTick_IRQn);
+
}
+
+
+
+ +
+
+ + + + + + + + +
uint32_t OS_Tick_GetClock (void )
+
+
Returns
OS Tick timer clock frequency in Hz
+

Get OS Tick timer clock frequency.

+

Return the input clock frequency of the OS Tick timer. This is the increment rate of the counter value returned by the function OS_Tick_GetCount. This function is used to by the function osKernelGetSysTimerFreq.

+

Cortex-M SysTick implementation:

+
uint32_t OS_Tick_GetClock (void) {
+
return (SystemCoreClock);
+
}
+
+
+
+ +
+
+ + + + + + + + +
uint32_t OS_Tick_GetInterval (void )
+
+
Returns
OS Tick timer interval reload value
+

Get OS Tick timer interval reload value.

+

Return the number of counter ticks between to periodic OS Tick timer interrupts.

+

Cortex-M SysTick implementation:

+
uint32_t OS_Tick_GetInterval (void) {
+
return (SysTick->LOAD + 1U);
+
}
+
+
+
+ +
+
+ + + + + + + + +
uint32_t OS_Tick_GetCount (void )
+
+
Returns
OS Tick timer counter value
+

Get OS Tick timer counter value.

+

Return the current value of the OS Tick counter: 0 ... (reload value -1). The reload value is returned by the function OS_Tick_GetInterval. The OS Tick timer counter value is used to by the function osKernelGetSysTimerCount.

+

Cortex-M SysTick implementation:

+
uint32_t OS_Tick_GetCount (void) {
+
uint32_t load = SysTick->LOAD;
+
return (load - SysTick->VAL);
+
}
+
+
+
+ +
+
+ + + + + + + + +
OS_Tick_GetOverflow (void )
+
+
Returns
OS Tick overflow status (1 - overflow, 0 - no overflow).
+

Get OS Tick timer overflow status.

+

Return the state of OS Tick timer interrupt pending bit that indicates timer overflows to adjust SysTimer calculations.

+

Cortex-M SysTick implementation:

+
uint32_t OS_Tick_GetOverflow (void) {
+
return ((SysTick->CTRL >> 16) & 1U);
+
}
+
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__TickAPI.js b/docs/RTOS2/html/group__CMSIS__RTOS__TickAPI.js new file mode 100644 index 0000000..b3031ae --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__TickAPI.js @@ -0,0 +1,12 @@ +var group__CMSIS__RTOS__TickAPI = +[ + [ "OS_Tick_Setup", "group__CMSIS__RTOS__TickAPI.html#ga5eeffb4d9dc6c6802fee8898096d9a59", null ], + [ "OS_Tick_Enable", "group__CMSIS__RTOS__TickAPI.html#ga3e47971bf3a02599d9ecb32208adafec", null ], + [ "OS_Tick_Disable", "group__CMSIS__RTOS__TickAPI.html#ga5e325c304fef5003b1dc31906f6a3056", null ], + [ "OS_Tick_AcknowledgeIRQ", "group__CMSIS__RTOS__TickAPI.html#ga57065ec4b281504ad4de13a419870b4f", null ], + [ "OS_Tick_GetIRQn", "group__CMSIS__RTOS__TickAPI.html#gaa8b4eca23e3ffe2df403291958cdc905", null ], + [ "OS_Tick_GetClock", "group__CMSIS__RTOS__TickAPI.html#ga936217ea28236fb57648973e0d8f627a", null ], + [ "OS_Tick_GetInterval", "group__CMSIS__RTOS__TickAPI.html#ga123151dc19d5a94a68f12cdbf61a9bb5", null ], + [ "OS_Tick_GetCount", "group__CMSIS__RTOS__TickAPI.html#gaa64a145a554f1e5077848938d7f39c92", null ], + [ "OS_Tick_GetOverflow", "group__CMSIS__RTOS__TickAPI.html#ga1f9a593126b7f0b66fc526c2cebd6192", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt.html b/docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt.html new file mode 100644 index 0000000..4ef2b0b --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt.html @@ -0,0 +1,646 @@ + + + + + +Timer Management +CMSIS-RTOS2: Timer Management + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Create and control timer and timer callback functions. +More...

+ + + + + +

+Data Structures

struct  osTimerAttr_t
 Attributes structure for timer. More...
 
+ + + + + + +

+Typedefs

typedef void * osTimerId_t
 
typedef void(* osTimerFunc_t )(void *argument)
 Timer callback function. More...
 
+ + + + +

+Enumerations

enum  osTimerType_t {
+  osTimerOnce = 0, +
+  osTimerPeriodic = 1 +
+ }
 Timer type. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Functions

osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)
 Create and Initialize a timer. More...
 
const char * osTimerGetName (osTimerId_t timer_id)
 Get name of a timer. More...
 
osStatus_t osTimerStart (osTimerId_t timer_id, uint32_t ticks)
 Start or restart a timer. More...
 
osStatus_t osTimerStop (osTimerId_t timer_id)
 Stop a timer. More...
 
uint32_t osTimerIsRunning (osTimerId_t timer_id)
 Check if a timer is running. More...
 
osStatus_t osTimerDelete (osTimerId_t timer_id)
 Delete a timer. More...
 
+

Description

+

In addition to the Generic Wait Functions CMSIS-RTOS also supports virtual timer objects. These timer objects can trigger the execution of a function (not threads). When a timer expires, a callback function is executed to run associated code with the timer. Each timer can be configured as a one-shot or a periodic timer. A periodic timer repeats its operation until it is deleted or stopped. All timers can be started, restarted, or stopped.

+
Note
RTX handles Timers in the thread osRtxTimerThread. Callback functions run under control of this thread and may use other CMSIS-RTOS API calls. The osRtxTimerThread is configured in Timer Configuration.
+
+Timer management functions cannot be called from Interrupt Service Routines.
+

The figure below shows the behavior of a periodic timer. For one-shot timers, the timer stops after execution of the callback function.

+
+Timer.png +
+Behavior of a Periodic Timer
+

Working with Timers

+

The following steps are required to use a software timer:

+
    +
  1. Define the timers:
    osTimerId_t one_shot_id, periodic_id;
    +
  2. +
  3. Define callback functions:
    static void one_shot_Callback (void *argument) {
    +
    int32_t arg = (int32_t)argument; // cast back argument '0'
    +
    // do something, i.e. set thread/event flags
    +
    }
    +
    static void periodic_Callback (void *argument) {
    +
    int32_t arg = (int32_t)argument; // cast back argument '5'
    +
    // do something, i.e. set thread/event flags
    +
    }
    +
  4. +
  5. Instantiate and start the timers:
    // creates a one-shot timer:
    +
    one_shot_id = osTimerNew(one_shot_Callback, osTimerOnce, (void *)0, NULL); // (void*)0 is passed as an argument
    +
    // to the callback function
    +
    // creates a periodic timer:
    +
    periodic_id = osTimerNew(periodic_Callback, osTimerPeriodic, (void *)5, NULL); // (void*)5 is passed as an argument
    +
    // to the callback function
    +
    osTimerStart(one_shot_id, 500);
    +
    osTimerStart(periodic_id, 1500);
    +
    +
    // start the one-shot timer again after it has triggered the first time:
    +
    osTimerStart(one_shot_id, 500);
    +
    +
    // when timers are not needed any longer free the resources:
    +
    osTimerDelete(one_shot_id);
    +
    osTimerDelete(periodic_id);
    +
  6. +
+

Data Structure Documentation

+ +
+
+ + + + +
struct osTimerAttr_t
+
+

Specifies the following attributes for the osTimerNew function.

+
+ + + + + + + + + + + + + +
Data Fields
+const char * +name +name of the timer

Pointer to a constant string with a human readable name (displayed during debugging) of the timer object.

+

Default: NULL no name specified.

+
+uint32_t +attr_bits +attribute bits

Reserved for future use (must be set to '0' for future compatibility).

+
+void * +cb_mem +memory for control block

Pointer to a memory for the timer control block object. Refer to Static Object Memory for more information.

+

Default: NULL to use Automatic Dynamic Allocation for the timer control block.

+
+uint32_t +cb_size +size of provided memory for control block

The size (in bytes) of memory block passed with cb_mem. For RTX, the minimum value is defined with osRtxTimerCbSize (higher values are permitted).

+

Default: 0 as the default is no memory provided with cb_mem.

+
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
osTimerId_t
+
+

Timer ID identifies the timer.

+

Instances of this type hold a reference to a timer object.
+Returned by:

+ + +
+
+ +
+
+ + + + +
void(* osTimerFunc_t)(void *argument)
+
+

The timer callback function is called every time the timer elapses.

+

The callback might be executed either in a dedicated timer thread or in interrupt context. Thus it is recommended to only use ISR callable functions from the timer callback.

+
Parameters
+ + +
[in]argumentThe argument provided to osTimerNew.
+
+
+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum osTimerType_t
+
+

The osTimerType_t specifies the a repeating (periodic) or one-shot timer for the function osTimerNew.

+ + + +
Enumerator
osTimerOnce  +

One-shot timer.

+

The timer is not automatically restarted once it has elapsed. It can be restarted manually using osTimerStart as needed.

+
osTimerPeriodic  +

Repeating timer.

+

The timer repeats automatically and triggers the callback continuously while running, see osTimerStart and osTimerStop.

+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
osTimerId_t osTimerNew (osTimerFunc_t func,
osTimerType_t type,
void * argument,
const osTimerAttr_tattr 
)
+
+
Parameters
+ + + + + +
[in]funcfunction pointer to callback function.
[in]typeosTimerOnce for one-shot or osTimerPeriodic for periodic behavior.
[in]argumentargument to the timer callback function.
[in]attrtimer attributes; NULL: default values.
+
+
+
Returns
timer ID for reference by other functions or NULL in case of error.
+

The function osTimerNew creates an one-shot or periodic timer and associates it with a callback function with argument. The timer is in stopped state until it is started with osTimerStart. The function can be safely called before the RTOS is started (call to osKernelStart), but not before it is initialized (call to osKernelInitialize).

+

The function osTimerNew returns the pointer to the timer object identifier or NULL in case of an error.

+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Timer1_Callback (void *arg); // prototypes for timer callback function
+
void Timer2_Callback (void *arg);
+
+
uint32_t exec1; // argument for the timer call back function
+
uint32_t exec2; // argument for the timer call back function
+
+
void TimerCreate_example (void) {
+
osTimerId_t id1; // timer id
+
osTimerId_t id2; // timer id
+
+
// Create one-shoot timer
+
exec1 = 1;
+
id1 = osTimerNew (Timer1_Callback, osTimerOnce, &exec1, NULL);
+
if (id1 != NULL) {
+
// One-shoot timer created
+
}
+
+
// Create periodic timer
+
exec2 = 2;
+
id2 = osTimerNew (Timer2_Callback, osTimerPeriodic, &exec2, NULL);
+
if (id2 != NULL) {
+
// Periodic timer created
+
}
+
:
+
}
+
+
+
+ +
+
+ + + + + + + + +
*const char * osTimerGetName (osTimerId_t timer_id)
+
+
Parameters
+ + +
[in]timer_idtimer ID obtained by osTimerNew.
+
+
+
Returns
name as null-terminated string.
+

The function osTimerGetName returns the pointer to the name string of the timer identified by parameter timer_id or NULL in case of an error.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
osStatus_t osTimerStart (osTimerId_t timer_id,
uint32_t ticks 
)
+
+
Parameters
+ + + +
[in]timer_idtimer ID obtained by osTimerNew.
[in]tickstime ticks value of the timer.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osTimerStart starts or restarts a timer specified by the parameter timer_id. The parameter ticks specifies the value of the timer in time ticks.

+

Possible osStatus_t return values:

+
    +
  • osOK: the specified timer has been started or restarted.
  • +
  • osErrorISR: osTimerStart cannot be called from interrupt service routines.
  • +
  • osErrorParameter: parameter timer_id is either NULL or invalid or ticks is incorrect.
  • +
  • osErrorResource: the timer specified by parameter timer_id is in an invalid timer state.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Timer_Callback (void *arg) { // timer callback function
+
// arg contains &exec
+
// called every second after osTimerStart
+
}
+
+
uint32_t exec; // argument for the timer call back function
+
+
void TimerStart_example (void) {
+
osTimerId_t id; // timer id
+
uint32_t timerDelay; // timer value
+
osStatus_t status; // function return status
+
+
// Create periodic timer
+
exec = 1;
+
id = osTimerNew (Timer_Callback, osTimerPeriodic, &exec, NULL);
+
if (id) {
+
timerDelay = 1000;
+
status = osTimerStart (id, timerDelay); // start timer
+
if (status != osOK) {
+
// Timer could not be started
+
}
+
}
+
;
+
}
+
+
+
+ +
+
+ + + + + + + + +
osStatus_t osTimerStop (osTimerId_t timer_id)
+
+
Parameters
+ + +
[in]timer_idtimer ID obtained by osTimerNew.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osTimerStop stops a timer specified by the parameter timer_id.

+

Possible osStatus_t return values:

+
    +
  • osOK: the specified timer has been stopped.
  • +
  • osErrorISR: osTimerStop cannot be called from interrupt service routines.
  • +
  • osErrorParameter: parameter timer_id is either NULL or invalid.
  • +
  • osErrorResource: the timer specified by parameter timer_id is not running (you can only stop a running timer).
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Timer_Callback (void *arg); // prototype for timer callback function
+
+
uint32_t exec; // argument for the timer call back function
+
+
void TimerStop_example (void) {
+
osTimerId_t id; // timer id
+
osStatus_t status; // function return status
+
+
// Create periodic timer
+
exec = 1;
+
id = osTimerNew (Timer_Callback, osTimerPeriodic, &exec, NULL);
+
osTimerStart (id, 1000); // start timer
+
:
+
status = osTimerStop (id); // stop timer
+
if (status != osOK) {
+
// Timer could not be stopped
+
}
+
;
+
osTimerStart (id, 1000); // start timer again
+
;
+
}
+
+
+
+ +
+
+ + + + + + + + +
uint32_t osTimerIsRunning (osTimerId_t timer_id)
+
+
Parameters
+ + +
[in]timer_idtimer ID obtained by osTimerNew.
+
+
+
Returns
0 not running, 1 running.
+

The function osTimerIsRunning checks whether a timer specified by parameter timer_id is running. It returns 1 if the timer is running and 0 if the timer is stopped or an error occurred.

+
Note
This function cannot be called from Interrupt Service Routines.
+ +
+
+ +
+
+ + + + + + + + +
osStatus_t osTimerDelete (osTimerId_t timer_id)
+
+
Parameters
+ + +
[in]timer_idtimer ID obtained by osTimerNew.
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osTimerDelete deletes the timer specified by parameter timer_id.

+

Possible osStatus_t return values:

+
    +
  • osOK: the specified timer has been deleted.
  • +
  • osErrorISR: osTimerDelete cannot be called from interrupt service routines.
  • +
  • osErrorParameter: parameter timer_id is either NULL or invalid.
  • +
  • osErrorResource: the timer specified by parameter timer_id is in an invalid timer state.
  • +
+
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Timer_Callback (void *arg); // prototype for timer callback function
+
+
uint32_t exec; // argument for the timer call back function
+
+
void TimerDelete_example (void) {
+
osTimerId_t id; // timer id
+
osStatus_t status; // function return status
+
+
// Create periodic timer
+
exec = 1;
+
id = osTimerNew (Timer_Callback, osTimerPeriodic, &exec, NULL);
+
osTimerStart (id, 1000UL); // start timer
+
;
+
status = osTimerDelete (id); // stop and delete timer
+
if (status != osOK) {
+
// Timer could not be deleted
+
}
+
;
+
}
+
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt.js b/docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt.js new file mode 100644 index 0000000..4b95efa --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt.js @@ -0,0 +1,23 @@ +var group__CMSIS__RTOS__TimerMgmt = +[ + [ "osTimerAttr_t", "group__CMSIS__RTOS__TimerMgmt.html#structosTimerAttr__t", [ + [ "name", "group__CMSIS__RTOS__TimerMgmt.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__TimerMgmt.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__TimerMgmt.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__TimerMgmt.html#aa55a4335d12dc2785dc00fdc292d1159", null ] + ] ], + [ "osTimerId_t", "group__CMSIS__RTOS__TimerMgmt.html#gaad5409379689ee27bb0a0b56ea4a4b34", null ], + [ "osTimerFunc_t", "group__CMSIS__RTOS__TimerMgmt.html#gaacf768c1ec64b020598afb985d7b30be", null ], + [ "osTimerType_t", "group__CMSIS__RTOS__TimerMgmt.html#ga7dc24a4c2b90334427081c3da7a71915", [ + [ "osTimerOnce", "group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915a2e0e1f31c742c84b497c4d7143357bdb", null ], + [ "osTimerPeriodic", "group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915ab3463d921dc310938094745c230f2b35", null ] + ] ], + [ "osTimerOnce", "group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915a2e0e1f31c742c84b497c4d7143357bdb", null ], + [ "osTimerPeriodic", "group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915ab3463d921dc310938094745c230f2b35", null ], + [ "osTimerNew", "group__CMSIS__RTOS__TimerMgmt.html#gad4e7f785c5f700a509f55a3bf6a62bec", null ], + [ "osTimerGetName", "group__CMSIS__RTOS__TimerMgmt.html#ga4f82a98eee4d9ea79507e44340d3d319", null ], + [ "osTimerStart", "group__CMSIS__RTOS__TimerMgmt.html#gab6ee2859ea657641b7adfac599b8121d", null ], + [ "osTimerStop", "group__CMSIS__RTOS__TimerMgmt.html#gabd7a89356da7717293eb0bc5d87b8ac9", null ], + [ "osTimerIsRunning", "group__CMSIS__RTOS__TimerMgmt.html#ga69d3589f54194022c30dd01e45ec6741", null ], + [ "osTimerDelete", "group__CMSIS__RTOS__TimerMgmt.html#gad0001dd74721ab461789324806db2453", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt_structosTimerAttr__t.js b/docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt_structosTimerAttr__t.js new file mode 100644 index 0000000..2599671 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__TimerMgmt_structosTimerAttr__t.js @@ -0,0 +1,7 @@ +var group__CMSIS__RTOS__TimerMgmt_structosTimerAttr__t = +[ + [ "name", "group__CMSIS__RTOS__TimerMgmt.html#ab74e6bf80237ddc4109968cedc58c151", null ], + [ "attr_bits", "group__CMSIS__RTOS__TimerMgmt.html#a6e93b49cb79c12f768d72580c7731f30", null ], + [ "cb_mem", "group__CMSIS__RTOS__TimerMgmt.html#a1e100dc33d403841ed3c344e3397868e", null ], + [ "cb_size", "group__CMSIS__RTOS__TimerMgmt.html#aa55a4335d12dc2785dc00fdc292d1159", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__Wait.html b/docs/RTOS2/html/group__CMSIS__RTOS__Wait.html new file mode 100644 index 0000000..e9cd3e5 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__Wait.html @@ -0,0 +1,234 @@ + + + + + +Generic Wait Functions +CMSIS-RTOS2: Generic Wait Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Generic Wait Functions
+
+
+ +

Wait for a certain period of time. +More...

+ + + + + + + + +

+Functions

osStatus_t osDelay (uint32_t ticks)
 Wait for Timeout (Time Delay). More...
 
osStatus_t osDelayUntil (uint32_t ticks)
 Wait until specified time. More...
 
+

Description

+

The generic wait functions provide means for a time delay.

+
Note
Generic wait functions cannot be called from Interrupt Service Routines.
+

Function Documentation

+ +
+
+ + + + + + + + +
osStatus_t osDelay (uint32_t ticks)
+
+
Parameters
+ + +
[in]tickstime ticks value
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osDelay waits for a time period specified in kernel ticks. For a value of 1 the system waits until the next timer tick occurs. The actual time delay may be up to one timer tick less than specified, i.e. calling osDelay(1) right before the next system tick occurs the thread is rescheduled immediately.

+

The delayed thread is put into the BLOCKED state and a context switch occurs immediately. The thread is automatically put back to the READY state after the given amount of ticks has elapsed. If the thread will have the highest priority in READY state it will being scheduled immediately.

+

Possible osStatus_t return values:

+ +
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Thread_1 (void *arg) { // Thread function
+
osStatus_t status; // capture the return status
+
uint32_t delayTime; // delay time in milliseconds
+
+
delayTime = 1000; // delay 1 second
+
status = osDelay (delayTime); // suspend thread execution
+
}
+
+
+
+ +
+
+ + + + + + + + +
osStatus_t osDelayUntil (uint32_t ticks)
+
+
Parameters
+ + +
[in]ticksabsolute time in ticks
+
+
+
Returns
status code that indicates the execution status of the function.
+

The function osDelayUntil waits until an absolute time (specified in kernel ticks) is reached.

+

The corner case when the kernel tick counter overflows is handled by osDelayUntil. Thus it is absolutely legal to provide a value which is lower than the current tick value, i.e. returned by osKernelGetTickCount. Typically as a user you do not have to take care about the overflow. The only limitation you have to have in mind is that the maximum delay is limited to (231)-1 ticks.

+

The delayed thread is put into the BLOCKED state and a context switch occurs immediately. The thread is automatically put back to the READY state when the given time is reached. If the thread will have the highest priority in READY state it will being scheduled immediately.

+

Possible osStatus_t return values:

+ +
Note
This function cannot be called from Interrupt Service Routines.
+

Code Example

+
#include "cmsis_os2.h"
+
+
void Thread_1 (void *arg) { // Thread function
+
uint32_t tick;
+
+
tick = osKernelGetTickCount(); // retrieve the number of system ticks
+
for (;;) {
+
tick += 1000; // delay 1000 ticks periodically
+
osDelayUntil(tick);
+
// ...
+
}
+
}
+
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__CMSIS__RTOS__Wait.js b/docs/RTOS2/html/group__CMSIS__RTOS__Wait.js new file mode 100644 index 0000000..49957d7 --- /dev/null +++ b/docs/RTOS2/html/group__CMSIS__RTOS__Wait.js @@ -0,0 +1,5 @@ +var group__CMSIS__RTOS__Wait = +[ + [ "osDelay", "group__CMSIS__RTOS__Wait.html#gaf6055a51390ef65b6b6edc28bf47322e", null ], + [ "osDelayUntil", "group__CMSIS__RTOS__Wait.html#ga3c807924c2d6d43bc2ffb49da3f7f3a1", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__flags__error__codes.html b/docs/RTOS2/html/group__flags__error__codes.html new file mode 100644 index 0000000..70b626b --- /dev/null +++ b/docs/RTOS2/html/group__flags__error__codes.html @@ -0,0 +1,265 @@ + + + + + +Flags Functions Error Codes +CMSIS-RTOS2: Flags Functions Error Codes + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Flags Functions Error Codes
+
+
+ +

Constants used by Thread Flags and Event Flags to return error codes. +More...

+ + + + + + + + + + + + + + + + + +

+Macros

#define osFlagsErrorUnknown   0xFFFFFFFFU
 osError (-1). More...
 
#define osFlagsErrorTimeout   0xFFFFFFFEU
 osErrorTimeout (-2). More...
 
#define osFlagsErrorResource   0xFFFFFFFDU
 osErrorResource (-3). More...
 
#define osFlagsErrorParameter   0xFFFFFFFCU
 osErrorParameter (-4). More...
 
#define osFlagsErrorISR   0xFFFFFFFAU
 osErrorISR (-6). More...
 
+

Description

+

In case of an error, flags functions (Thread Flags and Event Flags) return error codes. To indicate that an error has occurred, the highest bit of the return value is be set. You can check the exact error using the codes shown below.

+

Macro Definition Documentation

+ +
+
+ + + + +
#define osFlagsErrorUnknown   0xFFFFFFFFU
+
+

Generic error. It is returned when no other error can be applied.

+

Reference:

+ + +
+
+ +
+
+ + + + +
#define osFlagsErrorTimeout   0xFFFFFFFEU
+
+

This error is returned if a timeout was specified and the specified flags were not set, when the timeout occurred.

+

Reference:

+ + +
+
+ +
+
+ + + + +
#define osFlagsErrorResource   0xFFFFFFFDU
+
+

This error is returned when you try to get a flag that was not set and timeout 0 was specified. Is also returned when the specified object identifier is corrupt or invalid.

+

Reference:

+ + +
+
+ +
+
+ + + + +
#define osFlagsErrorParameter   0xFFFFFFFCU
+
+

This error is returned when a given parameter is wrong.

+

Reference:

+ + +
+
+ +
+
+ + + + +
#define osFlagsErrorISR   0xFFFFFFFAU
+
+

This error is returned when a non-ISR-callable function was called from an ISR.

+

Reference:

+ + +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__flags__error__codes.js b/docs/RTOS2/html/group__flags__error__codes.js new file mode 100644 index 0000000..f761035 --- /dev/null +++ b/docs/RTOS2/html/group__flags__error__codes.js @@ -0,0 +1,8 @@ +var group__flags__error__codes = +[ + [ "osFlagsErrorUnknown", "group__flags__error__codes.html#ga3b1d9fbb83d64eedb62f831c9be647c3", null ], + [ "osFlagsErrorTimeout", "group__flags__error__codes.html#ga2e951c3f1c3b7bff4eca3d7836cd19ca", null ], + [ "osFlagsErrorResource", "group__flags__error__codes.html#ga4db38b50da1889bcaaa7f747e844f904", null ], + [ "osFlagsErrorParameter", "group__flags__error__codes.html#gaa8a95ef938f8f5a9fcb815ec53184f77", null ], + [ "osFlagsErrorISR", "group__flags__error__codes.html#gaea3abd186643f539877e894b62b63448", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific.html b/docs/RTOS2/html/group__rtx5__specific.html new file mode 100644 index 0000000..6fdcbd7 --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific.html @@ -0,0 +1,153 @@ + + + + + +RTX v5 Specific API +CMSIS-RTOS2: RTX v5 Specific API + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
RTX v5 Specific API
+
+
+ +

RTX v5 implementation specific definitions and functions defined in rtx_os.h. +More...

+ + + + + + + + + + + +

+Content

 Macros
 RTX5 macros.
 
 Functions
 RTX5 functions.
 
 Event functions
 RTX5 Event Recorder functions.
 
+

Description

+

The RTX5 kernel can be customized for different application requirements:

+ +

RTX5 interfaces to the Event Recorder and provides event information that helps to analyze the operation. Refer to Event functions for more information.

+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx5__specific.js b/docs/RTOS2/html/group__rtx5__specific.js new file mode 100644 index 0000000..0d3964d --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific.js @@ -0,0 +1,6 @@ +var group__rtx5__specific = +[ + [ "Macros", "group__rtx5__specific__defines.html", "group__rtx5__specific__defines" ], + [ "Functions", "group__rtx5__specific__functions.html", "group__rtx5__specific__functions" ], + [ "Event functions", "group__rtx__evr.html", "group__rtx__evr" ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific__defines.html b/docs/RTOS2/html/group__rtx5__specific__defines.html new file mode 100644 index 0000000..e26c84b --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__defines.html @@ -0,0 +1,457 @@ + + + + + +Macros +CMSIS-RTOS2: Macros + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

RTX5 macros. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define osRtxThreadCbSize   sizeof(osRtxThread_t)
 Thread Control Block size. More...
 
#define osRtxTimerCbSize   sizeof(osRtxTimer_t)
 Timer Control Block size. More...
 
#define osRtxEventFlagsCbSize   sizeof(osRtxEventFlags_t)
 Event Flags Control Block size. More...
 
#define osRtxMutexCbSize   sizeof(osRtxMutex_t)
 Mutex Control Block size. More...
 
#define osRtxSemaphoreCbSize   sizeof(osRtxSemaphore_t)
 Semaphore Control Block size. More...
 
#define osRtxMemoryPoolCbSize   sizeof(osRtxMemoryPool_t)
 Memory Pool Control Block size. More...
 
#define osRtxMessageQueueCbSize   sizeof(osRtxMessageQueue_t)
 Message Queue Control Block size. More...
 
#define osRtxMemoryPoolMemSize(block_count, block_size)   (4*(block_count)*(((block_size)+3)/4))
 Memory Pool Memory size. More...
 
#define osRtxMessageQueueMemSize(msg_count, msg_size)   (4*(msg_count)*(3+(((msg_size)+3)/4)))
 Message Queue Memory size. More...
 
#define osRtxErrorStackUnderflow   1U
 Stack overflow, i.e. stack pointer below its lower memory limit for descending stacks. More...
 
#define osRtxErrorISRQueueOverflow   2U
 ISR Queue overflow detected when inserting object. More...
 
#define osRtxErrorTimerQueueOverflow   3U
 User Timer Callback Queue overflow detected for timer. More...
 
#define osRtxErrorClibSpace   4U
 Standard C/C++ library libspace not available. More...
 
#define osRtxErrorClibMutex   5U
 Standard C/C++ library mutex initialization failed. More...
 
+

Description

+

Macro Definition Documentation

+ +
+
+ + + + +
#define osRtxThreadCbSize   sizeof(osRtxThread_t)
+
+

This macro exposes the minimum amount of memory needed for an RTX5 Thread Control Block, see osThreadAttr_t::cb_mem and osThreadAttr_t::cb_size.

+

Example:

+
// Used-defined memory for thread control block
+
static uint32_t thread_cb[osRtxThreadCbSize/4U];
+
+
+
+ +
+
+ + + + +
#define osRtxTimerCbSize   sizeof(osRtxTimer_t)
+
+

This macro exposes the minimum amount of memory needed for an RTX5 Timer Control Block, see osTimerAttr_t::cb_mem and osTimerAttr_t::cb_size.

+

Example:

+
// Used-defined memory for timer control block
+
static uint32_t timer_cb[osRtxTimerCbSize/4U];
+
+
+
+ +
+
+ + + + +
#define osRtxEventFlagsCbSize   sizeof(osRtxEventFlags_t)
+
+

This macro exposes the minimum amount of memory needed for an RTX5 Event Flags Control Block, see osEventFlagsAttr_t::cb_mem and osEventFlagsAttr_t::cb_size.

+

Example:

+
// Used-defined memory for event flags control block
+
static uint32_t evflags_cb[osRtxEventFlagsCbSize/4U];
+
+
+
+ +
+
+ + + + +
#define osRtxMutexCbSize   sizeof(osRtxMutex_t)
+
+

This macro exposes the minimum amount of memory needed for an RTX5 Mutex Control Block, see osMutexAttr_t::cb_mem and osMutexAttr_t::cb_size.

+

Example:

+
// Used-defined memory for mutex control block
+
static uint32_t mutex_cb[osRtxMutexCbSize/4U];
+
+
+
+ +
+
+ + + + +
#define osRtxSemaphoreCbSize   sizeof(osRtxSemaphore_t)
+
+

This macro exposes the minimum amount of memory needed for an RTX5 Semaphore Control Block, see osSemaphoreAttr_t::cb_mem and osSemaphoreAttr_t::cb_size.

+

Example:

+
// Used-defined memory for semaphore control block
+
static uint32_t sema_cb[osRtxSemaphoreCbSize/4U];
+
+
+
+ +
+
+ + + + +
#define osRtxMemoryPoolCbSize   sizeof(osRtxMemoryPool_t)
+
+

This macro exposes the minimum amount of memory needed for an RTX5 Memory Pool Control Block, see osMemoryPoolAttr_t::cb_mem and osMemoryPoolAttr_t::cb_size.

+

Example:

+
// Used-defined memory for memory pool control block
+
static uint32_t mempool_cb[osRtxMemoryPoolCbSize/4U];
+
+
+
+ +
+
+ + + + +
#define osRtxMessageQueueCbSize   sizeof(osRtxMessageQueue_t)
+
+

This macro exposes the minimum amount of memory needed for an RTX5 Message Queue Control Block, see osMessageQueueAttr_t::cb_mem and osMessageQueueAttr_t::cb_size.

+

Example:

+
// Used-defined memory for message queue control block
+
static uint32_t msgqueue_cb[osRtxMessageQueueCbSize/4U];
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define osRtxMemoryPoolMemSize( block_count,
 block_size 
)   (4*(block_count)*(((block_size)+3)/4))
+
+

Memory size in bytes for Memory Pool storage.

+

This macro exposes the minimum amount of memory needed for an RTX5 Memory Pool Memory, see osMemoryPoolAttr_t::mp_mem and osMemoryPoolAttr_t::mp_size.

+

Example:

+
// Maximum number of objects
+
#define OBJ_COUNT 8U
+
+
// Object type
+
typedef struct {
+
uint32_t value1;
+
uint8_t value2;
+
} object_t;
+
+
// Used-defined memory for memory pool memory
+
static uint32_t mempool_mem[osRtxMemoryPoolMemSize(OBJ_COUNT, sizeof(object_t))/4U];
+
Parameters
+ + + +
block_countmaximum number of memory blocks in memory pool.
block_sizememory block size in bytes.
+
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define osRtxMessageQueueMemSize( msg_count,
 msg_size 
)   (4*(msg_count)*(3+(((msg_size)+3)/4)))
+
+

Memory size in bytes for Message Queue storage.

+

This macro exposes the minimum amount of memory needed for an RTX5 Message Queue Memory, see osMessageQueueAttr_t::mq_mem and osMessageQueueAttr_t::mq_size.

+

Example:

+
// Maximum number of messages
+
#define MSG_COUNT 16U
+
+
// Message data type
+
typedef struct {
+
uint32_t value1;
+
uint8_t value2;
+
} msg_item_t;
+
+
// Used-defined memory for message queue
+
static uint32_t mq_mem[osRtxMessageQueueMemSize(MSG_COUNT, sizeof(msg_item_t))/4U];
+
Parameters
+ + + +
msg_countmaximum number of messages in queue.
msg_sizemaximum message size in bytes.
+
+
+ +
+
+ +
+
+ + + + +
#define osRtxErrorStackUnderflow   1U
+
+

This error identifier is used with osRtxErrorNotify when RTX5 detects a thread stack overflow. The object_id announced along this error can be used to identify the affected thread.

+

Stack Usage Watermark used together with larger stack sizes can help to figure out actual memory requirements for threads.

+
Attention
Whenever this error identifier is signaled memory corruption has already happened.
+ +
+
+ +
+
+ + + + +
#define osRtxErrorISRQueueOverflow   2U
+
+

This error identifier is used with osRtxErrorNotify when RTX5 detects an overflow of the interrupt post processing message queue. The object_id can be used to identify the affected object.

+
Attention
Whenever this error identifier is signaled the system state is already inconsistent.
+ +
+
+ +
+
+ + + + +
#define osRtxErrorTimerQueueOverflow   3U
+
+

This error identifier is used with osRtxErrorNotify when RTX5 detects an overflow of the timer callback queue. The object_id can be used to identify the affected timer.

+
Attention
Whenever this error identifier is signaled a timer callback is already lost.
+ +
+
+ +
+
+ + + + +
#define osRtxErrorClibSpace   4U
+
+

Standard C/C++ library libspace not available: increase OS_THREAD_LIBSPACE_NUM.

+

This error identifier is used with osRtxErrorNotify when RTX5 detects usage of libspace but not enough memory was reserved using OS_THREAD_LIBSPACE_NUM.

+ +
+
+ +
+
+ + + + +
#define osRtxErrorClibMutex   5U
+
+

This error identifier is used with osRtxErrorNotify when RTX5 fails to create mutexes needed to lock global C/C++ library resources.

+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx5__specific__defines.js b/docs/RTOS2/html/group__rtx5__specific__defines.js new file mode 100644 index 0000000..fcd8ec4 --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__defines.js @@ -0,0 +1,17 @@ +var group__rtx5__specific__defines = +[ + [ "osRtxThreadCbSize", "group__rtx5__specific__defines.html#ga30d19272204231956582ebfff69567f6", null ], + [ "osRtxTimerCbSize", "group__rtx5__specific__defines.html#gaf8a145fdeb24fd912971f0671b1a3603", null ], + [ "osRtxEventFlagsCbSize", "group__rtx5__specific__defines.html#ga68100c8c44931f03547973294c433075", null ], + [ "osRtxMutexCbSize", "group__rtx5__specific__defines.html#ga188bfaaf7477cf24cbc9f207feaeb53a", null ], + [ "osRtxSemaphoreCbSize", "group__rtx5__specific__defines.html#ga0949b67063d0bd427fbee9c816b5d45a", null ], + [ "osRtxMemoryPoolCbSize", "group__rtx5__specific__defines.html#gab8e49e9e1eea5a015f2a3114cabceb48", null ], + [ "osRtxMessageQueueCbSize", "group__rtx5__specific__defines.html#gaa8d067c476faa6bfc8e5e21f3b3c844e", null ], + [ "osRtxMemoryPoolMemSize", "group__rtx5__specific__defines.html#gac6bea3541b458bbc79eafce42a2d87a2", null ], + [ "osRtxMessageQueueMemSize", "group__rtx5__specific__defines.html#ga47eb1e21f1bf9a42281c6c89c7473e99", null ], + [ "osRtxErrorStackUnderflow", "group__rtx5__specific__defines.html#ga42206aa2524b8fab613d26bea0f73c44", null ], + [ "osRtxErrorISRQueueOverflow", "group__rtx5__specific__defines.html#ga7377235f9fa3cedee06f682cd93f3e88", null ], + [ "osRtxErrorTimerQueueOverflow", "group__rtx5__specific__defines.html#gaad420018f26e751ec55d3922a283beb0", null ], + [ "osRtxErrorClibSpace", "group__rtx5__specific__defines.html#ga14a24724f6e87744ba84674ef76e4256", null ], + [ "osRtxErrorClibMutex", "group__rtx5__specific__defines.html#gac749c24b9cf6c49b392b015ed0517cfc", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific__functions.html b/docs/RTOS2/html/group__rtx5__specific__functions.html new file mode 100644 index 0000000..be6d83d --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__functions.html @@ -0,0 +1,265 @@ + + + + + +Functions +CMSIS-RTOS2: Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ + +
+
+ +

RTX5 functions. +More...

+ + + + + + + + +

+Functions

uint32_t osRtxErrorNotify (uint32_t code, void *object_id)
 OS Error Callback function. More...
 
void osRtxIdleThread (void *argument)
 OS Idle Thread. More...
 
+

Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint32_t osRtxErrorNotify (uint32_t code,
void * object_id 
)
+
+
Parameters
+ + + +
[in]codeThe code to identify the error condition.
[in]object_idA reference to any RTX object to identify the object that caused the issue, can be NULL.
+
+
+

Some system error conditions can be detected during runtime. If the RTX kernel detects a runtime error, it calls the runtime error function osRtxErrorNotify for an object specified by parameter object_id.

+

The parameter code passes the actual error code to this function:

+ + + + + + + + + + + + + +
Error Code Description
osRtxErrorStackUnderflow Stack overflow detected for thread (thread_id=object_id)
osRtxErrorISRQueueOverflow ISR Queue overflow detected when inserting object (object_id)
osRtxErrorTimerQueueOverflow User Timer Callback Queue overflow detected for timer (timer_id=object_id)
osRtxErrorClibSpace Standard C/C++ library libspace not available: increase OS_THREAD_LIBSPACE_NUM
osRtxErrorClibMutex Standard C/C++ library mutex initialization failed
+

The function osRtxErrorNotify must contain an infinite loop to prevent further program execution. You can use an emulator to step over the infinite loop and trace into the code introducing a runtime error. For the overflow errors this means you need to increase the size of the object causing an overflow.

+

Code Example

+
#include "rtx_os.h"
+
+
uint32_t osRtxErrorNotify (uint32_t code, void *object_id) {
+
(void)object_id;
+
+
switch (code) {
+ +
// Stack overflow detected for thread (thread_id=object_id)
+
break;
+ +
// ISR Queue overflow detected when inserting object (object_id)
+
break;
+ +
// User Timer Callback Queue overflow detected for timer (timer_id=object_id)
+
break;
+ +
// Standard C/C++ library libspace not available: increase OS_THREAD_LIBSPACE_NUM
+
break;
+ +
// Standard C/C++ library mutex initialization failed
+
break;
+
default:
+
break;
+
}
+
for (;;) {}
+
//return 0U;
+
}
+
+
+
+ +
+
+ + + + + + + + +
void osRtxIdleThread (void * argument)
+
+
Parameters
+ + +
[in]argumentUnused parameter, always set to NULL.
+
+
+

The function osRtxIdleThread is executed by the RTX kernel when no other threads are ready to run.

+

By default, this thread is an empty end-less loop that does nothing. It only waits until another task becomes ready to run. You may change the code of the osRtxIdleThread function to put the CPU into a power-saving or idle mode, see Tick-less Low-Power Operation.

+

The default stack size for this thread is defined in the file RTX_Config.h. Refer to Thread Configuration.

+
Attention
The idle thread should never be blocked nor terminated! Do not call +and do not return from this function when providing a user defined implementation.
+

Code Example

+
#include "rtx_os.h"
+
+
__NO_RETURN void osRtxIdleThread (void *argument) {
+
(void)argument;
+
+
for (;;) {}
+
}
+
+
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx5__specific__functions.js b/docs/RTOS2/html/group__rtx5__specific__functions.js new file mode 100644 index 0000000..b69db54 --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__functions.js @@ -0,0 +1,5 @@ +var group__rtx5__specific__functions = +[ + [ "osRtxErrorNotify", "group__rtx5__specific__functions.html#gaf1745a88f9cc60b609ab1c8076bd346d", null ], + [ "osRtxIdleThread", "group__rtx5__specific__functions.html#ga074068b8efa7074cee68a71481d0b072", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific__structs.html b/docs/RTOS2/html/group__rtx5__specific__structs.html new file mode 100644 index 0000000..bc5fd8c --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__structs.html @@ -0,0 +1,757 @@ + + + + + +Structs +CMSIS-RTOS2: Structs + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.2 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

RTX5 structs. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Structures

struct  osRtxThread_t
 Thread Control Block. More...
 
struct  osRtxTimerFinfo_t
 Timer Function Information. More...
 
struct  osRtxTimer_t
 Timer Control Block. More...
 
struct  osRtxEventFlags_t
 Event Flags Control Block. More...
 
struct  osRtxMutex_t
 Mutex Control Block. More...
 
struct  osRtxSemaphore_t
 Semaphore Control Block. More...
 
struct  osRtxMemoryPool_t
 Memory Pool Control Block. More...
 
struct  osRtxMessageQueue_t
 Message Queue Control Block. More...
 
+

Description

+

Data Structure Documentation

+ +
+
+ + + + +
struct osRtxThread_t
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+uint8_t +id +Object Identifier.
+uint8_t +state +Object State.
+uint8_t +flags +Object Flags.
+uint8_t +attr +Object Attributes.
+const char * +name +Object Name.
+struct osRtxThread_s * +thread_next +Link pointer to next Thread in Object list.
+struct osRtxThread_s * +thread_prev +Link pointer to previous Thread in Object list.
+struct osRtxThread_s * +delay_next +Link pointer to next Thread in Delay list.
+struct osRtxThread_s * +delay_prev +Link pointer to previous Thread in Delay list.
+struct osRtxThread_s * +thread_join +Thread waiting to Join.
+uint32_t +delay +Delay Time.
+int8_t +priority +Thread Priority.
+int8_t +priority_base +Base Priority.
+uint8_t +stack_frame +Stack Frame (EXC_RETURN[7..0])
+uint8_t +flags_options +Thread/Event Flags Options.
+uint32_t +wait_flags +Waiting Thread/Event Flags.
+uint32_t +thread_flags +Thread Flags.
+struct osRtxMutex_s * +mutex_list +Link pointer to list of owned Mutexes.
+void * +stack_mem +Stack Memory.
+uint32_t +stack_size +Stack Size.
+uint32_t +sp +Current Stack Pointer.
+uint32_t +thread_addr +Thread entry address.
+uint32_t +tz_memory +TrustZone Memory Identifier.
+ +
+
+ +
+
+ + + + +
struct osRtxTimerFinfo_t
+
+
+ + + + + + + +
Data Fields
+void * +fp +Function Pointer.
+void * +arg +Function Argument.
+ +
+
+ +
+
+ + + + +
struct osRtxTimer_t
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+uint8_t +id +Object Identifier.
+uint8_t +state +Object State.
+uint8_t +flags +Object Flags.
+uint8_t +type +Timer Type (Periodic/One-shot)
+const char * +name +Object Name.
+struct osRtxTimer_s * +prev +Pointer to previous active Timer.
+struct osRtxTimer_s * +next +Pointer to next active Timer.
+uint32_t +tick +Timer current Tick.
+uint32_t +load +Timer Load value.
+osRtxTimerFinfo_t +finfo +Timer Function Info.
+ +
+
+ +
+
+ + + + +
struct osRtxEventFlags_t
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+uint8_t +id +Object Identifier.
+uint8_t +state +Object State.
+uint8_t +flags +Object Flags.
+uint8_t +reserved +
+const char * +name +Object Name.
+osRtxThread_t * +thread_list +Waiting Threads List.
+uint32_t +event_flags +Event Flags.
+ +
+
+ +
+
+ + + + +
struct osRtxMutex_t
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+uint8_t +id +Object Identifier.
+uint8_t +state +Object State.
+uint8_t +flags +Object Flags.
+uint8_t +attr +Object Attributes.
+const char * +name +Object Name.
+osRtxThread_t * +thread_list +Waiting Threads List.
+osRtxThread_t * +owner_thread +Owner Thread.
+struct osRtxMutex_s * +owner_prev +Pointer to previous owned Mutex.
+struct osRtxMutex_s * +owner_next +Pointer to next owned Mutex.
+uint8_t +lock +Lock counter.
+uint8_t +padding[3] +
+ +
+
+ +
+
+ + + + +
struct osRtxSemaphore_t
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+uint8_t +id +Object Identifier.
+uint8_t +state +Object State.
+uint8_t +flags +Object Flags.
+uint8_t +reserved +
+const char * +name +Object Name.
+osRtxThread_t * +thread_list +Waiting Threads List.
+uint16_t +tokens +Current number of tokens.
+uint16_t +max_tokens +Maximum number of tokens.
+ +
+
+ +
+
+ + + + +
struct osRtxMemoryPool_t
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+uint8_t +id +Object Identifier.
+uint8_t +state +Object State.
+uint8_t +flags +Object Flags.
+uint8_t +reserved +
+const char * +name +Object Name.
+osRtxThread_t * +thread_list +Waiting Threads List.
+osRtxMpInfo_t +mp_info +Memory Pool Info.
+ +
+
+ +
+
+ + + + +
struct osRtxMessageQueue_t
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+uint8_t +id +Object Identifier.
+uint8_t +state +Object State.
+uint8_t +flags +Object Flags.
+uint8_t +reserved +
+const char * +name +Object Name.
+osRtxThread_t * +thread_list +Waiting Threads List.
+osRtxMpInfo_t +mp_info +Memory Pool Info.
+uint32_t +msg_size +Message Size.
+uint32_t +msg_count +Number of queued Messages.
+osRtxMessage_t * +msg_first +Pointer to first Message.
+osRtxMessage_t * +msg_last +Pointer to last Message.
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx5__specific__structs.js b/docs/RTOS2/html/group__rtx5__specific__structs.js new file mode 100644 index 0000000..6028a42 --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__structs.js @@ -0,0 +1,98 @@ +var group__rtx5__specific__structs = +[ + [ "osRtxThread_t", "group__rtx5__specific__structs.html#structosRtxThread__t", [ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "attr", "group__rtx5__specific__structs.html#a28478ea2856f6286899bc90b2c6a1ec4", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_next", "group__rtx5__specific__structs.html#a421971e8ae94fe0bd86b85a90445e71e", null ], + [ "thread_prev", "group__rtx5__specific__structs.html#aa230a0d899f6c0750e6d454af3ef9b05", null ], + [ "delay_next", "group__rtx5__specific__structs.html#a21a74cedec66715cd5d7422797035868", null ], + [ "delay_prev", "group__rtx5__specific__structs.html#adcfea33cc536708db8a3419ba0295551", null ], + [ "thread_join", "group__rtx5__specific__structs.html#a83ec0540c50d4e79bed99f1b384bd2b9", null ], + [ "delay", "group__rtx5__specific__structs.html#a458421a43d4f6dc515faf427bf579d00", null ], + [ "priority", "group__rtx5__specific__structs.html#a81659cc4c01e54e2424022728d9effc7", null ], + [ "priority_base", "group__rtx5__specific__structs.html#ac67f8858081fb7a6e5a4ee8d2de3b348", null ], + [ "stack_frame", "group__rtx5__specific__structs.html#a1071334ebd46d95b9ab1dcad788b2adc", null ], + [ "flags_options", "group__rtx5__specific__structs.html#a87c898585d0aeffdcf67c9e1b3befefe", null ], + [ "wait_flags", "group__rtx5__specific__structs.html#a3c7b4f24d9527394f4b5a1135d117691", null ], + [ "thread_flags", "group__rtx5__specific__structs.html#ae757685e50b875e953f4aff67ac24b1b", null ], + [ "mutex_list", "group__rtx5__specific__structs.html#a70b3153655adaf42687fe250983f6c95", null ], + [ "stack_mem", "group__rtx5__specific__structs.html#a447dbb69b4c036e118b3b1b8bd22fe60", null ], + [ "stack_size", "group__rtx5__specific__structs.html#ad63716408aae5b50857ca8ce74e3a3ff", null ], + [ "sp", "group__rtx5__specific__structs.html#a382a07e24a852d580d7548b8d517384c", null ], + [ "thread_addr", "group__rtx5__specific__structs.html#adf2ebf46aa7018845582f1c70de83598", null ], + [ "tz_memory", "group__rtx5__specific__structs.html#adaa6c424a231e5f6c788532675f33e16", null ] + ] ], + [ "osRtxTimerFinfo_t", "group__rtx5__specific__structs.html#structosRtxTimerFinfo__t", [ + [ "fp", "group__rtx5__specific__structs.html#a9587c8102d13ec6b8df5dd068e221125", null ], + [ "arg", "group__rtx5__specific__structs.html#a9ce2ec4812a92cb6ab39f6e81e9173a9", null ] + ] ], + [ "osRtxTimer_t", "group__rtx5__specific__structs.html#structosRtxTimer__t", [ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "type", "group__rtx5__specific__structs.html#a1d127017fb298b889f4ba24752d08b8e", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "prev", "group__rtx5__specific__structs.html#ac8953ebf7df8aaf724cb12876ac8fb1a", null ], + [ "next", "group__rtx5__specific__structs.html#a8b9ac161a613448926b2c2b2c8dbe259", null ], + [ "tick", "group__rtx5__specific__structs.html#a260e06ce96c2e4deebccaedeb059dc0b", null ], + [ "load", "group__rtx5__specific__structs.html#aee4a6239f04d660fc90663dd6b39ca95", null ], + [ "finfo", "group__rtx5__specific__structs.html#ab415a6615c5ddf5365ed86e58a1e1809", null ] + ] ], + [ "osRtxEventFlags_t", "group__rtx5__specific__structs.html#structosRtxEventFlags__t", [ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "group__rtx5__specific__structs.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "group__rtx5__specific__structs.html#a8afd5feb676df99867375957b0587451", null ], + [ "event_flags", "group__rtx5__specific__structs.html#a7044be0679894b5daf72f19f9dd06e03", null ] + ] ], + [ "osRtxMutex_t", "group__rtx5__specific__structs.html#structosRtxMutex__t", [ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "attr", "group__rtx5__specific__structs.html#a28478ea2856f6286899bc90b2c6a1ec4", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "group__rtx5__specific__structs.html#a8afd5feb676df99867375957b0587451", null ], + [ "owner_thread", "group__rtx5__specific__structs.html#a987889d464cb2925029e135b76aa0dc9", null ], + [ "owner_prev", "group__rtx5__specific__structs.html#a50b315b9b80bafdba54a7a731be1cc30", null ], + [ "owner_next", "group__rtx5__specific__structs.html#a54be7ae32f627ee70e1af8c54203ee5a", null ], + [ "lock", "group__rtx5__specific__structs.html#a92435efb84d6814afd444fd462802e9c", null ], + [ "padding", "group__rtx5__specific__structs.html#a735ef00341a84c02ba561c66de3d20af", null ] + ] ], + [ "osRtxSemaphore_t", "group__rtx5__specific__structs.html#structosRtxSemaphore__t", [ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "group__rtx5__specific__structs.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "group__rtx5__specific__structs.html#a8afd5feb676df99867375957b0587451", null ], + [ "tokens", "group__rtx5__specific__structs.html#a4e2e4e1126848f81d9e943147e07f0e0", null ], + [ "max_tokens", "group__rtx5__specific__structs.html#aa793f0e9a46e8b59b6d351535ee18a7d", null ] + ] ], + [ "osRtxMemoryPool_t", "group__rtx5__specific__structs.html#structosRtxMemoryPool__t", [ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "group__rtx5__specific__structs.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "group__rtx5__specific__structs.html#a8afd5feb676df99867375957b0587451", null ], + [ "mp_info", "group__rtx5__specific__structs.html#ac1cf67a8631962a42fa2da46f20a1a39", null ] + ] ], + [ "osRtxMessageQueue_t", "group__rtx5__specific__structs.html#structosRtxMessageQueue__t", [ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "group__rtx5__specific__structs.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "group__rtx5__specific__structs.html#a8afd5feb676df99867375957b0587451", null ], + [ "mp_info", "group__rtx5__specific__structs.html#ac1cf67a8631962a42fa2da46f20a1a39", null ], + [ "msg_size", "group__rtx5__specific__structs.html#a58873af81b75772a41aa5c1ff788a0c2", null ], + [ "msg_count", "group__rtx5__specific__structs.html#a6a019648a53352a413ea79b958a362cd", null ], + [ "msg_first", "group__rtx5__specific__structs.html#a13c143cc2f25a550fc3eb7ae68b0c56d", null ], + [ "msg_last", "group__rtx5__specific__structs.html#ab386d4a98974f52ca151426c4dde0da4", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxEventFlags__t.js b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxEventFlags__t.js new file mode 100644 index 0000000..f1f1754 --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxEventFlags__t.js @@ -0,0 +1,10 @@ +var group__rtx5__specific__structs_structosRtxEventFlags__t = +[ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "group__rtx5__specific__structs.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "group__rtx5__specific__structs.html#a8afd5feb676df99867375957b0587451", null ], + [ "event_flags", "group__rtx5__specific__structs.html#a7044be0679894b5daf72f19f9dd06e03", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMemoryPool__t.js b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMemoryPool__t.js new file mode 100644 index 0000000..c397607 --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMemoryPool__t.js @@ -0,0 +1,10 @@ +var group__rtx5__specific__structs_structosRtxMemoryPool__t = +[ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "group__rtx5__specific__structs.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "group__rtx5__specific__structs.html#a8afd5feb676df99867375957b0587451", null ], + [ "mp_info", "group__rtx5__specific__structs.html#ac1cf67a8631962a42fa2da46f20a1a39", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMessageQueue__t.js b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMessageQueue__t.js new file mode 100644 index 0000000..20efe32 --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMessageQueue__t.js @@ -0,0 +1,14 @@ +var group__rtx5__specific__structs_structosRtxMessageQueue__t = +[ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "group__rtx5__specific__structs.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "group__rtx5__specific__structs.html#a8afd5feb676df99867375957b0587451", null ], + [ "mp_info", "group__rtx5__specific__structs.html#ac1cf67a8631962a42fa2da46f20a1a39", null ], + [ "msg_size", "group__rtx5__specific__structs.html#a58873af81b75772a41aa5c1ff788a0c2", null ], + [ "msg_count", "group__rtx5__specific__structs.html#a6a019648a53352a413ea79b958a362cd", null ], + [ "msg_first", "group__rtx5__specific__structs.html#a13c143cc2f25a550fc3eb7ae68b0c56d", null ], + [ "msg_last", "group__rtx5__specific__structs.html#ab386d4a98974f52ca151426c4dde0da4", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMutex__t.js b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMutex__t.js new file mode 100644 index 0000000..81924ff --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxMutex__t.js @@ -0,0 +1,14 @@ +var group__rtx5__specific__structs_structosRtxMutex__t = +[ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "attr", "group__rtx5__specific__structs.html#a28478ea2856f6286899bc90b2c6a1ec4", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "group__rtx5__specific__structs.html#a8afd5feb676df99867375957b0587451", null ], + [ "owner_thread", "group__rtx5__specific__structs.html#a987889d464cb2925029e135b76aa0dc9", null ], + [ "owner_prev", "group__rtx5__specific__structs.html#a50b315b9b80bafdba54a7a731be1cc30", null ], + [ "owner_next", "group__rtx5__specific__structs.html#a54be7ae32f627ee70e1af8c54203ee5a", null ], + [ "lock", "group__rtx5__specific__structs.html#a92435efb84d6814afd444fd462802e9c", null ], + [ "padding", "group__rtx5__specific__structs.html#a735ef00341a84c02ba561c66de3d20af", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxSemaphore__t.js b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxSemaphore__t.js new file mode 100644 index 0000000..e0ffc85 --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxSemaphore__t.js @@ -0,0 +1,11 @@ +var group__rtx5__specific__structs_structosRtxSemaphore__t = +[ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "group__rtx5__specific__structs.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "group__rtx5__specific__structs.html#a8afd5feb676df99867375957b0587451", null ], + [ "tokens", "group__rtx5__specific__structs.html#a4e2e4e1126848f81d9e943147e07f0e0", null ], + [ "max_tokens", "group__rtx5__specific__structs.html#aa793f0e9a46e8b59b6d351535ee18a7d", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxThread__t.js b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxThread__t.js new file mode 100644 index 0000000..f28e8f1 --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxThread__t.js @@ -0,0 +1,26 @@ +var group__rtx5__specific__structs_structosRtxThread__t = +[ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "attr", "group__rtx5__specific__structs.html#a28478ea2856f6286899bc90b2c6a1ec4", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_next", "group__rtx5__specific__structs.html#a421971e8ae94fe0bd86b85a90445e71e", null ], + [ "thread_prev", "group__rtx5__specific__structs.html#aa230a0d899f6c0750e6d454af3ef9b05", null ], + [ "delay_next", "group__rtx5__specific__structs.html#a21a74cedec66715cd5d7422797035868", null ], + [ "delay_prev", "group__rtx5__specific__structs.html#adcfea33cc536708db8a3419ba0295551", null ], + [ "thread_join", "group__rtx5__specific__structs.html#a83ec0540c50d4e79bed99f1b384bd2b9", null ], + [ "delay", "group__rtx5__specific__structs.html#a458421a43d4f6dc515faf427bf579d00", null ], + [ "priority", "group__rtx5__specific__structs.html#a81659cc4c01e54e2424022728d9effc7", null ], + [ "priority_base", "group__rtx5__specific__structs.html#ac67f8858081fb7a6e5a4ee8d2de3b348", null ], + [ "stack_frame", "group__rtx5__specific__structs.html#a1071334ebd46d95b9ab1dcad788b2adc", null ], + [ "flags_options", "group__rtx5__specific__structs.html#a87c898585d0aeffdcf67c9e1b3befefe", null ], + [ "wait_flags", "group__rtx5__specific__structs.html#a3c7b4f24d9527394f4b5a1135d117691", null ], + [ "thread_flags", "group__rtx5__specific__structs.html#ae757685e50b875e953f4aff67ac24b1b", null ], + [ "mutex_list", "group__rtx5__specific__structs.html#a70b3153655adaf42687fe250983f6c95", null ], + [ "stack_mem", "group__rtx5__specific__structs.html#a447dbb69b4c036e118b3b1b8bd22fe60", null ], + [ "stack_size", "group__rtx5__specific__structs.html#ad63716408aae5b50857ca8ce74e3a3ff", null ], + [ "sp", "group__rtx5__specific__structs.html#a382a07e24a852d580d7548b8d517384c", null ], + [ "thread_addr", "group__rtx5__specific__structs.html#adf2ebf46aa7018845582f1c70de83598", null ], + [ "tz_memory", "group__rtx5__specific__structs.html#adaa6c424a231e5f6c788532675f33e16", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxTimerFinfo__t.js b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxTimerFinfo__t.js new file mode 100644 index 0000000..4473f18 --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxTimerFinfo__t.js @@ -0,0 +1,5 @@ +var group__rtx5__specific__structs_structosRtxTimerFinfo__t = +[ + [ "fp", "group__rtx5__specific__structs.html#a9587c8102d13ec6b8df5dd068e221125", null ], + [ "arg", "group__rtx5__specific__structs.html#a9ce2ec4812a92cb6ab39f6e81e9173a9", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxTimer__t.js b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxTimer__t.js new file mode 100644 index 0000000..999414f --- /dev/null +++ b/docs/RTOS2/html/group__rtx5__specific__structs_structosRtxTimer__t.js @@ -0,0 +1,13 @@ +var group__rtx5__specific__structs_structosRtxTimer__t = +[ + [ "id", "group__rtx5__specific__structs.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "group__rtx5__specific__structs.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "group__rtx5__specific__structs.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "type", "group__rtx5__specific__structs.html#a1d127017fb298b889f4ba24752d08b8e", null ], + [ "name", "group__rtx5__specific__structs.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "prev", "group__rtx5__specific__structs.html#ac8953ebf7df8aaf724cb12876ac8fb1a", null ], + [ "next", "group__rtx5__specific__structs.html#a8b9ac161a613448926b2c2b2c8dbe259", null ], + [ "tick", "group__rtx5__specific__structs.html#a260e06ce96c2e4deebccaedeb059dc0b", null ], + [ "load", "group__rtx5__specific__structs.html#aee4a6239f04d660fc90663dd6b39ca95", null ], + [ "finfo", "group__rtx5__specific__structs.html#ab415a6615c5ddf5365ed86e58a1e1809", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx__evr.html b/docs/RTOS2/html/group__rtx__evr.html new file mode 100644 index 0000000..d2f4b3c --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr.html @@ -0,0 +1,167 @@ + + + + + +Event functions +CMSIS-RTOS2: Event functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Event functions
+
+
+ +

RTX5 Event Recorder functions. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Content

 Memory Functions
 Events generated memory functions.
 
 Kernel Functions
 Events generated by kernel functions.
 
 Thread Functions
 Events generated by thread functions.
 
 Timer Functions
 Events generated by timer functions.
 
 Event Flags Functions
 Events generated by event flag functions.
 
 Mutex Functions
 Events generated by mutex functions.
 
 Semaphore Functions
 Events generated by semaphore functions.
 
 Memory Pool Functions
 Events generated by memory pool functions.
 
 Message Queue Functions
 Events generated by message queue functions.
 
+

Description

+

RTX5 interfaces to the Event Recorder to provide event information which helps you to understand and analyze the operation.

+

To use the Event Recorder together with RTX5, it is required to create an image that generates event information. The steps are described under Add Event Recorder Visibility.

+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx__evr.js b/docs/RTOS2/html/group__rtx__evr.js new file mode 100644 index 0000000..62bd565 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr.js @@ -0,0 +1,12 @@ +var group__rtx__evr = +[ + [ "Memory Functions", "group__rtx__evr__memory.html", "group__rtx__evr__memory" ], + [ "Kernel Functions", "group__rtx__evr__kernel.html", "group__rtx__evr__kernel" ], + [ "Thread Functions", "group__rtx__evr__thread.html", "group__rtx__evr__thread" ], + [ "Timer Functions", "group__rtx__evr__timer.html", "group__rtx__evr__timer" ], + [ "Event Flags Functions", "group__rtx__evr__event__flasg.html", "group__rtx__evr__event__flasg" ], + [ "Mutex Functions", "group__rtx__evr__mutex.html", "group__rtx__evr__mutex" ], + [ "Semaphore Functions", "group__rtx__evr__semaphore.html", "group__rtx__evr__semaphore" ], + [ "Memory Pool Functions", "group__rtx__evr__memory__pool.html", "group__rtx__evr__memory__pool" ], + [ "Message Queue Functions", "group__rtx__evr__message__queue.html", "group__rtx__evr__message__queue" ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx__evr__event__flasg.html b/docs/RTOS2/html/group__rtx__evr__event__flasg.html new file mode 100644 index 0000000..27c8317 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__event__flasg.html @@ -0,0 +1,422 @@ + + + + + +Event Flags Functions +CMSIS-RTOS2: Event Flags Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Event Flags Functions
+
+
+ +

Events generated by event flag functions. +More...

+ + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void EvrRtxEventFlagsError (osEventFlagsId_t ef_id, int32_t status)
 Event on event flags error (Error) More...
 
void EvrRtxEventFlagsNew (const osEventFlagsAttr_t *attr)
 Event on event flags create and initialize (API) More...
 
void EvrRtxEventFlagsCreated (osEventFlagsId_t ef_id, const char *name)
 Event on successful event flags create (Op) More...
 
void EvrRtxEventFlagsGetName (osEventFlagsId_t ef_id, const char *name)
 Event on event flags name retrieve (API) More...
 
void EvrRtxEventFlagsWaitTimeout (osEventFlagsId_t ef_id)
 Event on wait timeout for event flags (Op) More...
 
void EvrRtxEventFlagsDelete (osEventFlagsId_t ef_id)
 Event on event flags delete (API) More...
 
void EvrRtxEventFlagsDestroyed (osEventFlagsId_t ef_id)
 Event on successful event flags delete (Op) More...
 
+

Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxEventFlagsError (osEventFlagsId_t ef_id,
int32_t status 
)
+
+
Parameters
+ + + +
[in]ef_idevent flags ID obtained by osEventFlagsNew or NULL when ID is unknown.
[in]statusextended execution status.
+
+
+

The event EventFlagsError is generated when Event Flags routines complete their execution due to an error.

+

The status parameter indicates the execution status and can be one of the osStatus_t codes or one of the extended execution status codes which are summarized in the table below.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Extended Status Code Description
osRtxErrorKernelNotReady Kernel scheduler is not in Ready state.
osRtxErrorKernelNotRunning Kernel scheduler is not executing - there is no running thread.
osRtxErrorInvalidControlBlock Object control block with invalid alignment or size was specified.
osRtxErrorInvalidDataMemory Object data memory with invalid alignment or size was specified.
osRtxErrorInvalidThreadStack Thread stack memory with invalid alignment or size was specified.
osRtxErrorInvalidPriority Invalid thread priority was specified.
osRtxErrorThreadNotJoinable Specified thread is not joinable.
osRtxErrorMutexNotOwned Specified mutex is not owned by the current running thread.
osRtxErrorMutexNotLocked Specified mutex is not locked.
osRtxErrorMutexLockLimit Maximum number of recursive mutex locks reached.
osRtxErrorSemaphoreCountLimit Semaphore count limit reached.
osRtxErrorTZ_InitContext_S Secure context memory system initialization failed.
osRtxErrorTZ_AllocContext_S Secure context memory allocation failed.
osRtxErrorTZ_FreeContext_S Secure context memory deallocation failed.
osRtxErrorTZ_LoadContext_S Secure context load failed.
osRtxErrorTZ_SaveContext_S Secure context save failed.
+

Value in the Event Recorder shows:

+
    +
  • ef_id : event flags ID.
  • +
  • status : execution status code.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxEventFlagsNew (const osEventFlagsAttr_tattr)
+
+
Parameters
+ + +
[in]attrevent flags attributes.
+
+
+

The event EventFlagsNew is generated when the function osEventFlagsNew is called.

+

Value in the Event Recorder shows:

+
    +
  • attr : memory address of Event Flags attributes or 0 when they are not specified.
  • +
+

In case when event flags attributes are provided in the API call they are also detailed in the Event Recorder.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxEventFlagsCreated (osEventFlagsId_t ef_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]ef_idevent flags ID obtained by osEventFlagsNew.
[in]namepointer to event flags object name.
+
+
+

The event EventFlagsCreated is generated when the function osEventFlagsNew successfully creates a event flags object.

+

Value in the Event Recorder shows:

+
    +
  • ef_id : event flags ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxEventFlagsGetName (osEventFlagsId_t ef_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]ef_idevent flags ID obtained by osEventFlagsNew.
[in]namepointer to event flags object name.
+
+
+

The event EventFlagsGetName is generated when the function osEventFlagsGetName is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • ef_id : event flags ID.
  • +
  • name : retrieved memory address of name string (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxEventFlagsWaitTimeout (osEventFlagsId_t ef_id)
+
+
Parameters
+ + +
[in]ef_idevent flags ID obtained by osEventFlagsNew.
+
+
+

The event EventFlagsWaitTimeout is generated when wait for event flags to become signaled is aborted due to expired wait timeout.

+

Value in the Event Recorder shows:

+
    +
  • ef_id : event flags ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxEventFlagsDelete (osEventFlagsId_t ef_id)
+
+
Parameters
+ + +
[in]ef_idevent flags ID obtained by osEventFlagsNew.
+
+
+

The event EventFlagsDelete is generated when the function osEventFlagsDelete is called.

+

Value in the Event Recorder shows:

+
    +
  • ef_id : event flags ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxEventFlagsDestroyed (osEventFlagsId_t ef_id)
+
+
Parameters
+ + +
[in]ef_idevent flags ID obtained by osEventFlagsNew.
+
+
+

The event EventFlagsDestroyed is generated when the function osEventFlagsDelete successfully deletes the event flags object.

+

Value in the Event Recorder shows:

+
    +
  • ef_id : event flags ID.
  • +
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx__evr__event__flasg.js b/docs/RTOS2/html/group__rtx__evr__event__flasg.js new file mode 100644 index 0000000..2b90d6e --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__event__flasg.js @@ -0,0 +1,10 @@ +var group__rtx__evr__event__flasg = +[ + [ "EvrRtxEventFlagsError", "group__rtx__evr__event__flasg.html#gaa281b7380c0fa725faa722badbeb2e5f", null ], + [ "EvrRtxEventFlagsNew", "group__rtx__evr__event__flasg.html#gae798cdc4cb10ada732e592318037cba7", null ], + [ "EvrRtxEventFlagsCreated", "group__rtx__evr__event__flasg.html#gaa1f48b9787e3a7d4f56449ed1dd12f26", null ], + [ "EvrRtxEventFlagsGetName", "group__rtx__evr__event__flasg.html#gae9ebcbc09a1c15c719d95fe7b8c2ee18", null ], + [ "EvrRtxEventFlagsWaitTimeout", "group__rtx__evr__event__flasg.html#ga877235cbe04188b831b70a3c2237c827", null ], + [ "EvrRtxEventFlagsDelete", "group__rtx__evr__event__flasg.html#ga10e98e35999350e9e337c716ba4dc079", null ], + [ "EvrRtxEventFlagsDestroyed", "group__rtx__evr__event__flasg.html#ga2ef153a6ee7a8d72375f81128454ede9", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx__evr__kernel.html b/docs/RTOS2/html/group__rtx__evr__kernel.html new file mode 100644 index 0000000..0842158 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__kernel.html @@ -0,0 +1,788 @@ + + + + + +Kernel Functions +CMSIS-RTOS2: Kernel Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Kernel Functions
+
+
+ +

Events generated by kernel functions. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void EvrRtxKernelError (int32_t status)
 Event on RTOS kernel error (Error) More...
 
void EvrRtxKernelInitialize (void)
 Event on RTOS kernel initialize (API) More...
 
void EvrRtxKernelInitialized (void)
 Event on successful RTOS kernel initialize (Op) More...
 
void EvrRtxKernelGetInfo (osVersion_t *version, char *id_buf, uint32_t id_size)
 Event on RTOS kernel information retrieve (API) More...
 
void EvrRtxKernelInfoRetrieved (osVersion_t *version, char *id_buf)
 Event on successful RTOS kernel information retrieve (Op) More...
 
void EvrRtxKernelGetState (osKernelState_t state)
 Event on current RTOS Kernel state retrieve (API) More...
 
void EvrRtxKernelStart (void)
 Event on RTOS Kernel scheduler start (API) More...
 
void EvrRtxKernelStarted (void)
 Event on successful RTOS Kernel scheduler start (Op) More...
 
void EvrRtxKernelLock (void)
 Event on RTOS Kernel scheduler lock (API) More...
 
void EvrRtxKernelLocked (int32_t lock)
 Event on successful RTOS Kernel scheduler lock (Op) More...
 
void EvrRtxKernelUnlock (void)
 Event on RTOS Kernel scheduler unlock (API) More...
 
void EvrRtxKernelUnlocked (int32_t lock)
 Event on successful RTOS Kernel scheduler unlock (Op) More...
 
void EvrRtxKernelRestoreLock (int32_t lock)
 Event on RTOS Kernel scheduler lock state restore (API) More...
 
void EvrRtxKernelLockRestored (int32_t lock)
 Event on successful RTOS Kernel scheduler lock state restore (Op) More...
 
void EvrRtxKernelSuspend (void)
 Event on RTOS Kernel scheduler suspend (API) More...
 
void EvrRtxKernelSuspended (uint32_t sleep_ticks)
 Event on successful RTOS Kernel scheduler suspend (Op) More...
 
void EvrRtxKernelResume (uint32_t sleep_ticks)
 Event on RTOS Kernel scheduler resume (API) More...
 
void EvrRtxKernelResumed (void)
 Event on successful RTOS Kernel scheduler resume (Op) More...
 
void EvrRtxKernelGetTickCount (uint32_t count)
 Event on RTOS kernel tick count retrieve (API) More...
 
void EvrRtxKernelGetTickFreq (uint32_t freq)
 Event on RTOS kernel tick frequency retrieve (API) More...
 
void EvrRtxKernelGetSysTimerCount (uint32_t count)
 Event on RTOS kernel system timer count retrieve (API) More...
 
void EvrRtxKernelGetSysTimerFreq (uint32_t freq)
 Event on RTOS kernel system timer frequency retrieve (API) More...
 
+

Description

+

Function Documentation

+ +
+
+ + + + + + + + +
void EvrRtxKernelError (int32_t status)
+
+
Parameters
+ + +
[in]statusextended execution status.
+
+
+

The event KernelError is generated when Kernel Information and Control routines complete their execution due to an error.

+

The status parameter indicates the execution status and can be one of the osStatus_t codes or one of the extended execution status codes which are summarized in the table below.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Extended Status Code Description
osRtxErrorKernelNotReady Kernel scheduler is not in Ready state.
osRtxErrorKernelNotRunning Kernel scheduler is not executing - there is no running thread.
osRtxErrorInvalidControlBlock Object control block with invalid alignment or size was specified.
osRtxErrorInvalidDataMemory Object data memory with invalid alignment or size was specified.
osRtxErrorInvalidThreadStack Thread stack memory with invalid alignment or size was specified.
osRtxErrorInvalidPriority Invalid thread priority was specified.
osRtxErrorThreadNotJoinable Specified thread is not joinable.
osRtxErrorMutexNotOwned Specified mutex is not owned by the current running thread.
osRtxErrorMutexNotLocked Specified mutex is not locked.
osRtxErrorMutexLockLimit Maximum number of recursive mutex locks reached.
osRtxErrorSemaphoreCountLimit Semaphore count limit reached.
osRtxErrorTZ_InitContext_S Secure context memory system initialization failed.
osRtxErrorTZ_AllocContext_S Secure context memory allocation failed.
osRtxErrorTZ_FreeContext_S Secure context memory deallocation failed.
osRtxErrorTZ_LoadContext_S Secure context load failed.
osRtxErrorTZ_SaveContext_S Secure context save failed.
+

Value in the Event Recorder shows:

+
    +
  • status : execution status code.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelInitialize (void )
+
+

The event KernelInitialize is generated when the function osKernelInitialize is called.

+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelInitialized (void )
+
+

The event KernelInitialized is generated when the function osKernelInitialize successfully initializes the RTOS kernel.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxKernelGetInfo (osVersion_tversion,
char * id_buf,
uint32_t id_size 
)
+
+
Parameters
+ + + + +
[in]versionpointer to buffer for retrieving version information.
[in]id_bufpointer to buffer for retrieving kernel identification string.
[in]id_sizesize of buffer for kernel identification string.
+
+
+

The event KernelGetInfo is generated when the function osKernelGetInfo is called.

+

Value in the Event Recorder shows:

+
    +
  • version : memory address of buffer for retrieving version information.
  • +
  • id_buf : memory address of buffer for retrieving kernel identification string.
  • +
  • id_size : size of id_buf in bytes.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxKernelInfoRetrieved (osVersion_tversion,
char * id_buf 
)
+
+
Parameters
+ + + +
[in]versionpointer to buffer for retrieving version information.
[in]id_bufpointer to buffer for retrieving kernel identification string.
+
+
+

The event KernelInfoRetrieved is generated when the function osKernelGetInfo successfully retrieves kernel information.

+

Value in the Event Recorder shows:

+
    +
  • version : memory address of buffer for retrieving version information.
  • +
  • id_buf : memory address of buffer for retrieving kernel identification string.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelGetState (osKernelState_t state)
+
+
Parameters
+ + +
[in]statecurrent RTOS Kernel state.
+
+
+

The event KernelGetState is generated when the function osKernelGetState is called and its execution result is known.

+

Value in the Event Recorder shows:

+ + +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelStart (void )
+
+

The event KernelStart is generated when the function osKernelStart is called.

+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelStarted (void )
+
+

The event KernelStarted is generated when the function osKernelStart successfully starts the RTOS kernel execution.

+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelLock (void )
+
+

The event KernelLock is generated when the function osKernelLock is called.

+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelLocked (int32_t lock)
+
+
Parameters
+ + +
[in]lockprevious lock state (1 - locked, 0 - not locked).
+
+
+

The event KernelLocked is generated when the functions osKernelLock successfully completes its execution.

+

Value in the Event Recorder shows:

+
    +
  • lock : previous lock state (1 - locked, 0 - not locked).
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelUnlock (void )
+
+

The event KernelUnlock is generated when the function osKernelUnlock is called.

+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelUnlocked (int32_t lock)
+
+
Parameters
+ + +
[in]lockprevious lock state (1 - locked, 0 - not locked).
+
+
+

The event KernelUnlocked is generated when the function osKernelUnlock successfully completes its execution.

+

Value in the Event Recorder shows:

+
    +
  • lock : previous lock state (1 - locked, 0 - not locked).
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelRestoreLock (int32_t lock)
+
+
Parameters
+ + +
[in]locklock state obtained by osKernelLock or osKernelUnlock.
+
+
+

The event KernelRestoreLock is generated when the function osKernelRestoreLock is called.

+

Value in the Event Recorder shows:

+ + +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelLockRestored (int32_t lock)
+
+
Parameters
+ + +
[in]locknew lock state (1 - locked, 0 - not locked).
+
+
+

The event KernelLockRestored is generated when the function osKernelRestoreLock successfully completes its execution.

+

Value in the Event Recorder shows:

+
    +
  • lock : new lock state (1 - locked, 0 - not locked).
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelSuspend (void )
+
+

The event KernelSuspend is generated when the function osKernelSuspend is called.

+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelSuspended (uint32_t sleep_ticks)
+
+
Parameters
+ + +
[in]sleep_tickstime in ticks, for how long the system can sleep or power-down.
+
+
+

The event KernelSuspended is generated when the function osKernelSuspend successfully suspends RTOS kernel execution.

+

Value in the Event Recorder shows:

+
    +
  • sleep_ticks : time in ticks, for how long the system can sleep or power-down.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelResume (uint32_t sleep_ticks)
+
+
Parameters
+ + +
[in]sleep_tickstime in ticks, for how long the system was in sleep or power-down mode.
+
+
+

The event KernelResume is generated when the function osKernelResume is called.

+

Value in the Event Recorder shows:

+
    +
  • sleep_ticks : time in ticks, for how long the system was in sleep or power-down mode.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelResumed (void )
+
+

The event KernelResumed is generated when the function osKernelResume successfully resumes RTOS kernel execution.

+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelGetTickCount (uint32_t count)
+
+
Parameters
+ + +
[in]countRTOS kernel current tick count.
+
+
+

The event KernelGetTickCount is generated when the function osKernelGetTickCount is called.

+

Value in the Event Recorder shows:

+
    +
  • count : retrieved kernel current tick count.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelGetTickFreq (uint32_t freq)
+
+
Parameters
+ + +
[in]freqfrequency of the kernel tick.
+
+
+

The event KernelGetTickFreq is generated when the function osKernelGetTickFreq called.

+

Value in the Event Recorder shows:

+
    +
  • freq : retrieved frequency of the kernel tick in Hz.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelGetSysTimerCount (uint32_t count)
+
+
Parameters
+ + +
[in]countRTOS kernel current system timer count as 32-bit value.
+
+
+

The event KernelGetSysTimerCount is generated when the function osKernelGetSysTimerCount is called.

+

Value in the Event Recorder shows:

+
    +
  • count : retrieved kernel current system timer count as 32-bit value.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxKernelGetSysTimerFreq (uint32_t freq)
+
+
Parameters
+ + +
[in]freqfrequency of the system timer.
+
+
+

The event KernelGetSysTimerFreq is generated when the function osKernelGetSysTimerFreq is called.

+

Value in the Event Recorder shows:

+
    +
  • freq : retrieved frequency of the system timer in Hz.
  • +
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx__evr__kernel.js b/docs/RTOS2/html/group__rtx__evr__kernel.js new file mode 100644 index 0000000..282e306 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__kernel.js @@ -0,0 +1,25 @@ +var group__rtx__evr__kernel = +[ + [ "EvrRtxKernelError", "group__rtx__evr__kernel.html#ga2a38154886e6293e127bafcfb6f7d609", null ], + [ "EvrRtxKernelInitialize", "group__rtx__evr__kernel.html#ga7e84d337b452f647c3a3d6937abd6292", null ], + [ "EvrRtxKernelInitialized", "group__rtx__evr__kernel.html#ga5db8d306617656bfec12638e17584d66", null ], + [ "EvrRtxKernelGetInfo", "group__rtx__evr__kernel.html#ga4c2a175b79d39d70a4a5112e270d03f2", null ], + [ "EvrRtxKernelInfoRetrieved", "group__rtx__evr__kernel.html#gaf09b8cd94ad2384e3ab518f0df94a651", null ], + [ "EvrRtxKernelGetState", "group__rtx__evr__kernel.html#gad6407e9ff0910629b041866bd801075a", null ], + [ "EvrRtxKernelStart", "group__rtx__evr__kernel.html#ga75937a761dd488600d2525a532808d2b", null ], + [ "EvrRtxKernelStarted", "group__rtx__evr__kernel.html#ga28043ffc76fec09e6c8763a9a71b7f2a", null ], + [ "EvrRtxKernelLock", "group__rtx__evr__kernel.html#ga1d0340812c29274c6150fa72288e0612", null ], + [ "EvrRtxKernelLocked", "group__rtx__evr__kernel.html#gac18ea91ffcae01e893304609a3c6cdc3", null ], + [ "EvrRtxKernelUnlock", "group__rtx__evr__kernel.html#gabe14acf14ed2611a3ba1f3b280fbfd8c", null ], + [ "EvrRtxKernelUnlocked", "group__rtx__evr__kernel.html#ga5cc909465e8df09c9231782e0c45e374", null ], + [ "EvrRtxKernelRestoreLock", "group__rtx__evr__kernel.html#ga812fdd14d6c40072cc40aec742d4869e", null ], + [ "EvrRtxKernelLockRestored", "group__rtx__evr__kernel.html#gaf7be1022a33c13fb44f4059f5636b75a", null ], + [ "EvrRtxKernelSuspend", "group__rtx__evr__kernel.html#gac3abd78a9d3f3a6adc698e2929e1c32c", null ], + [ "EvrRtxKernelSuspended", "group__rtx__evr__kernel.html#gabdaa26d7774111af4913b5d6669d0f85", null ], + [ "EvrRtxKernelResume", "group__rtx__evr__kernel.html#ga9a8cac0fed8d3cf06f7301c944ad26d1", null ], + [ "EvrRtxKernelResumed", "group__rtx__evr__kernel.html#ga26e0a22f49576824d853fb434cf6b079", null ], + [ "EvrRtxKernelGetTickCount", "group__rtx__evr__kernel.html#ga64431a63437506a6f7fe22637d4891c5", null ], + [ "EvrRtxKernelGetTickFreq", "group__rtx__evr__kernel.html#ga7404f3a22af84ad4091c24811fc1bf87", null ], + [ "EvrRtxKernelGetSysTimerCount", "group__rtx__evr__kernel.html#gafb6530be8201b119015a3f45d66c2f09", null ], + [ "EvrRtxKernelGetSysTimerFreq", "group__rtx__evr__kernel.html#gaf2bdfcb7b099295c7b0123abe88e10a3", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx__evr__memory.html b/docs/RTOS2/html/group__rtx__evr__memory.html new file mode 100644 index 0000000..d71d791 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__memory.html @@ -0,0 +1,447 @@ + + + + + +Memory Functions +CMSIS-RTOS2: Memory Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Memory Functions
+
+
+ +

Events generated memory functions. +More...

+ + + + + + + + + + + + + + + + + + + + +

+Functions

void EvrRtxMemoryInit (void *mem, uint32_t size, uint32_t result)
 Event on memory initialization (Op) More...
 
void EvrRtxMemoryAlloc (void *mem, uint32_t size, uint32_t type, void *block)
 Event on memory allocate (Op) More...
 
void EvrRtxMemoryFree (void *mem, void *block, uint32_t result)
 Event on memory free (Op) More...
 
void EvrRtxMemoryBlockInit (osRtxMpInfo_t *mp_info, uint32_t block_count, uint32_t block_size, void *block_mem)
 Event on memory block initialization (Op) More...
 
void EvrRtxMemoryBlockAlloc (osRtxMpInfo_t *mp_info, void *block)
 Event on memory block alloc (Op) More...
 
void EvrRtxMemoryBlockFree (osRtxMpInfo_t *mp_info, void *block, int32_t status)
 Event on memory block free (Op) More...
 
+

Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryInit (void * mem,
uint32_t size,
uint32_t result 
)
+
+
Parameters
+ + + + +
[in]mempointer to memory pool.
[in]sizesize of a memory pool in bytes.
[in]resultexecution status: 1 - success, 0 - failure.
+
+
+

The event MemoryInit is generated when initialization of a variable size memory block completes.

+

Value in the Event Recorder shows:

+
    +
  • mem : memory address of memory pool.
  • +
  • size : size of a memory pool in bytes.
  • +
  • result : execution status: 1 - success, 0 - failure.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryAlloc (void * mem,
uint32_t size,
uint32_t type,
void * block 
)
+
+
Parameters
+ + + + + +
[in]mempointer to memory pool.
[in]sizesize of a memory block in bytes.
[in]typememory block type: 0 - generic, 1 - control block.
[in]blockpointer to allocated memory block or NULL in case of no memory is available.
+
+
+

The event MemoryAlloc is generated when allocation of a variable size memory block completes.

+

Value in the Event Recorder shows:

+
    +
  • mem : memory address of memory pool.
  • +
  • size : size of a memory block in bytes.
  • +
  • type : memory block type: 0 - generic, 1 - control block
  • +
  • block : memory address of allocated memory block or 0 in case of no memory is available.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryFree (void * mem,
void * block,
uint32_t result 
)
+
+
Parameters
+ + + + +
[in]mempointer to memory pool.
[in]blockmemory block to be returned to the memory pool.
[in]resultexecution status: 1 - success, 0 - failure.
+
+
+

The event MemoryFree is generated when deallocation of a variable size memory block completes.

+

Value in the Event Recorder shows:

+
    +
  • mem : memory address of memory pool.
  • +
  • block : memory address of block to be returned to the memory pool.
  • +
  • result : execution status: 1 - success, 0 - failure.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryBlockInit (osRtxMpInfo_tmp_info,
uint32_t block_count,
uint32_t block_size,
void * block_mem 
)
+
+
Parameters
+ + + + + +
[in]mp_infomemory pool info.
[in]block_countmaximum number of memory blocks in memory pool.
[in]block_sizesize of a memory block in bytes.
[in]block_mempointer to memory for block storage.
+
+
+

The event MemoryBlockInit is generated when initialization of a fixed size memory block completes.

+

Value in the Event Recorder shows:

+
    +
  • mp_info : memory address of memory pool info.
  • +
  • block_count : maximum number of memory blocks in memory pool.
  • +
  • block_size : size of a memory block in bytes.
  • +
  • block_mem : memory address of memory for block storage.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryBlockAlloc (osRtxMpInfo_tmp_info,
void * block 
)
+
+
Parameters
+ + + +
[in]mp_infomemory pool info.
[in]blockaddress of the allocated memory block or NULL in case of no memory is available.
+
+
+

The event MemoryBlockAlloc is generated when allocation of a fixed size memory block completes.

+

Value in the Event Recorder shows:

+
    +
  • mp_info : memory address of memory pool info.
  • +
  • block : memory address of the allocated memory block or 0 in case of no memory is available.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryBlockFree (osRtxMpInfo_tmp_info,
void * block,
int32_t status 
)
+
+
Parameters
+ + + + +
[in]mp_infomemory pool info.
[in]blockaddress of the allocated memory block to be returned to the memory pool.
[in]statusextended execution status.
+
+
+

The event MemoryBlockFree is generated when deallocation of a fixed size memory block completes.

+

Value in the Event Recorder shows:

+
    +
  • mp_info : memory address of memory pool info.
  • +
  • block : memory address of the allocated memory block to be returned to the memory pool.
  • +
  • status : execution status osStatus_t
  • +
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx__evr__memory.js b/docs/RTOS2/html/group__rtx__evr__memory.js new file mode 100644 index 0000000..c228847 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__memory.js @@ -0,0 +1,9 @@ +var group__rtx__evr__memory = +[ + [ "EvrRtxMemoryInit", "group__rtx__evr__memory.html#ga15078f1251744140d90761e05c0fe1f2", null ], + [ "EvrRtxMemoryAlloc", "group__rtx__evr__memory.html#gae1818917a5e085f92a03039ffaf2bad4", null ], + [ "EvrRtxMemoryFree", "group__rtx__evr__memory.html#ga9227b18f5ea44d7caa8fadd4d539af9c", null ], + [ "EvrRtxMemoryBlockInit", "group__rtx__evr__memory.html#gac71421bbf537f2f8c9255f9f51cf7d54", null ], + [ "EvrRtxMemoryBlockAlloc", "group__rtx__evr__memory.html#ga71c0df6f932436b54d7d641a440586db", null ], + [ "EvrRtxMemoryBlockFree", "group__rtx__evr__memory.html#ga69c2139620def7c5e59f6b1249857949", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx__evr__memory__pool.html b/docs/RTOS2/html/group__rtx__evr__memory__pool.html new file mode 100644 index 0000000..7384060 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__memory__pool.html @@ -0,0 +1,892 @@ + + + + + +Memory Pool Functions +CMSIS-RTOS2: Memory Pool Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Memory Pool Functions
+
+
+ +

Events generated by memory pool functions. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void EvrRtxMemoryPoolError (osMemoryPoolId_t mp_id, int32_t status)
 Event on memory pool error (Error) More...
 
void EvrRtxMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr)
 Event on memory pool create and initialize (API) More...
 
void EvrRtxMemoryPoolCreated (osMemoryPoolId_t mp_id, const char *name)
 Event on successful memory pool create (Op) More...
 
void EvrRtxMemoryPoolGetName (osMemoryPoolId_t mp_id, const char *name)
 Event on memory pool name retrieve (API) More...
 
void EvrRtxMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout)
 Event on memory pool allocation (API) More...
 
void EvrRtxMemoryPoolAllocPending (osMemoryPoolId_t mp_id, uint32_t timeout)
 Event on pending memory pool allocation (Op) More...
 
void EvrRtxMemoryPoolAllocTimeout (osMemoryPoolId_t mp_id)
 Event on memory pool allocation timeout (Op) More...
 
void EvrRtxMemoryPoolAllocated (osMemoryPoolId_t mp_id, void *block)
 Event on successful memory pool allocation (Op) More...
 
void EvrRtxMemoryPoolAllocFailed (osMemoryPoolId_t mp_id)
 Event on unsuccessful memory pool allocation (Op) More...
 
void EvrRtxMemoryPoolFree (osMemoryPoolId_t mp_id, void *block)
 Event on memory pool free (API) More...
 
void EvrRtxMemoryPoolDeallocated (osMemoryPoolId_t mp_id, void *block)
 Event on successful memory pool free (Op) More...
 
void EvrRtxMemoryPoolFreeFailed (osMemoryPoolId_t mp_id, void *block)
 Event on unsuccessful memory pool free (Op) More...
 
void EvrRtxMemoryPoolGetCapacity (osMemoryPoolId_t mp_id, uint32_t capacity)
 Event on memory pool capacity retrieve (API) More...
 
void EvrRtxMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id, uint32_t block_size)
 Event on memory pool block size retrieve (API) More...
 
void EvrRtxMemoryPoolGetCount (osMemoryPoolId_t mp_id, uint32_t count)
 Event on used memory pool blocks retrieve (API) More...
 
void EvrRtxMemoryPoolGetSpace (osMemoryPoolId_t mp_id, uint32_t space)
 Event on available memory pool blocks retrieve (API) More...
 
void EvrRtxMemoryPoolDelete (osMemoryPoolId_t mp_id)
 Event on memory pool delete (API) More...
 
void EvrRtxMemoryPoolDestroyed (osMemoryPoolId_t mp_id)
 Event on successful memory pool delete (Op) More...
 
+

Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolError (osMemoryPoolId_t mp_id,
int32_t status 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew or NULL when ID is unknown.
[in]statusextended execution status.
+
+
+

The event MemoryPoolError is generated when Memory Pool routines complete their execution due to an error.

+

The status parameter indicates the execution status and can be one of the osStatus_t codes or one of the extended execution status codes which are summarized in the table below.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Extended Status Code Description
osRtxErrorKernelNotReady Kernel scheduler is not in Ready state.
osRtxErrorKernelNotRunning Kernel scheduler is not executing - there is no running thread.
osRtxErrorInvalidControlBlock Object control block with invalid alignment or size was specified.
osRtxErrorInvalidDataMemory Object data memory with invalid alignment or size was specified.
osRtxErrorInvalidThreadStack Thread stack memory with invalid alignment or size was specified.
osRtxErrorInvalidPriority Invalid thread priority was specified.
osRtxErrorThreadNotJoinable Specified thread is not joinable.
osRtxErrorMutexNotOwned Specified mutex is not owned by the current running thread.
osRtxErrorMutexNotLocked Specified mutex is not locked.
osRtxErrorMutexLockLimit Maximum number of recursive mutex locks reached.
osRtxErrorSemaphoreCountLimit Semaphore count limit reached.
osRtxErrorTZ_InitContext_S Secure context memory system initialization failed.
osRtxErrorTZ_AllocContext_S Secure context memory allocation failed.
osRtxErrorTZ_FreeContext_S Secure context memory deallocation failed.
osRtxErrorTZ_LoadContext_S Secure context load failed.
osRtxErrorTZ_SaveContext_S Secure context save failed.
+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
  • status : execution status code.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolNew (uint32_t block_count,
uint32_t block_size,
const osMemoryPoolAttr_tattr 
)
+
+
Parameters
+ + + + +
[in]block_countmaximum number of memory blocks in memory pool.
[in]block_sizememory block size in bytes.
[in]attrmemory pool attributes; NULL: default values.
+
+
+

The event MemoryPoolNew is generated when the function osMemoryPoolNew is called.

+

Value in the Event Recorder shows:

+
    +
  • block_count : maximum number of memory blocks in memory pool.
  • +
  • block_size : memory block size in bytes.
  • +
  • attr : memory address of Memory Pool attributes or 0 when they are not specified.
  • +
+

In case when memory pool attributes are provided in the API call they are also detailed in the Event Recorder.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolCreated (osMemoryPoolId_t mp_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]namepointer to memory pool object name.
+
+
+

The event MemoryPoolCreated is generated when the function osMemoryPoolNew successfully creates a memory pool object.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolGetName (osMemoryPoolId_t mp_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]namepointer to memory pool object name.
+
+
+

The event MemoryPoolGetName is generated when the function osMemoryPoolGetName is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
  • name : retrieved memory address of name string (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolAlloc (osMemoryPoolId_t mp_id,
uint32_t timeout 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+

The event MemoryPoolAlloc is generated when the function osMemoryPoolAlloc is called.

+

Value in the Event Recorder shows:

+ + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolAllocPending (osMemoryPoolId_t mp_id,
uint32_t timeout 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+

The event MemoryPoolAllocPending is generated when the function osMemoryPoolAlloc blocks current running thread and waits for memory block to become available.

+

Value in the Event Recorder shows:

+ + +
+
+ +
+
+ + + + + + + + +
void EvrRtxMemoryPoolAllocTimeout (osMemoryPoolId_t mp_id)
+
+
Parameters
+ + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
+
+
+

The event MemoryPoolAllocTimeout is generated when wait for memory pool to become available is aborted due to expired wait timeout.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolAllocated (osMemoryPoolId_t mp_id,
void * block 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]blockaddress of the allocated memory block.
+
+
+

The event MemoryPoolAllocated is generated when the function osMemoryPoolAlloc successfully allocates the memory block.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
  • block : memory address of the allocated memory block.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMemoryPoolAllocFailed (osMemoryPoolId_t mp_id)
+
+
Parameters
+ + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
+
+
+

The event MemoryPoolAllocFailed is generated when the function osMemoryPoolAlloc fails to allocate the memory block due to out of available memory.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolFree (osMemoryPoolId_t mp_id,
void * block 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]blockaddress of the allocated memory block to be returned to the memory pool.
+
+
+

The event MemoryPoolFree is generated when the function osMemoryPoolFree is called.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
  • block : memory address of the memory block to be returned to the memory pool.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolDeallocated (osMemoryPoolId_t mp_id,
void * block 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]blockaddress of the allocated memory block to be returned to the memory pool.
+
+
+

The event MemoryPoolDeallocated is generated when the function osMemoryPoolFree successfully deallocates the memory block.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
  • block : memory address of the memory block returned to the memory pool.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolFreeFailed (osMemoryPoolId_t mp_id,
void * block 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]blockaddress of the allocated memory block to be returned to the memory pool.
+
+
+

The event MemoryPoolFreeFailed is generated when the function osMemoryPoolFree fails to deallocate the memory block.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
  • block : memory address of the memory block to be returned to the memory pool.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolGetCapacity (osMemoryPoolId_t mp_id,
uint32_t capacity 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]capacitymaximum number of memory blocks.
+
+
+

The event MemoryPoolGetCapacity is generated when the function osMemoryPoolGetCapacity is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
  • capacity : retrieved maximum number of memory blocks (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id,
uint32_t block_size 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]block_sizememory block size in bytes.
+
+
+

The event MemoryPoolGetBlockSize is generated when the function osMemoryPoolGetBlockSize is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
  • block_size : retrieved memory block size in bytes (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolGetCount (osMemoryPoolId_t mp_id,
uint32_t count 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]countnumber of memory blocks used.
+
+
+

The event MemoryPoolGetCount is generated when the function osMemoryPoolGetCount is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
  • count : retrieved number of memory block used (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMemoryPoolGetSpace (osMemoryPoolId_t mp_id,
uint32_t space 
)
+
+
Parameters
+ + + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
[in]spacenumber of memory blocks available.
+
+
+

The event MemoryPoolGetSpace is generated when the function osMemoryPoolGetSpace is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
  • space : retrieved number of memory blocks available (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMemoryPoolDelete (osMemoryPoolId_t mp_id)
+
+
Parameters
+ + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
+
+
+

The event MemoryPoolDelete is generated when the function osMemoryPoolDelete is called.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMemoryPoolDestroyed (osMemoryPoolId_t mp_id)
+
+
Parameters
+ + +
[in]mp_idmemory pool ID obtained by osMemoryPoolNew.
+
+
+

The event MemoryPoolDestroyed is generated when the function osMemoryPoolDelete successfully deletes the memory pool object.

+

Value in the Event Recorder shows:

+
    +
  • mp_id : memory pool ID.
  • +
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx__evr__memory__pool.js b/docs/RTOS2/html/group__rtx__evr__memory__pool.js new file mode 100644 index 0000000..057a678 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__memory__pool.js @@ -0,0 +1,21 @@ +var group__rtx__evr__memory__pool = +[ + [ "EvrRtxMemoryPoolError", "group__rtx__evr__memory__pool.html#ga7e1a37b0c5dd0a97507c025ab1a62ec8", null ], + [ "EvrRtxMemoryPoolNew", "group__rtx__evr__memory__pool.html#gaf2fd4c91acf1379e93cd9886c515b9c5", null ], + [ "EvrRtxMemoryPoolCreated", "group__rtx__evr__memory__pool.html#gadad71c7b04493c03647ca0929ea087b1", null ], + [ "EvrRtxMemoryPoolGetName", "group__rtx__evr__memory__pool.html#gaeface1ee4957cdb59292e13c38a672d7", null ], + [ "EvrRtxMemoryPoolAlloc", "group__rtx__evr__memory__pool.html#ga425c8a0e13c6fb13262d99a4dcabd507", null ], + [ "EvrRtxMemoryPoolAllocPending", "group__rtx__evr__memory__pool.html#ga2fbd33e3d84b4f37e9f9b80576b26907", null ], + [ "EvrRtxMemoryPoolAllocTimeout", "group__rtx__evr__memory__pool.html#ga0e144530d45959126018ad74bae7a6ed", null ], + [ "EvrRtxMemoryPoolAllocated", "group__rtx__evr__memory__pool.html#gad05246ee7e1f95e7f9496716515daeed", null ], + [ "EvrRtxMemoryPoolAllocFailed", "group__rtx__evr__memory__pool.html#gaf511fce5389dde6fd3277e3469c72fd9", null ], + [ "EvrRtxMemoryPoolFree", "group__rtx__evr__memory__pool.html#ga46bc3ef3b1ca2e4cfb914f58d0efe92e", null ], + [ "EvrRtxMemoryPoolDeallocated", "group__rtx__evr__memory__pool.html#ga3e8e700baea20b88c3d13678fe7a7fb4", null ], + [ "EvrRtxMemoryPoolFreeFailed", "group__rtx__evr__memory__pool.html#gad75c377c00ae23caf7b4c3b77a0b46d1", null ], + [ "EvrRtxMemoryPoolGetCapacity", "group__rtx__evr__memory__pool.html#gaed36f26a548d40e2a3d5b81c8695f287", null ], + [ "EvrRtxMemoryPoolGetBlockSize", "group__rtx__evr__memory__pool.html#gaf79f0e1eb41d42566ba9023be7e442c5", null ], + [ "EvrRtxMemoryPoolGetCount", "group__rtx__evr__memory__pool.html#ga668bc3e627d9b74b6e8259a667e05846", null ], + [ "EvrRtxMemoryPoolGetSpace", "group__rtx__evr__memory__pool.html#ga4bee4e3e41bdef94046dc059f16ca7ce", null ], + [ "EvrRtxMemoryPoolDelete", "group__rtx__evr__memory__pool.html#ga64ae703ad556f25b105e3eae85b582b8", null ], + [ "EvrRtxMemoryPoolDestroyed", "group__rtx__evr__memory__pool.html#ga853e1867a4b65aff3f12f7be1aee5ce4", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx__evr__message__queue.html b/docs/RTOS2/html/group__rtx__evr__message__queue.html new file mode 100644 index 0000000..e3edde3 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__message__queue.html @@ -0,0 +1,1126 @@ + + + + + +Message Queue Functions +CMSIS-RTOS2: Message Queue Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Message Queue Functions
+
+
+ +

Events generated by message queue functions. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void EvrRtxMessageQueueError (osMessageQueueId_t mq_id, int32_t status)
 Event on message queue error (Error) More...
 
void EvrRtxMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr)
 Event on message queue create and initialization (API) More...
 
void EvrRtxMessageQueueCreated (osMessageQueueId_t mq_id, const char *name)
 Event on successful message queue create (Op) More...
 
void EvrRtxMessageQueueGetName (osMessageQueueId_t mq_id, const char *name)
 Event on message queue name retrieve(API) More...
 
void EvrRtxMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout)
 Event on message put (API) More...
 
void EvrRtxMessageQueuePutPending (osMessageQueueId_t mq_id, const void *msg_ptr, uint32_t timeout)
 Event on pending message put (Op) More...
 
void EvrRtxMessageQueuePutTimeout (osMessageQueueId_t mq_id)
 Event on message put timeout (Op) More...
 
void EvrRtxMessageQueueInsertPending (osMessageQueueId_t mq_id, const void *msg_ptr)
 Event on pending message insert (Op) More...
 
void EvrRtxMessageQueueInserted (osMessageQueueId_t mq_id, const void *msg_ptr)
 Event on successful message insert (Op) More...
 
void EvrRtxMessageQueueNotInserted (osMessageQueueId_t mq_id, const void *msg_ptr)
 Event on unsuccessful message insert (Op) More...
 
void EvrRtxMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout)
 Event on message get (API) More...
 
void EvrRtxMessageQueueGetPending (osMessageQueueId_t mq_id, void *msg_ptr, uint32_t timeout)
 Event on pending message get (Op) More...
 
void EvrRtxMessageQueueGetTimeout (osMessageQueueId_t mq_id)
 Event on message get timeout (Op) More...
 
void EvrRtxMessageQueueRetrieved (osMessageQueueId_t mq_id, void *msg_ptr)
 Event on successful message get (Op) More...
 
void EvrRtxMessageQueueNotRetrieved (osMessageQueueId_t mq_id, void *msg_ptr)
 Event on unsuccessful message get (Op) More...
 
void EvrRtxMessageQueueGetCapacity (osMessageQueueId_t mq_id, uint32_t capacity)
 Event on message queue capacity retrieve (API) More...
 
void EvrRtxMessageQueueGetMsgSize (osMessageQueueId_t mq_id, uint32_t msg_size)
 Event on message queue message size retrieve (API) More...
 
void EvrRtxMessageQueueGetCount (osMessageQueueId_t mq_id, uint32_t count)
 Event on message queue message count retrieve (API) More...
 
void EvrRtxMessageQueueGetSpace (osMessageQueueId_t mq_id, uint32_t space)
 Event on message queue message slots retrieve (API) More...
 
void EvrRtxMessageQueueReset (osMessageQueueId_t mq_id)
 Event on message queue reset (API) More...
 
void EvrRtxMessageQueueResetDone (osMessageQueueId_t mq_id)
 Event on successful message queue reset (Op) More...
 
void EvrRtxMessageQueueDelete (osMessageQueueId_t mq_id)
 Event on message queue delete (API) More...
 
void EvrRtxMessageQueueDestroyed (osMessageQueueId_t mq_id)
 Event on successful message queue delete (Op) More...
 
+

Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueError (osMessageQueueId_t mq_id,
int32_t status 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew or NULL when ID is unknown.
[in]statusextended execution status.
+
+
+

The event MessageQueueError is generated when Message Queue routines complete their execution due to an error.

+

The status parameter indicates the execution status and can be one of the osStatus_t codes or one of the extended execution status codes which are summarized in the table below.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Extended Status Code Description
osRtxErrorKernelNotReady Kernel scheduler is not in Ready state.
osRtxErrorKernelNotRunning Kernel scheduler is not executing - there is no running thread.
osRtxErrorInvalidControlBlock Object control block with invalid alignment or size was specified.
osRtxErrorInvalidDataMemory Object data memory with invalid alignment or size was specified.
osRtxErrorInvalidThreadStack Thread stack memory with invalid alignment or size was specified.
osRtxErrorInvalidPriority Invalid thread priority was specified.
osRtxErrorThreadNotJoinable Specified thread is not joinable.
osRtxErrorMutexNotOwned Specified mutex is not owned by the current running thread.
osRtxErrorMutexNotLocked Specified mutex is not locked.
osRtxErrorMutexLockLimit Maximum number of recursive mutex locks reached.
osRtxErrorSemaphoreCountLimit Semaphore count limit reached.
osRtxErrorTZ_InitContext_S Secure context memory system initialization failed.
osRtxErrorTZ_AllocContext_S Secure context memory allocation failed.
osRtxErrorTZ_FreeContext_S Secure context memory deallocation failed.
osRtxErrorTZ_LoadContext_S Secure context load failed.
osRtxErrorTZ_SaveContext_S Secure context save failed.
+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • status : execution status code.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueNew (uint32_t msg_count,
uint32_t msg_size,
const osMessageQueueAttr_tattr 
)
+
+
Parameters
+ + + + +
[in]msg_countmaximum number of messages in queue.
[in]msg_sizemaximum message size in bytes.
[in]attrmessage queue attributes; NULL: default values.
+
+
+

The event MessageQueueNew is generated when the function osMessageQueueNew is called.

+

Value in the Event Recorder shows:

+
    +
  • msg_count : maximum number of messages in queue.
  • +
  • msg_size : maximum message size in bytes.
  • +
  • attr : memory address of Message Queue attributes or 0 when they are not specified.
  • +
+

In case when message queue attributes are provided in the API call they are also detailed in the Event Recorder.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueCreated (osMessageQueueId_t mq_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]namepointer to message queue object name.
+
+
+

The event MessageQueueCreated is generated when the function osMessageQueueNew successfully creates a message queue object.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueGetName (osMessageQueueId_t mq_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]namepointer to message queue object name.
+
+
+

The event MessageQueueGetName is generated when the function osMessageQueueGetName is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • name : retrieved memory address of name string (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueuePut (osMessageQueueId_t mq_id,
const void * msg_ptr,
uint8_t msg_prio,
uint32_t timeout 
)
+
+
Parameters
+ + + + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]msg_ptrpointer to buffer with message to put into a queue.
[in]msg_priomessage priority.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+

The event MessageQueuePut is generated when the function osMessageQueuePut is called.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • msg_ptr : memory address of message buffer.
  • +
  • msg_prio : message priority.
  • +
  • timeout : Timeout Value.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueuePutPending (osMessageQueueId_t mq_id,
const void * msg_ptr,
uint32_t timeout 
)
+
+
Parameters
+ + + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]msg_ptrpointer to buffer with message to put into a queue.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+

The event MessageQueuePutPending is generated when the function osMessageQueuePut starts waiting to put message into the queue.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • msg_ptr : memory address of message buffer.
  • +
  • timeout : Timeout Value.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMessageQueuePutTimeout (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+

The event MessageQueuePutTimeout is generated when the function osMessageQueuePut fails to insert a message into the queue until timeout expires.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueInsertPending (osMessageQueueId_t mq_id,
const void * msg_ptr 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]msg_ptrpointer to buffer with message to put into a queue.
+
+
+

The event MessageQueueInsertPending is generated when the function osMessageQueuePut is called from ISR and message is registered to be put into the queue.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • msg_ptr : memory address of message buffer.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueInserted (osMessageQueueId_t mq_id,
const void * msg_ptr 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]msg_ptrpointer to buffer with message to put into a queue.
+
+
+

The event MessageQueueInserted is generated when a message is successfully inserted into the queue.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • msg_ptr : memory address of message buffer.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueNotInserted (osMessageQueueId_t mq_id,
const void * msg_ptr 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]msg_ptrpointer to buffer with message to put into a queue.
+
+
+

The event MessageQueueNotInserted is generated when the function osMessageQueuePut fails to insert a message into the queue. Usually this happens when queue is out of memory.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • msg_ptr : memory address of message buffer.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueGet (osMessageQueueId_t mq_id,
void * msg_ptr,
uint8_t * msg_prio,
uint32_t timeout 
)
+
+
Parameters
+ + + + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]msg_ptrpointer to buffer for message to get from a queue.
[in]msg_priomessage priority.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+

The event MessageQueueGet is generated when the function osMessageQueueGet is called.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • msg_ptr : memory address of buffer for message.
  • +
  • msg_prio : memory address of buffer for message priority.
  • +
  • timeout : Timeout Value.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueGetPending (osMessageQueueId_t mq_id,
void * msg_ptr,
uint32_t timeout 
)
+
+
Parameters
+ + + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]msg_ptrpointer to buffer for message to get from a queue.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+

The event MessageQueueGetPending is generated when the function osMessageQueueGet starts waiting for message to be retrieved from the queue.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • msg_ptr : memory address of buffer for message.
  • +
  • timeout : Timeout Value.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMessageQueueGetTimeout (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+

The event MessageQueueGetTimeout is generated when the function osMessageQueueGet is called and there is no message available in queue until timeout expires.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueRetrieved (osMessageQueueId_t mq_id,
void * msg_ptr 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]msg_ptrpointer to buffer for message to get from a queue.
+
+
+

The event MessageQueueRetrieved is generated when message is retrieved from the message queue.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • msg_ptr : memory address of buffer for message.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueNotRetrieved (osMessageQueueId_t mq_id,
void * msg_ptr 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]msg_ptrpointer to buffer for message to get from a queue.
+
+
+

The event MessageQueueNotRetrieved is generated when the function osMessageQueueGet is called without the wait timeout and there is no message available in queue.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • msg_ptr : memory address of buffer for message.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueGetCapacity (osMessageQueueId_t mq_id,
uint32_t capacity 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]capacitymaximum number of messages.
+
+
+

The event MessageQueueGetCapacity is generated when the function osMessageQueueGetCapacity is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • capacity : retrieved maximum number of messages (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueGetMsgSize (osMessageQueueId_t mq_id,
uint32_t msg_size 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]msg_sizemaximum message size in bytes.
+
+
+

The event MessageQueueGetMsgSize is generated when the function osMessageQueueGetMsgSize is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • msg_size : retrieved maximum message size in bytes (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueGetCount (osMessageQueueId_t mq_id,
uint32_t count 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]countnumber of queued messages.
+
+
+

The event MessageQueueGetCount is generated when the function osMessageQueueGetCount is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • count : retrieved number of queued messages (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMessageQueueGetSpace (osMessageQueueId_t mq_id,
uint32_t space 
)
+
+
Parameters
+ + + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
[in]spacenumber of available slots for messages.
+
+
+

The event MessageQueueGetSpace is generated when the function osMessageQueueGetSpace is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
  • space : retrieved number of available slots for messages (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMessageQueueReset (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+

The event MessageQueueReset is generated when the function osMessageQueueReset is called.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMessageQueueResetDone (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+

The event MessageQueueResetDone is generated when the function osMessageQueueReset successfully completes message queue reset.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMessageQueueDelete (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+

The event MessageQueueDelete is generated when the function osMessageQueueDelete is called.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMessageQueueDestroyed (osMessageQueueId_t mq_id)
+
+
Parameters
+ + +
[in]mq_idmessage queue ID obtained by osMessageQueueNew.
+
+
+

The event MessageQueueDestroyed is generated when the function osMessageQueueDelete successfully deletes the message queue object.

+

Value in the Event Recorder shows:

+
    +
  • mq_id : message queue ID.
  • +
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx__evr__message__queue.js b/docs/RTOS2/html/group__rtx__evr__message__queue.js new file mode 100644 index 0000000..40cd138 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__message__queue.js @@ -0,0 +1,26 @@ +var group__rtx__evr__message__queue = +[ + [ "EvrRtxMessageQueueError", "group__rtx__evr__message__queue.html#ga8ded1d43703e0885a81e65251c6df405", null ], + [ "EvrRtxMessageQueueNew", "group__rtx__evr__message__queue.html#gaa7b18f18f3f53d6afb39ac1abe257000", null ], + [ "EvrRtxMessageQueueCreated", "group__rtx__evr__message__queue.html#ga36d6982377c1f54a227ba6fbb9458b79", null ], + [ "EvrRtxMessageQueueGetName", "group__rtx__evr__message__queue.html#gad0ef8ee59d2ec189351c5884f5f8e945", null ], + [ "EvrRtxMessageQueuePut", "group__rtx__evr__message__queue.html#ga401536a603e5a805cc6089b4de11d3d3", null ], + [ "EvrRtxMessageQueuePutPending", "group__rtx__evr__message__queue.html#ga4b1b6191c6ca87dff4714e25b5845828", null ], + [ "EvrRtxMessageQueuePutTimeout", "group__rtx__evr__message__queue.html#ga7394ca2d88255470f7ba0bb2bff12e99", null ], + [ "EvrRtxMessageQueueInsertPending", "group__rtx__evr__message__queue.html#ga8440223b9d48145df5505489e7c6f7d9", null ], + [ "EvrRtxMessageQueueInserted", "group__rtx__evr__message__queue.html#gaa30c5b375d4050ad7d99ba094821bf52", null ], + [ "EvrRtxMessageQueueNotInserted", "group__rtx__evr__message__queue.html#ga2922125d8ac63fd800dc3b7888fd3f3c", null ], + [ "EvrRtxMessageQueueGet", "group__rtx__evr__message__queue.html#ga0826c1d05d3a99afb8682f0ca3f7fd62", null ], + [ "EvrRtxMessageQueueGetPending", "group__rtx__evr__message__queue.html#ga11e3df32a66d5240b277375cbb5d3c83", null ], + [ "EvrRtxMessageQueueGetTimeout", "group__rtx__evr__message__queue.html#ga5e699de7401c46fd0e8bc19e398dc5a8", null ], + [ "EvrRtxMessageQueueRetrieved", "group__rtx__evr__message__queue.html#gab340b38df5d8bf2a1182fd18f2d3a6c4", null ], + [ "EvrRtxMessageQueueNotRetrieved", "group__rtx__evr__message__queue.html#ga22bfb7d1c2f6e3e9fea9d3267b2d6988", null ], + [ "EvrRtxMessageQueueGetCapacity", "group__rtx__evr__message__queue.html#gad423a0be13d65e98d9ae08de9c399615", null ], + [ "EvrRtxMessageQueueGetMsgSize", "group__rtx__evr__message__queue.html#ga3d6348bed3937de29765ed4d7d07fac8", null ], + [ "EvrRtxMessageQueueGetCount", "group__rtx__evr__message__queue.html#ga145f0c464382dc71ff3b1c624b8bd570", null ], + [ "EvrRtxMessageQueueGetSpace", "group__rtx__evr__message__queue.html#ga6cfce7336f58505a2379a8a71f477d2f", null ], + [ "EvrRtxMessageQueueReset", "group__rtx__evr__message__queue.html#ga91b8c8630c7d89b6b6dbb74d4fc81ba4", null ], + [ "EvrRtxMessageQueueResetDone", "group__rtx__evr__message__queue.html#ga3947d4a7ac86ee7a50052c9eb4cd5432", null ], + [ "EvrRtxMessageQueueDelete", "group__rtx__evr__message__queue.html#gad11606ef82f5b82f291bf64adfc805e4", null ], + [ "EvrRtxMessageQueueDestroyed", "group__rtx__evr__message__queue.html#ga3bbf02128c31e5cc7ef4c78cdbec508c", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx__evr__mutex.html b/docs/RTOS2/html/group__rtx__evr__mutex.html new file mode 100644 index 0000000..324ba98 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__mutex.html @@ -0,0 +1,692 @@ + + + + + +Mutex Functions +CMSIS-RTOS2: Mutex Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Mutex Functions
+
+
+ +

Events generated by mutex functions. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void EvrRtxMutexError (osMutexId_t mutex_id, int32_t status)
 Event on mutex error (Error) More...
 
void EvrRtxMutexNew (const osMutexAttr_t *attr)
 Event on mutex create and initialize (API) More...
 
void EvrRtxMutexCreated (osMutexId_t mutex_id, const char *name)
 Event on successful mutex create (Op) More...
 
void EvrRtxMutexGetName (osMutexId_t mutex_id, const char *name)
 Event on mutex name retrieve (API) More...
 
void EvrRtxMutexAcquire (osMutexId_t mutex_id, uint32_t timeout)
 Event on mutex acquire (API) More...
 
void EvrRtxMutexAcquirePending (osMutexId_t mutex_id, uint32_t timeout)
 Event on pending mutex acquire (Op) More...
 
void EvrRtxMutexAcquireTimeout (osMutexId_t mutex_id)
 Event on mutex acquire timeout (Op) More...
 
void EvrRtxMutexAcquired (osMutexId_t mutex_id, uint32_t lock)
 Event on successful mutex acquire (Op) More...
 
void EvrRtxMutexNotAcquired (osMutexId_t mutex_id)
 Event on unsuccessful mutex acquire (Op) More...
 
void EvrRtxMutexRelease (osMutexId_t mutex_id)
 Event on mutex release (API) More...
 
void EvrRtxMutexReleased (osMutexId_t mutex_id, uint32_t lock)
 Event on successful mutex release (Op) More...
 
void EvrRtxMutexGetOwner (osMutexId_t mutex_id, osThreadId_t thread_id)
 Event on mutex owner retrieve (API) More...
 
void EvrRtxMutexDelete (osMutexId_t mutex_id)
 Event on mutex delete (API) More...
 
void EvrRtxMutexDestroyed (osMutexId_t mutex_id)
 Event on successful mutex delete (Op) More...
 
+

Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMutexError (osMutexId_t mutex_id,
int32_t status 
)
+
+
Parameters
+ + + +
[in]mutex_idmutex ID obtained by osMutexNew or NULL when ID is unknown.
[in]statusextended execution status.
+
+
+

The event MutexError is generated when Mutex Management routines complete their execution due to an error.

+

The status parameter indicates the execution status and can be one of the osStatus_t codes or one of the extended execution status codes which are summarized in the table below.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Extended Status Code Description
osRtxErrorKernelNotReady Kernel scheduler is not in Ready state.
osRtxErrorKernelNotRunning Kernel scheduler is not executing - there is no running thread.
osRtxErrorInvalidControlBlock Object control block with invalid alignment or size was specified.
osRtxErrorInvalidDataMemory Object data memory with invalid alignment or size was specified.
osRtxErrorInvalidThreadStack Thread stack memory with invalid alignment or size was specified.
osRtxErrorInvalidPriority Invalid thread priority was specified.
osRtxErrorThreadNotJoinable Specified thread is not joinable.
osRtxErrorMutexNotOwned Specified mutex is not owned by the current running thread.
osRtxErrorMutexNotLocked Specified mutex is not locked.
osRtxErrorMutexLockLimit Maximum number of recursive mutex locks reached.
osRtxErrorSemaphoreCountLimit Semaphore count limit reached.
osRtxErrorTZ_InitContext_S Secure context memory system initialization failed.
osRtxErrorTZ_AllocContext_S Secure context memory allocation failed.
osRtxErrorTZ_FreeContext_S Secure context memory deallocation failed.
osRtxErrorTZ_LoadContext_S Secure context load failed.
osRtxErrorTZ_SaveContext_S Secure context save failed.
+

Value in the Event Recorder shows:

+
    +
  • mutex_id : mutex ID.
  • +
  • status : execution status code.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMutexNew (const osMutexAttr_tattr)
+
+
Parameters
+ + +
[in]attrmutex attributes.
+
+
+

The event MutexNew is generated when the function osMutexNew is called.

+

Value in the Event Recorder shows:

+
    +
  • attr : memory address of Mutex attributes or 0 when they are not specified.
  • +
+

In case when mutex attributes are provided in the API call they are also detailed in the Event Recorder.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMutexCreated (osMutexId_t mutex_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]mutex_idmutex ID obtained by osMutexNew.
[in]namepointer to mutex object name.
+
+
+

The event MutexCreated is generated when the function osMutexNew successfully creates a mutex object.

+

Value in the Event Recorder shows:

+
    +
  • mutex_id : mutex ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMutexGetName (osMutexId_t mutex_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]mutex_idmutex ID obtained by osMutexNew.
[in]namepointer to mutex object name.
+
+
+

The event MutexGetName is generated when the function osMutexGetName is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mutex_id : mutex ID.
  • +
  • name : retrieved memory address of name string (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMutexAcquire (osMutexId_t mutex_id,
uint32_t timeout 
)
+
+
Parameters
+ + + +
[in]mutex_idmutex ID obtained by osMutexNew.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+

The event MutexAcquire is generated when the function osMutexAcquire is called.

+

Value in the Event Recorder shows:

+ + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMutexAcquirePending (osMutexId_t mutex_id,
uint32_t timeout 
)
+
+
Parameters
+ + + +
[in]mutex_idmutex ID obtained by osMutexNew.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+

The event MutexAcquirePending is generated when the function osMutexAcquire blocks current running thread and waits for mutex to become available.

+

Value in the Event Recorder shows:

+ + +
+
+ +
+
+ + + + + + + + +
void EvrRtxMutexAcquireTimeout (osMutexId_t mutex_id)
+
+
Parameters
+ + +
[in]mutex_idmutex ID obtained by osMutexNew.
+
+
+

The event MutexAcquireTimeout is generated when wait for mutex to become available is aborted due to expired wait timeout.

+

Value in the Event Recorder shows:

+
    +
  • mutex_id : mutex ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMutexAcquired (osMutexId_t mutex_id,
uint32_t lock 
)
+
+
Parameters
+ + + +
[in]mutex_idmutex ID obtained by osMutexNew.
[in]lockcurrent number of times mutex object is locked.
+
+
+

The event MutexAcquired is generated when the function osMutexAcquire successfully acquires a mutex.

+

Value in the Event Recorder shows:

+
    +
  • mutex_id : mutex ID.
  • +
  • lock : current lock counter state.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMutexNotAcquired (osMutexId_t mutex_id)
+
+
Parameters
+ + +
[in]mutex_idmutex ID obtained by osMutexNew.
+
+
+

The event MutexNotAcquired is generated when the function osMutexAcquire returns without timeout and mutex was not acquired.

+

Value in the Event Recorder shows:

+
    +
  • mutex_id : mutex ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMutexRelease (osMutexId_t mutex_id)
+
+
Parameters
+ + +
[in]mutex_idmutex ID obtained by osMutexNew.
+
+
+

The event MutexRelease is generated when the function osMutexRelease is called.

+

Value in the Event Recorder shows:

+
    +
  • mutex_id : mutex ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMutexReleased (osMutexId_t mutex_id,
uint32_t lock 
)
+
+
Parameters
+ + + +
[in]mutex_idmutex ID obtained by osMutexNew.
[in]lockcurrent number of times mutex object is locked.
+
+
+

The event MutexReleased is generated when the function osMutexRelease successfully releases a mutex.

+

Value in the Event Recorder shows:

+
    +
  • mutex_id : mutex ID.
  • +
  • lock : current lock counter state.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxMutexGetOwner (osMutexId_t mutex_id,
osThreadId_t thread_id 
)
+
+
Parameters
+ + + +
[in]mutex_idmutex ID obtained by osMutexNew.
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event MutexGetOwner is generated when the function osMutexGetOwner is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • mutex_id : mutex ID.
  • +
  • thread_id : retrieved owner thread ID (0 in case of a failure or when mutex is not locked)
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMutexDelete (osMutexId_t mutex_id)
+
+
Parameters
+ + +
[in]mutex_idmutex ID obtained by osMutexNew.
+
+
+

The event MutexDelete is generated when the function osMutexDelete is called.

+

Value in the Event Recorder shows:

+
    +
  • mutex_id : mutex ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxMutexDestroyed (osMutexId_t mutex_id)
+
+
Parameters
+ + +
[in]mutex_idmutex ID obtained by osMutexNew.
+
+
+

The event MutexDestroyed is generated when the function osMutexDelete successfully deletes the mutex object.

+

Value in the Event Recorder shows:

+
    +
  • mutex_id : mutex ID.
  • +
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx__evr__mutex.js b/docs/RTOS2/html/group__rtx__evr__mutex.js new file mode 100644 index 0000000..42c5c4b --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__mutex.js @@ -0,0 +1,17 @@ +var group__rtx__evr__mutex = +[ + [ "EvrRtxMutexError", "group__rtx__evr__mutex.html#ga47388f06c025938facfddd95851d666f", null ], + [ "EvrRtxMutexNew", "group__rtx__evr__mutex.html#ga51f59bf99b315f016ca752eddd1911d5", null ], + [ "EvrRtxMutexCreated", "group__rtx__evr__mutex.html#ga712b32609cfb3ceded746ee6a86d2442", null ], + [ "EvrRtxMutexGetName", "group__rtx__evr__mutex.html#ga457302507cedf0ea969cbb110af606b8", null ], + [ "EvrRtxMutexAcquire", "group__rtx__evr__mutex.html#ga913c46223d91000fedab624d0f4e53f8", null ], + [ "EvrRtxMutexAcquirePending", "group__rtx__evr__mutex.html#gaddc9bb3c619b92a786ee5255ec65eaca", null ], + [ "EvrRtxMutexAcquireTimeout", "group__rtx__evr__mutex.html#ga4c4780cf766e9d2c6e8c26f206fba607", null ], + [ "EvrRtxMutexAcquired", "group__rtx__evr__mutex.html#ga697ec95e014a30a3676690a8d217f546", null ], + [ "EvrRtxMutexNotAcquired", "group__rtx__evr__mutex.html#ga5d2b957c02fcdcc0617479b93a56f6af", null ], + [ "EvrRtxMutexRelease", "group__rtx__evr__mutex.html#ga3fe98bfc9cbea52f578aa5a202305442", null ], + [ "EvrRtxMutexReleased", "group__rtx__evr__mutex.html#ga561c8898b912ea8eace4e6ba606210e5", null ], + [ "EvrRtxMutexGetOwner", "group__rtx__evr__mutex.html#ga89284c1927aa646535ff804f1aeda720", null ], + [ "EvrRtxMutexDelete", "group__rtx__evr__mutex.html#gaaadf1b9cf9a62f4e61742069b95daf68", null ], + [ "EvrRtxMutexDestroyed", "group__rtx__evr__mutex.html#gaa3feba455090d50295cbf4b1447f3f87", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx__evr__semaphore.html b/docs/RTOS2/html/group__rtx__evr__semaphore.html new file mode 100644 index 0000000..9e7c0e0 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__semaphore.html @@ -0,0 +1,712 @@ + + + + + +Semaphore Functions +CMSIS-RTOS2: Semaphore Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Semaphore Functions
+
+
+ +

Events generated by semaphore functions. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void EvrRtxSemaphoreError (osSemaphoreId_t semaphore_id, int32_t status)
 Event on semaphore error (Error) More...
 
void EvrRtxSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr)
 Event on semaphore create and initialize (API) More...
 
void EvrRtxSemaphoreCreated (osSemaphoreId_t semaphore_id, const char *name)
 Event on successful semaphore create (Op) More...
 
void EvrRtxSemaphoreGetName (osSemaphoreId_t semaphore_id, const char *name)
 Event on semaphore name retrieve (API) More...
 
void EvrRtxSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout)
 Event on semaphore acquire (API) More...
 
void EvrRtxSemaphoreAcquirePending (osSemaphoreId_t semaphore_id, uint32_t timeout)
 Event on pending semaphore acquire (Op) More...
 
void EvrRtxSemaphoreAcquireTimeout (osSemaphoreId_t semaphore_id)
 Event on semaphore acquire timeout (Op) More...
 
void EvrRtxSemaphoreAcquired (osSemaphoreId_t semaphore_id, uint32_t tokens)
 Event on successful semaphore acquire (Op) More...
 
void EvrRtxSemaphoreNotAcquired (osSemaphoreId_t semaphore_id)
 Event on unsuccessful semaphore acquire (Op) More...
 
void EvrRtxSemaphoreRelease (osSemaphoreId_t semaphore_id)
 Event on semaphore release (API) More...
 
void EvrRtxSemaphoreReleased (osSemaphoreId_t semaphore_id, uint32_t tokens)
 Event on successful semaphore release (Op) More...
 
void EvrRtxSemaphoreGetCount (osSemaphoreId_t semaphore_id, uint32_t count)
 Event on semaphore token count retrieval (API) More...
 
void EvrRtxSemaphoreDelete (osSemaphoreId_t semaphore_id)
 Event on semaphore delete (API) More...
 
void EvrRtxSemaphoreDestroyed (osSemaphoreId_t semaphore_id)
 Event on successful semaphore delete (Op) More...
 
+

Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxSemaphoreError (osSemaphoreId_t semaphore_id,
int32_t status 
)
+
+
Parameters
+ + + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew or NULL when ID is unknown.
[in]statusextended execution status.
+
+
+

The event SemaphoreError is generated when Semaphores routines complete their execution due to an error.

+

The status parameter indicates the execution status and can be one of the osStatus_t codes or one of the extended execution status codes which are summarized in the table below.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Extended Status Code Description
osRtxErrorKernelNotReady Kernel scheduler is not in Ready state.
osRtxErrorKernelNotRunning Kernel scheduler is not executing - there is no running thread.
osRtxErrorInvalidControlBlock Object control block with invalid alignment or size was specified.
osRtxErrorInvalidDataMemory Object data memory with invalid alignment or size was specified.
osRtxErrorInvalidThreadStack Thread stack memory with invalid alignment or size was specified.
osRtxErrorInvalidPriority Invalid thread priority was specified.
osRtxErrorThreadNotJoinable Specified thread is not joinable.
osRtxErrorMutexNotOwned Specified mutex is not owned by the current running thread.
osRtxErrorMutexNotLocked Specified mutex is not locked.
osRtxErrorMutexLockLimit Maximum number of recursive mutex locks reached.
osRtxErrorSemaphoreCountLimit Semaphore count limit reached.
osRtxErrorTZ_InitContext_S Secure context memory system initialization failed.
osRtxErrorTZ_AllocContext_S Secure context memory allocation failed.
osRtxErrorTZ_FreeContext_S Secure context memory deallocation failed.
osRtxErrorTZ_LoadContext_S Secure context load failed.
osRtxErrorTZ_SaveContext_S Secure context save failed.
+

Value in the Event Recorder shows:

+
    +
  • semaphore_id : semaphore ID.
  • +
  • status : execution status code.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxSemaphoreNew (uint32_t max_count,
uint32_t initial_count,
const osSemaphoreAttr_tattr 
)
+
+
Parameters
+ + + + +
[in]max_countmaximum number of available tokens.
[in]initial_countinitial number of available tokens.
[in]attrsemaphore attributes.
+
+
+

The event SemaphoreNew is generated when the function osSemaphoreNew is called.

+

Value in the Event Recorder shows:

+
    +
  • max_count : maximum number of available tokens.
  • +
  • initial_count : initial number of available tokens.
  • +
  • attr : memory address of Semaphore attributes or 0 when they are not specified.
  • +
+

In case when semaphore attributes are provided in the API call they are also detailed in the Event Recorder.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxSemaphoreCreated (osSemaphoreId_t semaphore_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
[in]namepointer to semaphore object name.
+
+
+

The event SemaphoreCreated is generated when the function osSemaphoreNew successfully creates a semaphore object.

+

Value in the Event Recorder shows:

+
    +
  • semaphore_id : semaphore ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxSemaphoreGetName (osSemaphoreId_t semaphore_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
[in]namepointer to semaphore object name.
+
+
+

The event SemaphoreGetName is generated when the function osSemaphoreGetName is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • semaphore_id : semaphore ID.
  • +
  • name : retrieved memory address of name string (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxSemaphoreAcquire (osSemaphoreId_t semaphore_id,
uint32_t timeout 
)
+
+
Parameters
+ + + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+

The event SemaphoreAcquire is generated when the function osSemaphoreAcquire is called.

+

Value in the Event Recorder shows:

+ + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxSemaphoreAcquirePending (osSemaphoreId_t semaphore_id,
uint32_t timeout 
)
+
+
Parameters
+ + + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+

The event SemaphoreAcquirePending is generated when the function osSemaphoreAcquire blocks current running thread and waits for semaphore token to become available.

+

Value in the Event Recorder shows:

+ + +
+
+ +
+
+ + + + + + + + +
void EvrRtxSemaphoreAcquireTimeout (osSemaphoreId_t semaphore_id)
+
+
Parameters
+ + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
+
+
+

The event SemaphoreAcquireTimeout is generated when wait for semaphore to become available is aborted due to expired wait timeout.

+

Value in the Event Recorder shows:

+
    +
  • semaphore_id : semaphore ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxSemaphoreAcquired (osSemaphoreId_t semaphore_id,
uint32_t tokens 
)
+
+
Parameters
+ + + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
[in]tokensnumber of available tokens.
+
+
+

The event SemaphoreAcquired is generated when the function osSemaphoreAcquire successfully acquires the semaphore token.

+

Value in the Event Recorder shows:

+
    +
  • semaphore_id : semaphore ID.
  • +
  • tokens : available tokens.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxSemaphoreNotAcquired (osSemaphoreId_t semaphore_id)
+
+
Parameters
+ + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
+
+
+

The event SemaphoreNotAcquired is generated when the function osMutexAcquire returns without timeout and semaphore token was not acquired.

+

Value in the Event Recorder shows:

+
    +
  • semaphore_id : semaphore ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxSemaphoreRelease (osSemaphoreId_t semaphore_id)
+
+
Parameters
+ + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
+
+
+

The event SemaphoreRelease is generated when the function osSemaphoreRelease is called.

+

Value in the Event Recorder shows:

+
    +
  • semaphore_id : semaphore ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxSemaphoreReleased (osSemaphoreId_t semaphore_id,
uint32_t tokens 
)
+
+
Parameters
+ + + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
[in]tokensnumber of available tokens.
+
+
+

The event SemaphoreReleased is generated when the function osSemaphoreRelease successfully releases the semaphore token.

+

Value in the Event Recorder shows:

+
    +
  • semaphore_id : semaphore ID.
  • +
  • tokens : available tokens.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxSemaphoreGetCount (osSemaphoreId_t semaphore_id,
uint32_t count 
)
+
+
Parameters
+ + + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
[in]countcurrent number of available tokens.
+
+
+

The event SemaphoreGetCount is generated when the function osSemaphoreGetCount is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • semaphore_id : semaphore ID.
  • +
  • count : retrieved current number of available tokens.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxSemaphoreDelete (osSemaphoreId_t semaphore_id)
+
+
Parameters
+ + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
+
+
+

The event SemaphoreDelete is generated when the function osSemaphoreDelete is called.

+

Value in the Event Recorder shows:

+
    +
  • semaphore_id : semaphore ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxSemaphoreDestroyed (osSemaphoreId_t semaphore_id)
+
+
Parameters
+ + +
[in]semaphore_idsemaphore ID obtained by osSemaphoreNew.
+
+
+

The event SemaphoreDestroyed is generated when the function osSemaphoreDelete successfully deletes the semaphore object.

+

Value in the Event Recorder shows:

+
    +
  • semaphore_id : semaphore ID.
  • +
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx__evr__semaphore.js b/docs/RTOS2/html/group__rtx__evr__semaphore.js new file mode 100644 index 0000000..c59e341 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__semaphore.js @@ -0,0 +1,17 @@ +var group__rtx__evr__semaphore = +[ + [ "EvrRtxSemaphoreError", "group__rtx__evr__semaphore.html#ga96a0209384296a283c7b1d23a3395fa1", null ], + [ "EvrRtxSemaphoreNew", "group__rtx__evr__semaphore.html#ga5639f03e935ab79844777664a518c2ec", null ], + [ "EvrRtxSemaphoreCreated", "group__rtx__evr__semaphore.html#ga31f9d55abcc5f398ea3810177cbf2bf3", null ], + [ "EvrRtxSemaphoreGetName", "group__rtx__evr__semaphore.html#ga17d8aa861b6e669cc68c3c41e3e12332", null ], + [ "EvrRtxSemaphoreAcquire", "group__rtx__evr__semaphore.html#gafd91c9bb268a48b394571a9fc1809019", null ], + [ "EvrRtxSemaphoreAcquirePending", "group__rtx__evr__semaphore.html#gabbaaf85deaf4645414987fc1c3289343", null ], + [ "EvrRtxSemaphoreAcquireTimeout", "group__rtx__evr__semaphore.html#ga852798d5e14cda14484564ac4d7f5a4b", null ], + [ "EvrRtxSemaphoreAcquired", "group__rtx__evr__semaphore.html#ga4d1f85595cc0802cf8cac89fd8f88b5d", null ], + [ "EvrRtxSemaphoreNotAcquired", "group__rtx__evr__semaphore.html#ga53eb40f5251e9464b46cc153fe8b26d8", null ], + [ "EvrRtxSemaphoreRelease", "group__rtx__evr__semaphore.html#ga0a9f3c7dbf89d3f155a96524e7195630", null ], + [ "EvrRtxSemaphoreReleased", "group__rtx__evr__semaphore.html#ga814dc5c7d95e7d1bfb30ce0f472ae420", null ], + [ "EvrRtxSemaphoreGetCount", "group__rtx__evr__semaphore.html#ga17f21ffa4ec39c50ce203e6985dd0deb", null ], + [ "EvrRtxSemaphoreDelete", "group__rtx__evr__semaphore.html#gaeb0605679ad9f686dd0f40610c8af772", null ], + [ "EvrRtxSemaphoreDestroyed", "group__rtx__evr__semaphore.html#gaad8d8a2844e948b00f02e8620c431c9c", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx__evr__thread.html b/docs/RTOS2/html/group__rtx__evr__thread.html new file mode 100644 index 0000000..52b7242 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__thread.html @@ -0,0 +1,1293 @@ + + + + + +Thread Functions +CMSIS-RTOS2: Thread Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Thread Functions
+
+
+ +

Events generated by thread functions. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void EvrRtxThreadError (osThreadId_t thread_id, int32_t status)
 Event on thread error (Error) More...
 
void EvrRtxThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr)
 Event on thread create and intialize (API) More...
 
void EvrRtxThreadCreated (osThreadId_t thread_id, uint32_t thread_addr, const char *name)
 Event on successful thread create (Op) More...
 
void EvrRtxThreadGetName (osThreadId_t thread_id, const char *name)
 Event on thread name retrieve (API) More...
 
void EvrRtxThreadGetId (osThreadId_t thread_id)
 Event on current running thread ID retrieve (API) More...
 
void EvrRtxThreadGetState (osThreadId_t thread_id, osThreadState_t state)
 Event on thread state retrieve (API) More...
 
void EvrRtxThreadGetStackSize (osThreadId_t thread_id, uint32_t stack_size)
 Event on thread stack size retrieve (API) More...
 
void EvrRtxThreadGetStackSpace (osThreadId_t thread_id, uint32_t stack_space)
 Event on available stack space retrieve (API) More...
 
void EvrRtxThreadSetPriority (osThreadId_t thread_id, osPriority_t priority)
 Event on thread priority set (API) More...
 
void EvrRtxThreadGetPriority (osThreadId_t thread_id, osPriority_t priority)
 Event on thread priority retrieve (API) More...
 
void EvrRtxThreadYield (void)
 Event on thread yield (API) More...
 
void EvrRtxThreadSuspend (osThreadId_t thread_id)
 Event on thread suspend (API) More...
 
void EvrRtxThreadSuspended (osThreadId_t thread_id)
 Event on successful thread suspend (Op) More...
 
void EvrRtxThreadResume (osThreadId_t thread_id)
 Event on thread resume (API) More...
 
void EvrRtxThreadResumed (osThreadId_t thread_id)
 Event on successful thread resume (Op) More...
 
void EvrRtxThreadDetach (osThreadId_t thread_id)
 Event on thread detach (API) More...
 
void EvrRtxThreadDetached (osThreadId_t thread_id)
 Event on successful thread detach (Op) More...
 
void EvrRtxThreadJoin (osThreadId_t thread_id)
 Event on thread join (API) More...
 
void EvrRtxThreadJoinPending (osThreadId_t thread_id)
 Event on pending thread join (Op) More...
 
void EvrRtxThreadJoined (osThreadId_t thread_id)
 Event on successful thread join (Op) More...
 
void EvrRtxThreadBlocked (osThreadId_t thread_id, uint32_t timeout)
 Event on thread execution block (Op) More...
 
void EvrRtxThreadUnblocked (osThreadId_t thread_id, uint32_t ret_val)
 Event on thread execution unblock (Op) More...
 
void EvrRtxThreadPreempted (osThreadId_t thread_id)
 Event on running thread pre-emption (Op) More...
 
void EvrRtxThreadSwitched (osThreadId_t thread_id)
 Event on running thread switch (Op) More...
 
void EvrRtxThreadExit (void)
 Event on thread exit (API) More...
 
void EvrRtxThreadTerminate (osThreadId_t thread_id)
 Event on thread terminate (API) More...
 
void EvrRtxThreadDestroyed (osThreadId_t thread_id)
 Event on successful thread terminate (Op) More...
 
void EvrRtxThreadGetCount (uint32_t count)
 Event on active thread count retrieve (API) More...
 
void EvrRtxThreadEnumerate (osThreadId_t *thread_array, uint32_t array_items, uint32_t count)
 Event on active threads enumerate (API) More...
 
void EvrRtxThreadFlagsWaitTimeout (void)
 Event on wait timeout for thread flags (Op) More...
 
void EvrRtxThreadDelay (uint32_t ticks)
 Event on wait for timeout (API) More...
 
void EvrRtxThreadDelayUntil (uint32_t ticks)
 Event on wait until specified time (API) More...
 
void EvrRtxThreadDelayCompleted (void)
 Event on completed wait (Op) More...
 
+

Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxThreadError (osThreadId_t thread_id,
int32_t status 
)
+
+
Parameters
+ + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId or NULL when ID is unknown.
[in]statusextended execution status.
+
+
+

The event ThreadError is generated when Thread Flags and Thread Management routines complete their execution due to an error.

+

The status parameter indicates the execution status and can be one of the osStatus_t codes or one of the extended execution status codes which are summarized in the table below.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Extended Status Code Description
osRtxErrorKernelNotReady Kernel scheduler is not in Ready state.
osRtxErrorKernelNotRunning Kernel scheduler is not executing - there is no running thread.
osRtxErrorInvalidControlBlock Object control block with invalid alignment or size was specified.
osRtxErrorInvalidDataMemory Object data memory with invalid alignment or size was specified.
osRtxErrorInvalidThreadStack Thread stack memory with invalid alignment or size was specified.
osRtxErrorInvalidPriority Invalid thread priority was specified.
osRtxErrorThreadNotJoinable Specified thread is not joinable.
osRtxErrorMutexNotOwned Specified mutex is not owned by the current running thread.
osRtxErrorMutexNotLocked Specified mutex is not locked.
osRtxErrorMutexLockLimit Maximum number of recursive mutex locks reached.
osRtxErrorSemaphoreCountLimit Semaphore count limit reached.
osRtxErrorTZ_InitContext_S Secure context memory system initialization failed.
osRtxErrorTZ_AllocContext_S Secure context memory allocation failed.
osRtxErrorTZ_FreeContext_S Secure context memory deallocation failed.
osRtxErrorTZ_LoadContext_S Secure context load failed.
osRtxErrorTZ_SaveContext_S Secure context save failed.
+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
  • status : execution status code.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxThreadNew (osThreadFunc_t func,
void * argument,
const osThreadAttr_tattr 
)
+
+
Parameters
+ + + + +
[in]functhread function.
[in]argumentpointer that is passed to the thread function as start argument.
[in]attrthread attributes.
+
+
+

The event ThreadNew is generated when the function osThreadNew is called.

+

Value in the Event Recorder shows:

+
    +
  • func : memory address of thread function.
  • +
  • argument : memory address of thread function start argument.
  • +
  • attr : memory address of Thread attributes or 0 when they are not specified.
  • +
+

In case when thread attributes are provided in the API call they are also detailed in the Event Recorder.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxThreadCreated (osThreadId_t thread_id,
uint32_t thread_addr,
const char * name 
)
+
+
Parameters
+ + + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
[in]thread_addrthread entry address.
[in]namepointer to thread object name.
+
+
+

The event ThreadCreated is generated when the function osThreadNew successfully creates a thread object.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxThreadGetName (osThreadId_t thread_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
[in]namepointer to thread object name.
+
+
+

The event ThreadGetName is generated when the function osThreadGetName is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
  • name : retrieved memory address of name string (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadGetId (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadGetId is generated when the function osThreadGetId is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : retrieved thread (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxThreadGetState (osThreadId_t thread_id,
osThreadState_t state 
)
+
+
Parameters
+ + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
[in]statecurrent thread state of the specified thread.
+
+
+

The event ThreadGetState is generated when the function osThreadGetState is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
  • state : retrieved current thread state.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxThreadGetStackSize (osThreadId_t thread_id,
uint32_t stack_size 
)
+
+
Parameters
+ + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
[in]stack_sizestack size in bytes.
+
+
+

The event ThreadGetStackSize is generated when the function osThreadGetStackSize is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
  • stack_size : retrieved remaining stack space in bytes (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxThreadGetStackSpace (osThreadId_t thread_id,
uint32_t stack_space 
)
+
+
Parameters
+ + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
[in]stack_spaceremaining stack space in bytes.
+
+
+

The event ThreadGetStackSpace is generated when the function osThreadGetStackSpace is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
  • stack_space : retrieved remaining stack space in bytes (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxThreadSetPriority (osThreadId_t thread_id,
osPriority_t priority 
)
+
+
Parameters
+ + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
[in]prioritynew priority value for the thread function.
+
+
+

The event ThreadSetPriority is generated when the function osThreadSetPriority is called.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
  • priority : new priority value for the thread function.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxThreadGetPriority (osThreadId_t thread_id,
osPriority_t priority 
)
+
+
Parameters
+ + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
[in]prioritycurrent priority value of the specified thread.
+
+
+

The event ThreadGetPriority is generated when the function osThreadGetPriority is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
  • priority : current priority value of the specified thread.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadYield (void )
+
+

The event ThreadYield is generated when the function osThreadYield is called.

+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadSuspend (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadSuspend is generated when the function osThreadSuspend is called.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadSuspended (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadSuspended is generated when the function osThreadSuspend successfully suspends the specified thread.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadResume (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadResume is generated when the function osThreadResume is called.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadResumed (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadResumed is generated when the function osThreadResume successfully resumes the specified thread.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadDetach (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadDetach is generated when the function osThreadDetach is called.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadDetached (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadDetached is generated when the function osThreadDetach successfully detaches the specified thread.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadJoin (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadJoin is generated when the function osThreadJoin is called.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadJoinPending (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadJoinPending is generated when the function osThreadJoin suspends current running thread until the specified thread terminates.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadJoined (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadJoined is generated when the function osThreadJoin successfully joins the specified thread.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxThreadBlocked (osThreadId_t thread_id,
uint32_t timeout 
)
+
+
Parameters
+ + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
[in]timeoutTimeout Value or 0 in case of no time-out.
+
+
+

The event ThreadBlocked is generated when the current running thread execution is blocked.

+

Value in the Event Recorder shows:

+ + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxThreadUnblocked (osThreadId_t thread_id,
uint32_t ret_val 
)
+
+
Parameters
+ + + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
[in]ret_valextended execution status of the thread.
+
+
+

The event ThreadUnblocked is generated when the blocked thread execution is unblocked.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
  • ret_val :
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadPreempted (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadPreempted is generated when current running thread execution is preempted.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadSwitched (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadSwitched is generated when current running thread execution switches.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadExit (void )
+
+

The event ThreadExit is generated when the function osThreadExit is called.

+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadTerminate (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadTerminate is generated when the function osThreadTerminate is called.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadDestroyed (osThreadId_t thread_id)
+
+
Parameters
+ + +
[in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
+
+
+

The event ThreadDestroyed is generated when the function osThreadExit or osThreadTerminate successfully terminates the thread.

+

Value in the Event Recorder shows:

+
    +
  • thread_id : thread ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadGetCount (uint32_t count)
+
+
Parameters
+ + +
[in]countnumber of active threads.
+
+
+

The event ThreadGetCount is generated when the function osThreadGetCount is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • count : retrieved number of active threads (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxThreadEnumerate (osThreadId_tthread_array,
uint32_t array_items,
uint32_t count 
)
+
+
Parameters
+ + + + +
[in]thread_arraypointer to array for retrieving thread IDs.
[in]array_itemsmaximum number of items in array for retrieving thread IDs.
[in]countnumber of enumerated threads.
+
+
+

The event ThreadEnumerate is generated when the function osThreadEnumerate is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • thread_array : memory address of array for retrieving thread IDs.
  • +
  • array_items : maximum number of items in thread_array.
  • +
  • count : number of enumerated threads (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadFlagsWaitTimeout (void )
+
+

The event ThreadFlagsWaitTimeout is generated when wait for thread flags to become signaled is aborted due to expired wait timeout.

+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadDelay (uint32_t ticks)
+
+
Parameters
+ + +
[in]tickstime ticks value.
+
+
+

The event ThreadDelay is generated when the function osDelay is called.

+

Value in the Event Recorder shows:

+ + +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadDelayUntil (uint32_t ticks)
+
+
Parameters
+ + +
[in]ticksabsolute time in ticks.
+
+
+

The event ThreadDelayUntil is generated when the function osDelayUntil is called.

+

Value in the Event Recorder shows:

+
    +
  • ticks : absolute delay time in ticks.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxThreadDelayCompleted (void )
+
+

The event ThreadDelayCompleted is generated when thread delay expires.

+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx__evr__thread.js b/docs/RTOS2/html/group__rtx__evr__thread.js new file mode 100644 index 0000000..ca40a57 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__thread.js @@ -0,0 +1,36 @@ +var group__rtx__evr__thread = +[ + [ "EvrRtxThreadError", "group__rtx__evr__thread.html#ga4a2879b06201a29d8c223253d41cca43", null ], + [ "EvrRtxThreadNew", "group__rtx__evr__thread.html#ga396ce41f68401a885f0ae46a54e8dd1f", null ], + [ "EvrRtxThreadCreated", "group__rtx__evr__thread.html#ga5bfa3bc241aea59ebe9bc1edcf6b78d8", null ], + [ "EvrRtxThreadGetName", "group__rtx__evr__thread.html#ga4f849a33d2c95754b11a499d77503b5c", null ], + [ "EvrRtxThreadGetId", "group__rtx__evr__thread.html#ga40c0d21a5c0d128f09966aeeca37ecba", null ], + [ "EvrRtxThreadGetState", "group__rtx__evr__thread.html#ga1c3120fb155ca19ea5c9089a446ef19d", null ], + [ "EvrRtxThreadGetStackSize", "group__rtx__evr__thread.html#ga1200f51e9152810e76386e241904427c", null ], + [ "EvrRtxThreadGetStackSpace", "group__rtx__evr__thread.html#ga4fd48ef48eefb01a6252cfc02ea169ab", null ], + [ "EvrRtxThreadSetPriority", "group__rtx__evr__thread.html#gabf4a015bd3fb2a33c0d105a871aaba72", null ], + [ "EvrRtxThreadGetPriority", "group__rtx__evr__thread.html#gada73306deca99987b104aa9840fdd4e2", null ], + [ "EvrRtxThreadYield", "group__rtx__evr__thread.html#gafed41f1b6bcdde658ca306f8a6d7ac7e", null ], + [ "EvrRtxThreadSuspend", "group__rtx__evr__thread.html#gaa268fe19f933b8d2a830063560694561", null ], + [ "EvrRtxThreadSuspended", "group__rtx__evr__thread.html#gab0d959bc625cb3e7ddd6bf7c302f631e", null ], + [ "EvrRtxThreadResume", "group__rtx__evr__thread.html#gaf41ff549329cf2feb4a1efe49c518e30", null ], + [ "EvrRtxThreadResumed", "group__rtx__evr__thread.html#ga8b25f2548a9f3c069431131169d170ac", null ], + [ "EvrRtxThreadDetach", "group__rtx__evr__thread.html#ga02088c2d38cbc31a46675334f63f37f5", null ], + [ "EvrRtxThreadDetached", "group__rtx__evr__thread.html#gac60670562ed1efbfbc61036d881c8af9", null ], + [ "EvrRtxThreadJoin", "group__rtx__evr__thread.html#ga392bb7a8dcd6d126a5e424ab01aa8a80", null ], + [ "EvrRtxThreadJoinPending", "group__rtx__evr__thread.html#ga47b64cfdc5c5410dde2c5d9145c7d79b", null ], + [ "EvrRtxThreadJoined", "group__rtx__evr__thread.html#ga86ac910ac88d8fe54206a12d7ed69a27", null ], + [ "EvrRtxThreadBlocked", "group__rtx__evr__thread.html#gab9efd66ed2edb439c5081806c9b63cf9", null ], + [ "EvrRtxThreadUnblocked", "group__rtx__evr__thread.html#ga3faae4d941ddecfe773ef9f3efe8b901", null ], + [ "EvrRtxThreadPreempted", "group__rtx__evr__thread.html#gabe470d5bb1373c59c51470fd20b55bcb", null ], + [ "EvrRtxThreadSwitched", "group__rtx__evr__thread.html#gae3bc50d5f154463c7f6647544bb5ecab", null ], + [ "EvrRtxThreadExit", "group__rtx__evr__thread.html#gaa557f9732a8a2120f08cfb2694aa26fb", null ], + [ "EvrRtxThreadTerminate", "group__rtx__evr__thread.html#ga6abe7d167bd5bb91c3d6bf6d2bb417aa", null ], + [ "EvrRtxThreadDestroyed", "group__rtx__evr__thread.html#gaa5aa707fc2d6b44bfcb86bce2e2e90f3", null ], + [ "EvrRtxThreadGetCount", "group__rtx__evr__thread.html#ga6d5932965736e0f2f35fe2d87bd622e7", null ], + [ "EvrRtxThreadEnumerate", "group__rtx__evr__thread.html#ga1999d77992b03347abdca7ec17f91cca", null ], + [ "EvrRtxThreadFlagsWaitTimeout", "group__rtx__evr__thread.html#gadbbee398f4fab418c9b8115fc7392ff8", null ], + [ "EvrRtxThreadDelay", "group__rtx__evr__thread.html#gadd45d32305aa45668a36f2c9f0f4c758", null ], + [ "EvrRtxThreadDelayUntil", "group__rtx__evr__thread.html#gaf59defd6c171d2c3d3508e7136278db2", null ], + [ "EvrRtxThreadDelayCompleted", "group__rtx__evr__thread.html#gab46562848142ce5ea806d629fd000168", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/group__rtx__evr__timer.html b/docs/RTOS2/html/group__rtx__evr__timer.html new file mode 100644 index 0000000..869c7e9 --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__timer.html @@ -0,0 +1,636 @@ + + + + + +Timer Functions +CMSIS-RTOS2: Timer Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Timer Functions
+
+
+ +

Events generated by timer functions. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void EvrRtxTimerError (osTimerId_t timer_id, int32_t status)
 Event on timer error (Error) More...
 
void EvrRtxTimerCallback (osTimerFunc_t func, void *argument)
 Event on timer callback call (Op) More...
 
void EvrRtxTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)
 Event on timer create and initialize (API) More...
 
void EvrRtxTimerCreated (osTimerId_t timer_id, const char *name)
 Event on successful timer create (Op) More...
 
void EvrRtxTimerGetName (osTimerId_t timer_id, const char *name)
 Event on timer name retrieve (API) More...
 
void EvrRtxTimerStart (osTimerId_t timer_id, uint32_t ticks)
 Event on timer start (API) More...
 
void EvrRtxTimerStarted (osTimerId_t timer_id)
 Event on successful timer start (Op) More...
 
void EvrRtxTimerStop (osTimerId_t timer_id)
 Event on timer stop (API) More...
 
void EvrRtxTimerStopped (osTimerId_t timer_id)
 Event on successful timer stop (Op) More...
 
void EvrRtxTimerIsRunning (osTimerId_t timer_id, uint32_t running)
 Event on timer running state check (API) More...
 
void EvrRtxTimerDelete (osTimerId_t timer_id)
 Event on timer delete (API) More...
 
void EvrRtxTimerDestroyed (osTimerId_t timer_id)
 Event on successful timer delete (Op) More...
 
+

Description

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxTimerError (osTimerId_t timer_id,
int32_t status 
)
+
+
Parameters
+ + + +
[in]timer_idtimer ID obtained by osTimerNew or NULL when ID is unknown.
[in]statusextended execution status.
+
+
+

The event TimerError is generated when Timer Management routines complete their execution due to an error.

+

The status parameter indicates the execution status and can be one of the osStatus_t codes or one of the extended execution status codes which are summarized in the table below.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Extended Status Code Description
osRtxErrorKernelNotReady Kernel scheduler is not in Ready state.
osRtxErrorKernelNotRunning Kernel scheduler is not executing - there is no running thread.
osRtxErrorInvalidControlBlock Object control block with invalid alignment or size was specified.
osRtxErrorInvalidDataMemory Object data memory with invalid alignment or size was specified.
osRtxErrorInvalidThreadStack Thread stack memory with invalid alignment or size was specified.
osRtxErrorInvalidPriority Invalid thread priority was specified.
osRtxErrorThreadNotJoinable Specified thread is not joinable.
osRtxErrorMutexNotOwned Specified mutex is not owned by the current running thread.
osRtxErrorMutexNotLocked Specified mutex is not locked.
osRtxErrorMutexLockLimit Maximum number of recursive mutex locks reached.
osRtxErrorSemaphoreCountLimit Semaphore count limit reached.
osRtxErrorTZ_InitContext_S Secure context memory system initialization failed.
osRtxErrorTZ_AllocContext_S Secure context memory allocation failed.
osRtxErrorTZ_FreeContext_S Secure context memory deallocation failed.
osRtxErrorTZ_LoadContext_S Secure context load failed.
osRtxErrorTZ_SaveContext_S Secure context save failed.
+

Value in the Event Recorder shows:

+
    +
  • timer_id : timer ID.
  • +
  • status : execution status code.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxTimerCallback (osTimerFunc_t func,
void * argument 
)
+
+
Parameters
+ + + +
[in]funcstart address of a timer call back function.
[in]argumentargument to the timer call back function.
+
+
+

The event TimerCallback is generated when the timer callback function is called.

+

Value in the Event Recorder shows:

+
    +
  • func : start address of a timer call back function.
  • +
  • argument : memory address of argument to the timer call back function.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void EvrRtxTimerNew (osTimerFunc_t func,
osTimerType_t type,
void * argument,
const osTimerAttr_tattr 
)
+
+
Parameters
+ + + + + +
[in]funcstart address of a timer call back function.
[in]typeosTimerOnce for one-shot or osTimerPeriodic for periodic behavior.
[in]argumentargument to the timer call back function.
[in]attrtimer attributes.
+
+
+

The event TimerNew is generated when the function osTimerNew is called.

+

Value in the Event Recorder shows:

+
    +
  • func : start address of a timer call back function.
  • +
  • type : timer type: osTimerOnce for one-shot or osTimerPeriodic for periodic behavior.
  • +
  • argument : memory address of argument to the timer call back function.
  • +
  • attr : memory address of Timer attributes or 0 when they are not specified.
  • +
+

In case when timer attributes are provided in the API call they are also detailed in the Event Recorder.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxTimerCreated (osTimerId_t timer_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]timer_idtimer ID obtained by osTimerNew.
[in]namepointer to timer object name.
+
+
+

The event TimerCreated is generated when the function osTimerNew successfully creates a timer object.

+

Value in the Event Recorder shows:

+
    +
  • timer_id : timer ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxTimerGetName (osTimerId_t timer_id,
const char * name 
)
+
+
Parameters
+ + + +
[in]timer_idtimer ID obtained by osTimerNew.
[in]namepointer to timer object name.
+
+
+

The event TimerGetName is generated when the function osTimerGetName is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • timer_id : timer ID.
  • +
  • name : retrieved memory address of name string (0 in case of a failure).
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxTimerStart (osTimerId_t timer_id,
uint32_t ticks 
)
+
+
Parameters
+ + + +
[in]timer_idtimer ID obtained by osTimerNew.
[in]tickstime ticks value of the timer.
+
+
+

The event TimerStart is generated when the function osTimerStart is called.

+

Value in the Event Recorder shows:

+
    +
  • timer_id : timer ID.
  • +
  • ticks : time ticks value of the timer.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxTimerStarted (osTimerId_t timer_id)
+
+
Parameters
+ + +
[in]timer_idtimer ID obtained by osTimerNew.
+
+
+

The event TimerStarted is generated when the function osTimerStart successfully starts or restarts the timer operation.

+

Value in the Event Recorder shows:

+
    +
  • timer_id : timer ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxTimerStop (osTimerId_t timer_id)
+
+
Parameters
+ + +
[in]timer_idtimer ID obtained by osTimerNew.
+
+
+

The event TimerStop is generated when the function osTimerStop is called.

+

Value in the Event Recorder shows:

+
    +
  • timer_id : timer ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxTimerStopped (osTimerId_t timer_id)
+
+
Parameters
+ + +
[in]timer_idtimer ID obtained by osTimerNew.
+
+
+

The event TimerStopped is generated when the function osTimerStop successfully stops the timer operation.

+

Value in the Event Recorder shows:

+
    +
  • timer_id : timer ID.
  • +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void EvrRtxTimerIsRunning (osTimerId_t timer_id,
uint32_t running 
)
+
+
Parameters
+ + + +
[in]timer_idtimer ID obtained by osTimerNew.
[in]runningrunning state: 0 not running, 1 running.
+
+
+

The event TimerIsRunning is generated when the function osTimerIsRunning is called and its execution result is known.

+

Value in the Event Recorder shows:

+
    +
  • timer_id : timer ID.
  • +
  • running : timer running state: 0 not running, 1 running.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxTimerDelete (osTimerId_t timer_id)
+
+
Parameters
+ + +
[in]timer_idtimer ID obtained by osTimerNew.
+
+
+

The event TimerDelete is generated when the function osTimerDelete is called.

+

Value in the Event Recorder shows:

+
    +
  • timer_id : timer ID.
  • +
+ +
+
+ +
+
+ + + + + + + + +
void EvrRtxTimerDestroyed (osTimerId_t timer_id)
+
+
Parameters
+ + +
[in]timer_idtimer ID obtained by osTimerNew.
+
+
+

The event TimerDestroyed is generated when the function osTimerDelete successfully deletes the timer object.

+

Value in the Event Recorder shows:

+
    +
  • timer_id : timer ID.
  • +
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/group__rtx__evr__timer.js b/docs/RTOS2/html/group__rtx__evr__timer.js new file mode 100644 index 0000000..43b0b4f --- /dev/null +++ b/docs/RTOS2/html/group__rtx__evr__timer.js @@ -0,0 +1,15 @@ +var group__rtx__evr__timer = +[ + [ "EvrRtxTimerError", "group__rtx__evr__timer.html#gaf1b516bf697288e67fe797662b1873b0", null ], + [ "EvrRtxTimerCallback", "group__rtx__evr__timer.html#gacd46f9d31d256c27c72e47d5be5e9d09", null ], + [ "EvrRtxTimerNew", "group__rtx__evr__timer.html#ga6387808c22d6e186057ed744618d2487", null ], + [ "EvrRtxTimerCreated", "group__rtx__evr__timer.html#ga71dd40a818f1098052915bbfb6c17e88", null ], + [ "EvrRtxTimerGetName", "group__rtx__evr__timer.html#ga601e3617903900524062c4f9069d052f", null ], + [ "EvrRtxTimerStart", "group__rtx__evr__timer.html#ga453d82bfa65dfbbaffbd5b4ff4f050b2", null ], + [ "EvrRtxTimerStarted", "group__rtx__evr__timer.html#gab0dbdf460fc26b25f3987c44fb0ebdeb", null ], + [ "EvrRtxTimerStop", "group__rtx__evr__timer.html#ga27cf05adc61d30a0e68f380c96ea5f93", null ], + [ "EvrRtxTimerStopped", "group__rtx__evr__timer.html#gaccd59c7ae2351e0a1bf96cdb749c049f", null ], + [ "EvrRtxTimerIsRunning", "group__rtx__evr__timer.html#ga6fa5a23f241d765ae22ff1862c6f3b3f", null ], + [ "EvrRtxTimerDelete", "group__rtx__evr__timer.html#gaea5811cc74861117eccbcbb997d36133", null ], + [ "EvrRtxTimerDestroyed", "group__rtx__evr__timer.html#ga474f3bd3ed38945b087f37fd709560b7", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/history_8txt.html b/docs/RTOS2/html/history_8txt.html new file mode 100644 index 0000000..8efc10c --- /dev/null +++ b/docs/RTOS2/html/history_8txt.html @@ -0,0 +1,129 @@ + + + + + +history.txt File Reference +CMSIS-RTOS2: history.txt File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ + + + + + diff --git a/docs/RTOS2/html/index.html b/docs/RTOS2/html/index.html new file mode 100644 index 0000000..97e96b7 --- /dev/null +++ b/docs/RTOS2/html/index.html @@ -0,0 +1,181 @@ + + + + + +Main Page +CMSIS-RTOS2: Main Page + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
CMSIS-RTOS2 Documentation
+
+
+

The CMSIS-RTOS v2 (CMSIS-RTOS2) provides generic RTOS interfaces for Arm® Cortex® processor-based devices. It provides a standardized API for software components that require RTOS functionality and gives therefore serious benefits to the users and the software industry:

+
    +
  • CMSIS-RTOS2 provides basic features that are required in many applications.
  • +
  • The unified feature set of the CMSIS-RTOS2 reduces learning efforts and simplifies sharing of software components.
  • +
  • Middleware components that use the CMSIS-RTOS2 are RTOS agnostic and are easier to adapt.
  • +
  • Standard project templates of the CMSIS-RTOS2 may be shipped with freely available CMSIS-RTOS2 implementations.
  • +
+
Note
The CMSIS-RTOS API Version 2 defines a minimum feature set. Implementations with extended features may be provided by the RTOS vendors.
+

The CMSIS-RTOS2 manages the resources of the microcontroller system and implements the concept of parallel threads that run concurrently.

+

Applications frequently require several concurrent activities. CMSIS-RTOS2 can manage multiple concurrent activities at the time when they are needed. Each activity gets a separate thread which executes a specific task and this simplifies the overall program structure. The CMSIS-RTOS2 system is scalable and additional threads can be added easily at a later time. Threads have a priority allowing faster execution of time-critical parts of a user application.

+

The CMSIS-RTOS2 offers services needed in many real-time applications, for example, periodical activation of timer functions, memory management, and message exchange between threads with time limits.

+

The CMSIS-RTOS2 addresses the following new requirements:

+
    +
  • Dynamic object creation no longer requires static memory, static memory buffers are now optional.
  • +
  • Support for Armv8-M architecture that provides a secure and non-secure state of code execution.
  • +
  • Provisions for message passing in multi-core systems.
  • +
  • Full support of C++ run-time environments.
  • +
  • C interface which is binary compatible across ABI compatible compilers.
  • +
+

As a consequence of these requirements the CMSIS-RTOS2 has the following fundamental modifications:

+
    +
  • The functions osXxxxNew replace osXxxxCreate functions; osXxxxNew and osXxxxDelete create and destroy objects.
  • +
  • The C function main is no longer started as a thread (this was an optional feature in CMSIS-RTOS v1).
  • +
  • Functions that return osEvent have been replaced.
  • +
+

CMSIS-RTOS2 provides an translation layer to CMSIS-RTOS v1. It is possible to intermix CMSIS-RTOS C API v2 and CMSIS-RTOS C API v1 within the same application. Over time, you may migrate to the new API as explained in Migration from API v1 to API v2.

+

CMSIS-RTOS2 is not POSIX compliant, but has provisions to enable a C++11/C++14 interface.

+

The following sections provide further details about CMSIS-RTOS2 and the RTX reference implementation.

+ +
+

CMSIS-RTOS2 in ARM::CMSIS Pack

+

The following files relevant to CMSIS-RTOS2 are present in the ARM::CMSIS Pack directories:

+ + + + + + + + + + + + + +
Directory Content
CMSIS/Documentation/RTOS2 This documentation
CMSIS/RTOS2/Include cmsis_os2.h header file
CMSIS/RTOS2/RTX CMSIS-RTOS2 reference implementation based on RTX version 5
CMSIS/RTOS2/Source Generic OS tick implementations for various processors based on OS Tick API
CMSIS/RTOS2/Template Compatibility layer to CMSIS-RTOS v1
+
+
+ + + + diff --git a/docs/RTOS2/html/jquery.js b/docs/RTOS2/html/jquery.js new file mode 100644 index 0000000..3db33e6 --- /dev/null +++ b/docs/RTOS2/html/jquery.js @@ -0,0 +1,72 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; +if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 +},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av); +ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; +if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b +})}})(window); +/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null; +p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+
+
mainpage.txt File Reference
+
+
+
+ + + + + diff --git a/docs/RTOS2/html/manage_rte_cortex-a.png b/docs/RTOS2/html/manage_rte_cortex-a.png new file mode 100644 index 0000000..5436cbc Binary files /dev/null and b/docs/RTOS2/html/manage_rte_cortex-a.png differ diff --git a/docs/RTOS2/html/manage_rte_output.png b/docs/RTOS2/html/manage_rte_output.png new file mode 100644 index 0000000..30c9c9e Binary files /dev/null and b/docs/RTOS2/html/manage_rte_output.png differ diff --git a/docs/RTOS2/html/mempool.png b/docs/RTOS2/html/mempool.png new file mode 100644 index 0000000..506fb42 Binary files /dev/null and b/docs/RTOS2/html/mempool.png differ diff --git a/docs/RTOS2/html/misraCompliance5.html b/docs/RTOS2/html/misraCompliance5.html new file mode 100644 index 0000000..575ebf7 --- /dev/null +++ b/docs/RTOS2/html/misraCompliance5.html @@ -0,0 +1,412 @@ + + + + + +MISRA C:2012 Compliance +CMSIS-RTOS2: MISRA C:2012 Compliance + + + + + + + + + + + + + + +
+
+
+ + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+ + +
+
    + +
+
+ + + + +
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
MISRA C:2012 Compliance
+
+
+

The RTX5 C source files use MISRA C:2012 guidelines as underlying coding standard.

+

For MISRA validation, PC-lint V9.00L is used with configuration for Arm Compiler V6.9. The PC-Lint validation setup is part of the project file .\CMSIS\RTOS2\RTX\Library\ARM\MDK\RTX_CM.uvprojx as shown below. Refer to Setup for PC-Lint for more information.

+
+PC-Lint.png +
+Running PC-Lint within MDK - uVision
+

The PC-Lint configuration uses the following Options under Tools - PC-Lint Setup...:

+
    +
  • Config File: co-ARMCC-6.lnt (20-Mar-2017) with additional options:
    +rw(__restrict)
    +
    -esym(526,__builtin_*) -esym(628,__builtin_*)
    +
    -sem(__builtin_clz, pure)
    +
    +doffsetof(t,m)=((size_t)&((t*)0)->m) -emacro((413,923,9078),offsetof)
    +
    -ecall(534,__disable_irq)
    +
  • +
  • Included Project Information:
      +
    • Enable: Add 'Include' paths
    • +
    • Enable: Add 'Software Packs' paths
    • +
    • Enable: Verify 'Software Packs' includes
    • +
    • Enable: Add 'Preprocessor' symbols
    • +
    • Enable: Add 'Define' symbols
    • +
    +
  • +
  • MISRA Rules Setup and Configuration:
      +
    • MISRQ_C_2012_Config.lnt; all rules enabled
    • +
    • includes definition file: au-misra3.lnt (12-Jun-2014)
    • +
    +
  • +
  • Additional Lint Commands (for both single and mutiple files):
  • +
+

The C source code is annotated with PC-Lint control comments to allows MISRA deviations. These deviations with the underlaying design decisions are described in the following.

+

Deviations

+

The RTX source code has the following deviations from MISRA:

+ +

All source code deviations are clearly marked and in summary these deviations affect the following MISRA rules:

+
    +
  • [MISRA 2012 Directive 4.9, advisory]: A function should be used in preference to a function-like macro where yet are interchangeable
  • +
  • [MISRA 2012 Rule 1.3, required]: There shall be no occurrence of undefined or critical unspecified behavior
  • +
  • [MISRA 2012 Rule 10.3, required]: Expression assigned to a narrower or different essential type
  • +
  • [MISRA 2012 Rule 10.5, advisory]: Impermissible cast; cannot cast from 'essentially unsigned' to 'essentially enum<i>'
  • +
  • [MISRA 2012 Rule 11.1, required]: Conversions shall not be performed between a pointer to a function and any other type
  • +
  • [MISRA 2012 Rule 11.3, required]: A cast shall not be performed between a pointer to object type and a pointer to a different object type
  • +
  • [MISRA 2012 Rule 11.4, advisory]: A conversion should not be performed between a pointer to object and an integer type
  • +
  • [MISRA 2012 Rule 11.5, advisory]: A conversion should not be performed from pointer to void into pointer to object
  • +
  • [MISRA 2012 Rule 11.6, required]: A cast shall not be performed between pointer to void and an arithmetic type
  • +
  • [MISRA 2012 Rule 15.5, advisory]: A function should have a single point of exit at the end
  • +
  • [MISRA 2012 Rule 20.10, advisory]: The # and ## preprocessor operators should not be used
  • +
+

In the following all deviations are described in detail.

+

+[MISRA Note 1]: Return statements for parameter checking

+

Return statements are used at the beginning of several functions to validate parameter values and object states. The function returns immediately without any side-effects and typically an error status is set. This structure keeps the source code better structured and easier to understand.

+

This design decision implies the following MISRA deviation:

+
    +
  • [MISRA 2012 Rule 15.5, advisory]: A function should have a single point of exit at the end
  • +
+

All locations in the source code are marked with:

+
//lint -e{904} "Return statement before end of function" [MISRA Note 1]
+

+[MISRA Note 2]: Object identifiers are void pointers

+

CMSIS-RTOS is independant of an underlying RTOS implementation. The object idenifiers are therefore defined as void pointers to:

+
    +
  • allow application programs that are agnostic from an underlying RTOS implementation.
  • +
  • avoid accidently accesses an RTOS control block from an application program.
  • +
+

This design decisions imply the following MISRA deviations:

+
    +
  • [MISRA 2012 Rule 11.3, required]: A cast shall not be performed between a pointer to object type and a pointer to a different object type
  • +
  • [MISRA 2012 Rule 11.5, advisory]: A conversion should not be performed from pointer to void into pointer to object
  • +
+

All locations in the source code are marked with:

+
//lint -e{9079} -e{9087} "cast from pointer to void to pointer to object type" [MISRA Note 2]
+

In the RTX5 implementation the requried pointer conversions are implemented in the header file rtx_lib.h with the following inline functions:

+
osRtxThread_t *osRtxThreadId (osThread_t thread_id);
+
osRtxTimer_t *osRtxTimerId (osTimer_t timer_id);
+
osRtxEventFlags_t *osRtxEventFlagsId (osEventFlags_t ef_id);
+
osRtxMutex_t *osRtxMutexId (osMutex_t mutex_id);
+
osRtxSemaphore_t *osRtxSemaphoreId (osSemaphore_t semaphore_id);
+
osRtxMemoryPool_t *osRtxMemoryPoolId (osMemoryPoolId_t mp_id);
+
osRtxMessageQueue_t *osRtxMessageQueueId(osMessageQueueId_t mq_id);
+

+[MISRA Note 3]: Conversion to unified object control blocks

+

RTX uses a unified object control block structure that contains common object members. The unified control blocks use a fixed layout at the beginning of the sturcture and starts always with an object identifier. This allows common object functions that receive a pointer to a unified object control block and reference only the pointer or the members in the fixed layout. Using common object functions and data (for example the ISR queue) reduces code complexity and keeps the source code better structured. Refer also to [MISRA Note 4]: Conversion from unified object control blocks

+

This design decisions imply the following MISRA deviations:

+
    +
  • [MISRA 2012 Rule 11.3, required]: A cast shall not be performed between a pointer to object type and a pointer to a different object type
  • +
  • [MISRA 2012 Rule 11.5, advisory]: A conversion should not be performed from pointer to void into pointer to object
  • +
+

All locations in the source code are marked with:

+
//lint -e{9079} -e{9087} "cast from pointer to void to pointer to object type" [MISRA Note 3]
+

In the RTX5 implementation the requried pointer conversions are implemented in the header file rtx_lib.h with the following inline function:

+
osRtxObject_t *osRtxObject (void *object);
+

+[MISRA Note 4]: Conversion from unified object control blocks

+

RTX uses a unified object control block structure that contains common object members. Refer to [MISRA Note 3]: Conversion to unified object control blocks for more information. To process specifc control block data, pointer conversions are required.

+

This design decisions imply the following MISRA deviations:

+
    +
  • [MISRA 2012 Rule 1.3, required]: There shall be no occurrence of undefined or critical unspecified behavior
  • +
  • [MISRA 2012 Rule 11.3, required]: A cast shall not be performed between a pointer to object type and a pointer to a different object type In addition PC-Lint issues:
  • +
  • Info 826: Suspicious pointer-to-pointer conversion (area too small)
  • +
+

All locations in the source code are marked with:

+
//lint -e{740} -e{826} -e{9087} "cast from pointer to generic object to specific object" [MISRA Note 4]
+

In the RTX5 source code the requried pointer conversions are implemented in the header file rtx_lib.h with the following inline functions:

+
osRtxThread_t *osRtxThreadObject (osRtxObject_t *object);
+
osRtxTimer_t *osRtxTimerObject (osRtxObject_t *object);
+
osRtxEventFlags_t *osRtxEventFlagsObject (osRtxObject_t *object);
+
osRtxMutex_t *osRtxMutexObject (osRtxObject_t *object);
+
osRtxSemaphore_t *osRtxSemaphoreObject (osRtxObject_t *object);
+
osRtxMemoryPool_t *osRtxMemoryPoolObject (osRtxObject_t *object);
+
osRtxMessageQueue_t *osRtxMessageQueueObject (osRtxObject_t *object);
+
osRtxMessage_t *osRtxMessageObject (osRtxObject_t *object);
+

+[MISRA Note 5]: Conversion to object types

+

The RTX5 kernel has common memory management functions that use void pointers. These memory allocation fuctions returns a void pointer which is correctly aligned for object types.

+

This design decision implies the following MISRA deviations:

+
    +
  • [MISRA 2012 Rule 11.5, advisory]: A conversion should not be performed from pointer to void into pointer to object
  • +
+

All locations in the source code are marked with:

+
//lint -e{9079} "conversion from pointer to void to pointer to other type" [MISRA Note 5]
+

Code example:

+
os_thread_t *thread;
+
:
+
//lint -e{9079} "conversion from pointer to void to pointer to other type" [MISRA Note 5]
+
thread = osRtxMemoryPoolAlloc(osRtxInfo.mpi.thread);
+

+[MISRA Note 6]: Conversion from user provided storage

+

CMSIS-RTOS2 and RTX5 support user provided storage for object control blocks, stack, and data storage. The API uses void pointers to define the location of this user provided storage. It is therefore required to cast the void pointer to underlying storage types. Alignment restrictions of user provided storage are checked before accessing memory. Refer also to [MISRA Note 7]: Check for proper pointer alignment.

+

This design decisions imply the following MISRA deviations:

+
    +
  • [MISRA 2012 Rule 11.3, required]: A cast shall not be performed between a pointer to object type and a pointer to a different object type
  • +
  • [MISRA 2012 Rule 11.5, advisory]: A conversion should not be performed from pointer to void into pointer to object
  • +
+

All locations in the source code are marked with:

+
//lint -e{9079} "conversion from pointer to void to pointer to other type" [MISRA Note 6]
+

Code example:

+
static osTimerId_t svcRtxTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr) {
+
os_timer_t *timer;
+
:
+
if (attr != NULL) {
+
:
+
//lint -e{9079} "conversion from pointer to void to pointer to other type" [MISRA Note 6]
+
timer = attr->cb_mem;
+
:
+

+[MISRA Note 7]: Check for proper pointer alignment

+

RTX5 verifies the alignment of user provided storage for object control blocks, stack, and data storage. Refer also to [MISRA Note 6]: Conversion from user provided storage for more information.

+

This design decision implies the following MISRA deviations:

+
    +
  • [MISRA 2012 Rule 11.4, advisory]: A conversion should not be performed between a pointer to object and an integer type
  • +
  • [MISRA 2012 Rule 11.6, required]: A cast shall not be performed between pointer to void and an arithmetic type
  • +
+

All locations in the source code are marked with:

+
//lint -e(923) -e(9078) "cast from pointer to unsigned int" [MISRA Note 7]
+

Code example:

+
static osThreadId_t svcRtxThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr) {
+
:
+
void *stack_mem;
+
:
+
if (stack_mem != NULL) {
+
//lint -e(923) -e(9078) "cast from pointer to unsigned int" [MISRA Note 7]
+
if ((((uint32_t)stack_mem & 7U) != 0U) || (stack_size == 0U)) {
+
:
+

+[MISRA Note 8]: Memory allocation management

+

RTX5 implements memory allocation functions which require pointer arithmetic to manage memory. The structure with the type mem_block_t that is used to menage memory allocation blocks is defined in rtx_memory.c

+

This design decision implies the following MISRA deviations:

+
    +
  • [MISRA 2012 Rule 11.4, advisory]: A conversion should not be performed between a pointer to object and an integer type
  • +
  • [MISRA 2012 Rule 11.6, required]: A cast shall not be performed between pointer to void and an arithmetic type
  • +
+

All locations in the source code are marked with:

+
//lint -e(923) -e(9078) "cast from pointer to unsigned int" [MISRA Note 8]
+

The required pointer arithmetic is implemented in rtx_memory.c with the following function:

+
__STATIC_INLINE mem_block_t *MemBlockPtr (void *mem, uint32_t offset) {
+
uint32_t addr;
+
mem_block_t *ptr;
+
+
//lint --e{923} --e{9078} "cast between pointer and unsigned int" [MISRA Note 8]
+
addr = (uint32_t)mem + offset;
+
ptr = (mem_block_t *)addr;
+
+
return ptr;
+
}
+

+[MISRA Note 9]: Pointer conversions for register access

+

The CMSIS-Core peripheral register blocks are accessed using a structure. The memory address of this structure is specified as unsigned integer number. Pointer conversions are required to access the specific registers.

+

This design decision implies the following MISRA deviations:

+
    +
  • [MISRA 2012 Rule 11.4, advisory]: A conversion should not be performed between a pointer to object and an integer type
  • +
  • [MISRA 2012 Rule 11.6, required]: A cast shall not be performed between pointer to void and an arithmetic type
  • +
+

All locations in the source code are marked with:

+
//lint -emacro((923,9078),SCB) "cast from unsigned long to pointer" [MISRA Note 9]
+

Code example:

+
#define SCS_BASE (0xE000E000UL)
+
#define SCB ((SCB_Type *)SCB_BASE)
+
typedef struct {...} SCB_Type;
+
+
SCB->... = ...;
+

+[MISRA Note 10]: SVC calls use function-like macros

+

RTX5 is using SVC (Service Calls) to switch between thread mode (for user code execution) and handler mode (for RTOS kernel execution). The SVC function call mechanism is implemented with assembly instructions to construct the code for SVC. The source code uses C macros and are designed as C function-like macros to generate parameter passing for variables depending on macro parameters. An alternative replacement code would be complex. The C macros use multiple '##' operators however it has been verified that the order of evaluation is irrelevant and result of macro expansion is always predictable.

+

This design decision implies the following MISRA deviations:

+
    +
  • [MISRA 2012 Directive 4.9, advisory]: A function should be used in preference to a function-like macro where yet are interchangeable
  • +
  • [MISRA 2012 Rule 1.3, required]: There shall be no occurrence of undefined or critical unspecified behavior
  • +
  • [MISRA 2012 Rule 20.10, advisory]: The # and ## preprocessor operators should not be used
  • +
+

The relevant source code is in the file rtx_core_cm.h and is marked with:

+
//lint -save -e9023 -e9024 -e9026 "Function-like macros using '#/##'" [MISRA Note 10]
+

+[MISRA Note 11]: SVC calls use assembly code

+

The SVC (Service Call) functions are constructed as a mix of C and inline assembly as it is required to access CPU registers for parameter passing. The function parameters are mapped to the CPU registers R0..R3 and SVC function number to CPU register R12 (or R7). For assembly inter-working the function parameters are casted to unsigned int values.

+

The function return value after SVC call is mapped to the CPU register R0. Return value is casted from unsigned int to the target value.

+

It has been verified that this method has has no side-effects and is well defined.

+

This design decision implies the following MISRA deviations:

+
    +
  • [MISRA 2012 Rule 10.3, required]: Expression assigned to a narrower or different essential type
  • +
  • [MISRA 2012 Rule 10.5, advisory]: Impermissible cast; cannot cast from 'essentially unsigned' to 'essentially enum<i>'
  • +
  • [MISRA 2012 Rule 11.1, required]: Conversions shall not be performed between a pointer to a function and any other type
  • +
  • [MISRA 2012 Rule 11.4, advisory]: A conversion should not be performed between a pointer to object and an integer type
  • +
  • [MISRA 2012 Rule 11.6, required]: A cast shall not be performed between pointer to void and an arithmetic type
  • +
+

SVC functions are marked as library modules and not processed by PC-lint. The relevant source code is marked with:

+
//lint ++flb "Library Begin" [MISRA Note 11]
+
:
+
//lint --flb "Library End"
+

Code example:

+
// Service Calls definitions
+
//lint ++flb "Library Begin" [MISRA Note 11]
+
SVC0_1(Delay, osStatus_t, uint32_t)
+
SVC0_1(DelayUntil, osStatus_t, uint32_t)
+
//lint --flb "Library End"
+

PC-lint does not process ASM input/output operand lists and therefore falsely identifies issues:

+
    +
  • Last value assigned to variable not used
  • +
  • Symbol not subsequently referenced
  • +
+

+[MISRA Note 12]: Usage of exclusive access instructions

+

The RTX5 implementation uses the CPU instructions LDREX and STREX (when supported by the processor) to implement atomic operations. This atomic operations elimite the requirement for interrupt lock-outs. The atomic operations are implemented using inline assembly.

+

PC-lint cannot process assembler instructions including the input/output operand lists and therefore falsely identifies issues:

+
    +
  • Symbol not initialized
  • +
  • Symbol not subsequently referenced
  • +
  • Symbol not referenced
  • +
  • Pointer parameter could be declared as pointing to const
  • +
+

It has been verified that atomic operations have no side-effects and are well defined.

+

The functions that implement atomic instructions are marked as library modules and not processed by PC-lint. The relevant source code is marked with:

+
//lint ++flb "Library Begin" [MISRA Note 12]
+
:
+
//lint --flb "Library End"
+

+[MISRA Note 13]: Usage of Event Recorder

+

The Event Recorder is a generic event logger and the related functions are called to record an event. The function parameters are 32-bit id, 32-bit values, pointer to void (data) and are recorded as 32-bit numbers. The parameters for the Event Recorder may require cast opertions to unsigned int which however has no side-effects and is well defined.

+

The return value indicates success or failure. There is no need to check the return value since no action is taken when a Event Recorder function fail. The EventID macro (part of external Event Recorder) constructs the ID based on input parameters which are shifted, masked with '&' and combined with '|'. Zero value input parameters are valid and cause zero used with '&' and '|'.

+

The usage of the Event Recorder implies the following MISRA deviations:

+
    +
  • [MISRA 2012 Rule 11.1, required]: Conversions shall not be performed between a pointer to a function and any other type
  • +
  • [MISRA 2012 Rule 11.4, advisory]: A conversion should not be performed between a pointer to object and an integer type
  • +
  • [MISRA 2012 Rule 11.6, required]: A cast shall not be performed between pointer to void and an arithmetic type In addition PC-Lint issues:
  • +
  • Info 835: A zero has been given as left argument to operator '&'
  • +
  • Info 845: The right argument to operator '|' is certain to be 0
  • +
+

The functions that call the Event Recorder are in the module rtx_evr.c and the related PC-Lint messages are disabled with:

+
//lint -e923 -e9074 -e9078 -emacro((835,845),EventID) [MISRA Note 13]
+
+
+ + + + diff --git a/docs/RTOS2/html/modules.html b/docs/RTOS2/html/modules.html new file mode 100644 index 0000000..4e54e91 --- /dev/null +++ b/docs/RTOS2/html/modules.html @@ -0,0 +1,160 @@ + + + + + +Reference +CMSIS-RTOS2: Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Reference
+
+
+
Here is a list of all modules:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
oCMSIS-RTOS API v2C interface of CMSIS-RTOS C API v2 defined in cmsis_os2.h
|oMemory ManagementInformation about memory management possibilities
|oKernel Information and ControlProvides version/system information and starts/controls the RTOS Kernel
|oThread ManagementDefine, create, and control thread functions
|oThread FlagsSynchronize threads using flags
|oEvent FlagsSynchronize threads using event flags
|oGeneric Wait FunctionsWait for a certain period of time
|oTimer ManagementCreate and control timer and timer callback functions
|oMutex ManagementSynchronize resource access using Mutual Exclusion (Mutex)
|oSemaphoresAccess shared resources simultaneously from different threads
|oMemory PoolManage thread-safe fixed-size blocks of dynamic memory
|oMessage QueueExchange messages between threads in a FIFO-like operation
|\DefinitionsConstants and enumerations used by many CMSIS-RTOS functions
| \Flags Functions Error CodesConstants used by Thread Flags and Event Flags to return error codes
oOS Tick APISystem tick timer interface for periodic RTOS Kernel Ticks defined in os_tick.h
\RTX v5 Specific APIRTX v5 implementation specific definitions and functions defined in rtx_os.h
 oMacrosRTX5 macros
 oFunctionsRTX5 functions
 \Event functionsRTX5 Event Recorder functions
  oMemory FunctionsEvents generated memory functions
  oKernel FunctionsEvents generated by kernel functions
  oThread FunctionsEvents generated by thread functions
  oTimer FunctionsEvents generated by timer functions
  oEvent Flags FunctionsEvents generated by event flag functions
  oMutex FunctionsEvents generated by mutex functions
  oSemaphore FunctionsEvents generated by semaphore functions
  oMemory Pool FunctionsEvents generated by memory pool functions
  \Message Queue FunctionsEvents generated by message queue functions
+
+
+
+ + + + diff --git a/docs/RTOS2/html/modules.js b/docs/RTOS2/html/modules.js new file mode 100644 index 0000000..19f766f --- /dev/null +++ b/docs/RTOS2/html/modules.js @@ -0,0 +1,6 @@ +var modules = +[ + [ "CMSIS-RTOS API v2", "group__CMSIS__RTOS.html", "group__CMSIS__RTOS" ], + [ "OS Tick API", "group__CMSIS__RTOS__TickAPI.html", "group__CMSIS__RTOS__TickAPI" ], + [ "RTX v5 Specific API", "group__rtx5__specific.html", "group__rtx5__specific" ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/mutex_states.png b/docs/RTOS2/html/mutex_states.png new file mode 100644 index 0000000..5c10fd6 Binary files /dev/null and b/docs/RTOS2/html/mutex_states.png differ diff --git a/docs/RTOS2/html/nav_f.png b/docs/RTOS2/html/nav_f.png new file mode 100644 index 0000000..14c0de6 Binary files /dev/null and b/docs/RTOS2/html/nav_f.png differ diff --git a/docs/RTOS2/html/nav_g.png b/docs/RTOS2/html/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/docs/RTOS2/html/nav_g.png differ diff --git a/docs/RTOS2/html/nav_h.png b/docs/RTOS2/html/nav_h.png new file mode 100644 index 0000000..c8894af Binary files /dev/null and b/docs/RTOS2/html/nav_h.png differ diff --git a/docs/RTOS2/html/navtree.css b/docs/RTOS2/html/navtree.css new file mode 100644 index 0000000..41a9cb9 --- /dev/null +++ b/docs/RTOS2/html/navtree.css @@ -0,0 +1,143 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background:url("ftv2splitbar.png") repeat scroll right center transparent; + cursor:e-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/docs/RTOS2/html/navtree.js b/docs/RTOS2/html/navtree.js new file mode 100644 index 0000000..6e17c94 --- /dev/null +++ b/docs/RTOS2/html/navtree.js @@ -0,0 +1,553 @@ +var NAVTREE = +[ + [ "CMSIS-RTOS2", "index.html", [ + [ "Revision History", "rtos_revisionHistory.html", [ + [ "CMSIS-RTOS API Version 2", "rtos_revisionHistory.html#GenRTOS2Rev", null ], + [ "CMSIS-RTOS RTX Version 5", "rtos_revisionHistory.html#RTX5RevisionHistory", null ] + ] ], + [ "Generic RTOS Interface", "genRTOS2IF.html", [ + [ "cmsis_os2.h header file", "genRTOS2IF.html#cmsis_os2_h", null ], + [ "Using a CMSIS-RTOS2 Implementation", "genRTOS2IF.html#usingOS2", null ] + ] ], + [ "Function Overview", "functionOverview.html", "functionOverview" ], + [ "RTOS Validation", "rtosValidation.html", [ + [ "Sample Test Output", "rtosValidation.html#test_output", null ] + ] ], + [ "Migration from API v1 to API v2", "os2Migration.html", "os2Migration" ], + [ "RTX v5 Implementation", "rtx5_impl.html", "rtx5_impl" ], + [ "Coding Rules", "CodingRules.html", null ], + [ "Reference", "modules.html", "modules" ], + [ "Data Structures", "annotated.html", "annotated" ], + [ "Data Structure Index", "classes.html", null ], + [ "Data Fields", "functions.html", [ + [ "All", "functions.html", null ], + [ "Variables", "functions_vars.html", null ] + ] ] + ] ] +]; + +var NAVTREEINDEX = +[ +"CodingRules.html", +"group__CMSIS__RTOS__ThreadMgmt.html#gad4e3e0971b41f2d17584a8c6837342ec", +"misraCompliance5.html#MISRA_9", +"structosRtxInfo__t_8timer.html" +]; + +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; +var navTreeSubIndices = new Array(); + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("img"); + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.width = 16; + imgNode.height = 22; + imgNode.border = 0; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.src = node.relpath+"ftv2pnode.png"; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + imgNode.src = node.relpath+"ftv2pnode.png"; + } else { + var span = document.createElement("span"); + span.style.display = 'inline-block'; + span.style.width = 16*(level+1)+'px'; + span.style.height = '22px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + if (anchor.parent().attr('class')=='memItemLeft' || + anchor.parent().attr('class')=='fieldtype' || + anchor.parent().is(':header')) + { + pos = anchor.parent().position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath($(location).attr('pathname')); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = $(location).attr('hash'); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+ + window.location.hash.substring(1)+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parents().slice(2).prop('tagName')=='TR') { + glowEffect(anchor.parents('div.memitem'),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath($(location).attr('pathname'))+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1]; + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + //root=root.replace(/_source\./,'.'); // source link to doc link + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2($(location).attr('pathname'))+$(location).attr('hash')); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("img"); + o.node.plus_img.src = relpath+"ftv2pnode.png"; + o.node.plus_img.width = 16; + o.node.plus_img.height = 22; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,window.location.hash,relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath($(location).attr('pathname'))+':'+ + $(location).attr('hash').substring(1); + a=$('.item a[class$="'+clslink+'"]'); + } + if (a==null || !$(a).parent().parent().hasClass('selected')){ + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + } + var link=stripPath2($(location).attr('pathname')); + navTo(o,link,$(location).attr('hash'),relpath); + } else if (!animationInProgress) { + $('#doc-content').scrollTop(0); + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + navTo(o,toroot,window.location.hash,relpath); + } + }) +} + diff --git a/docs/RTOS2/html/navtreeindex0.js b/docs/RTOS2/html/navtreeindex0.js new file mode 100644 index 0000000..752ad2e --- /dev/null +++ b/docs/RTOS2/html/navtreeindex0.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX0 = +{ +"CodingRules.html":[6], +"annotated.html":[8], +"classes.html":[9], +"cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a0545c92c18ce8e6b24e82a0d694a0b4a":[7,0,1,1,5], +"cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a0596c6e14113447604753656417c9a24":[7,0,1,1,1], +"cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a2ad3e5912db47b497529d036c89e7995":[7,0,1,1,0], +"cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a2fe382ad5ebab2257b35740414b28b01":[7,0,1,1,3], +"cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a8e0b699fbe1c8bb66fefadd5911cb6ce":[7,0,1,1,2], +"cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4ab0a47576defa29396a649d9173d4bc4b":[7,0,1,1,6], +"cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4ad364464ad84d63b1413a9ac8a962390c":[7,0,1,1,4], +"cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea21635bdc492d3094fe83027fa4a30e2f":[7,0,11,5,6], +"cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea66cc9ce9106b508df0e4a733a55a439d":[7,0,11,5,7], +"cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea8fc5801e8b0482bdf22ad63a77f0155d":[7,0,11,5,3], +"cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea913eb5df15ad85f8557eb3a456b56879":[7,0,11,5,2], +"cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea9e1c9e2550bb4de8969a935acffc968f":[7,0,11,5,0], +"cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eabb7b2d2c4efa66df42f1c10635467b09":[7,0,11,5,1], +"cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eac24adca6a5d072c9f01c32178ba0d109":[7,0,11,5,4], +"cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eaf1fac0240218e51eb30a13da2f8aae81":[7,0,11,5,5], +"cmsis__os2_8h.html#gad3dc89e942e38d9f3af858a0269a820da8872f7e352370eb11ee772c7dcca6e6c":[7,0,2,5,6], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca049abd04f8951415407ec9d92bd9b80b":[7,0,2,6,25], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca0b15518b0b5321a29efa0b42b2f8c759":[7,0,2,6,37], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca0bcd9ad1e7a02e3bf03be7dcc8ece38e":[7,0,2,6,15], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca1485dec3702434a1ec3cb74c7a17a4af":[7,0,2,6,42], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca17b36cd9cd38652c2bc6d4803990674b":[7,0,2,6,26], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca17b7a7e6febf12444a84e90edfce36cb":[7,0,2,6,35], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca193b650117c209b4a203954542bcc3e6":[7,0,2,6,10], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca19c013690d0d6bf3ac90707942be3fdf":[7,0,2,6,13], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca19e96f2b025b6462a43b1965043c8205":[7,0,2,6,20], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca28ccb07942c16f5f5efefb6cf68a7f50":[7,0,2,6,5], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca36931ad6cee5e4700e2c8622bdd2cd24":[7,0,2,6,14], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca3e70c19e03d5a54e66bd071f0776782c":[7,0,2,6,19], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca3f2261e5e733e92844ae8c630f2f9eaa":[7,0,2,6,45], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca402bd7ab26fb57c8cee8cf94168f4c91":[7,0,2,6,21], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca40a120cf8bbc42e575455c027f3d9b03":[7,0,2,6,36], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca45a2895ad30c79fb97de18cac7cc19f1":[7,0,2,6,18], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca4f081d6735bf2f513338b07eddf13ae3":[7,0,2,6,12], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5714dda6effc1a3f8ec155d97e3e69bc":[7,0,2,6,40], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5960841bfbdd959b163429e8502ea4e9":[7,0,2,6,39], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5a4a4f26d5b220a968e221e854f69a81":[7,0,2,6,6], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5b151ebba7fdeb1baaa9b7b420890b7a":[7,0,2,6,9], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca61cb822239ac8f66dfbdc7291598a3d4":[7,0,2,6,2], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca61e6ce27e1e0f34f2540b413b8a8b207":[7,0,2,6,32], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca63ad0cc52a701ef3d9df52b59b995652":[7,0,2,6,41], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca68f3f6fdaa639de300277802aa13a0ab":[7,0,2,6,23], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca6c437c7185161a3bd1e7e4669dfa17a3":[7,0,2,6,0], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca6ccac37d7dae4586a2031966d36a63ec":[7,0,2,6,30], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca78ad5d00aa07a2b4bf30a639544f5507":[7,0,2,6,4], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca80ae9d0dd256312c0c8f44af48316194":[7,0,2,6,48], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca8221eb0d059726a6309f1f2d0cdb6204":[7,0,2,6,24], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca901acf86070e06f5990b611734ee2562":[7,0,2,6,28], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca9138da7187690b15f52d8e5729c18da5":[7,0,2,6,11], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca914433934143a9ba767e59577c56e6c2":[7,0,2,6,34], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca93ef07d3a107aeee6508bfd29ba3485d":[7,0,2,6,22], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaa76da6825c4bd31c4958200bc289103b":[7,0,2,6,49], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecab18e3bda7b5e418e309a62d6267ea14b":[7,0,2,6,17], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecab832bd9de84e5eec2ecad69d085dadff":[7,0,2,6,44], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaba2b6919f0b630c8c1b2c940e3bfadbe":[7,0,2,6,3], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecabd3cc7df5b92b752ddf1e7843a786c05":[7,0,2,6,16], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecabfeafc713edfc7b9130aa5c762d68998":[7,0,2,6,27], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecac0f188468664d06d4cd9e6e1ed351393":[7,0,2,6,8], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecac86c171f8d466cced0cb1b03bb03343b":[7,0,2,6,52], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecad566b876b64e6efdc3eba0fc04e54013":[7,0,2,6,29], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecad69b8c14809bc5bdce4887f5a57d9353":[7,0,2,6,7], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecadbbb0fed3ada6b9b50d4a628abc2a67d":[7,0,2,6,33], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecae35f5e2f9c64ad346822521b643bdea4":[7,0,2,6,51], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecae36e8b38ee046a3104bcccabb10cf78c":[7,0,2,6,31], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaf614e3dc966d559cd9d9d2a0f78ebe70":[7,0,2,6,46], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaf685a06b30f0635476e21347a986305b":[7,0,2,6,43], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecafe5a4f393fab04551ac7d93e80cdf0fb":[7,0,2,6,38], +"cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaff84f31ceff203c711fb9476443507df":[7,0,2,6,47], +"config_rtx5.html":[5,2], +"config_rtx5.html#eventFlagsConfig":[5,2,3], +"config_rtx5.html#eventFlagsConfig_obj":[5,2,3,0], +"config_rtx5.html#evtrecConfig":[5,2,8], +"config_rtx5.html#evtrecConfigEvtGen":[5,2,8,1], +"config_rtx5.html#evtrecConfigGlobIni":[5,2,8,0], +"config_rtx5.html#memPoolConfig":[5,2,6], +"config_rtx5.html#memPoolConfig_obj":[5,2,6,0], +"config_rtx5.html#msgQueueConfig":[5,2,7], +"config_rtx5.html#msgQueueConfig_obj":[5,2,7,0], +"config_rtx5.html#mutexConfig":[5,2,4], +"config_rtx5.html#mutexConfig_obj":[5,2,4,0], +"config_rtx5.html#semaphoreConfig":[5,2,5], +"config_rtx5.html#semaphoreConfig_obj":[5,2,5,0], +"config_rtx5.html#systemConfig":[5,2,0], +"config_rtx5.html#systemConfig_event_recording":[5,2,8,2], +"config_rtx5.html#systemConfig_glob_mem":[5,2,0,0], +"config_rtx5.html#systemConfig_isr_fifo":[5,2,0,2], +"config_rtx5.html#systemConfig_rr":[5,2,0,1], +"config_rtx5.html#systemConfig_usage_counters":[5,2,0,3], +"config_rtx5.html#threadConfig":[5,2,1], +"config_rtx5.html#threadConfig_countstack":[5,2,1,0], +"config_rtx5.html#threadConfig_ovfcheck":[5,2,1,1], +"config_rtx5.html#threadConfig_procmode":[5,2,1,3], +"config_rtx5.html#threadConfig_watermark":[5,2,1,2], +"config_rtx5.html#timerConfig":[5,2,2], +"config_rtx5.html#timerConfig_obj":[5,2,2,0], +"config_rtx5.html#timerConfig_user":[5,2,2,1], +"cre_rtx_proj.html":[5,0], +"cre_rtx_proj.html#cre_UsingIRQs":[5,0,1], +"cre_rtx_proj.html#cre_rtx_cortexa":[5,0,0], +"cre_rtx_proj.html#cre_rtx_proj_er":[5,0,3], +"cre_rtx_proj.html#cre_rtx_proj_specifics":[5,0,2], +"creating_RTX5_LIB.html":[5,3], +"functionOverview.html":[2], +"functions.html":[10,0], +"functions_vars.html":[10,1], +"genRTOS2IF.html":[1], +"genRTOS2IF.html#cmsis_os2_h":[1,0], +"genRTOS2IF.html#usingOS2":[1,1], +"group__CMSIS__RTOS.html":[7,0], +"group__CMSIS__RTOS__Definitions.html":[7,0,11], +"group__CMSIS__RTOS__Definitions.html#ga18e63587b8450d5b8798b6f6ec04e012":[7,0,11,2], +"group__CMSIS__RTOS__Definitions.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813e":[7,0,11,5], +"group__CMSIS__RTOS__Definitions.html#ga8b6f562736fbfb5428940e0c017dec24":[7,0,11,3], +"group__CMSIS__RTOS__Definitions.html#ga9eb9a7a797a42e4b55eb171ecc609ddb":[7,0,11,1], +"group__CMSIS__RTOS__Definitions.html#gaade844a42237d8c37569d4d9b16b9f1c":[7,0,11,4], +"group__CMSIS__RTOS__EventFlags.html":[7,0,4], +"group__CMSIS__RTOS__EventFlags.html#a1e100dc33d403841ed3c344e3397868e":[7,0,4,0,2], +"group__CMSIS__RTOS__EventFlags.html#a6e93b49cb79c12f768d72580c7731f30":[7,0,4,0,1], +"group__CMSIS__RTOS__EventFlags.html#aa55a4335d12dc2785dc00fdc292d1159":[7,0,4,0,3], +"group__CMSIS__RTOS__EventFlags.html#ab74e6bf80237ddc4109968cedc58c151":[7,0,4,0,0], +"group__CMSIS__RTOS__EventFlags.html#ga33b71d14cecf90b4e72639dd19f23a5e":[7,0,4,3], +"group__CMSIS__RTOS__EventFlags.html#ga52acb34a8322e58020227344fe662b4e":[7,0,4,6], +"group__CMSIS__RTOS__EventFlags.html#ga59f4ddf0ee8c395b1672bb978d1cfc88":[7,0,4,8], +"group__CMSIS__RTOS__EventFlags.html#ga7c4acf2fb0d506ec82905dee53fb5435":[7,0,4,7], +"group__CMSIS__RTOS__EventFlags.html#ga8bda3185f46bfd278cea8a6cf357677d":[7,0,4,5], +"group__CMSIS__RTOS__EventFlags.html#ga93bf258ca0007c6641fbe8e4f2b8a1e5":[7,0,4,4], +"group__CMSIS__RTOS__EventFlags.html#gab14b1caeb12ffa42cce1bfe889cd07df":[7,0,4,2], +"group__CMSIS__RTOS__EventFlags.html#gafdbab933146d6d81d7cca7287e267a50":[7,0,4,1], +"group__CMSIS__RTOS__EventFlags.html#structosEventFlagsAttr__t":[7,0,4,0], +"group__CMSIS__RTOS__KernelCtrl.html":[7,0,1], +"group__CMSIS__RTOS__KernelCtrl.html#a76a1ef1a4d3d9bd3e70783051f22a6d3":[7,0,1,0,0], +"group__CMSIS__RTOS__KernelCtrl.html#ad8075d3f42141346ae2c56389358f9e7":[7,0,1,0,1], +"group__CMSIS__RTOS__KernelCtrl.html#ga08326469274b668140ca934b168a5ad4":[7,0,1,1], +"group__CMSIS__RTOS__KernelCtrl.html#ga48b69b81012fce051f639be288b243ba":[7,0,1,4], +"group__CMSIS__RTOS__KernelCtrl.html#ga4d69215a93220f72be3684cad582f16a":[7,0,1,14], +"group__CMSIS__RTOS__KernelCtrl.html#ga6f7764e7250c5c5364c00c45a5d1d199":[7,0,1,3], +"group__CMSIS__RTOS__KernelCtrl.html#ga7a8d7bd927eaaa58999f91d7d6310cee":[7,0,1,12], +"group__CMSIS__RTOS__KernelCtrl.html#ga84bcdbf2fb76b10c8df4e439f0c7e11b":[7,0,1,11], +"group__CMSIS__RTOS__KernelCtrl.html#ga8c4b4d7ed34cab73c001665d9176aced":[7,0,1,10], +"group__CMSIS__RTOS__KernelCtrl.html#ga948609ee930d9b38336b9e1c2a4dfe12":[7,0,1,6], +"group__CMSIS__RTOS__KernelCtrl.html#ga9ae2cc00f0d89d7b6a307bba942b5221":[7,0,1,5], +"group__CMSIS__RTOS__KernelCtrl.html#gae0fcaff6cecfb4013bb556c87afcd7d2":[7,0,1,13], +"group__CMSIS__RTOS__KernelCtrl.html#gae26683e1606ec633354a2876c68f0c1f":[7,0,1,9], +"group__CMSIS__RTOS__KernelCtrl.html#gae7d0a71b9586cbbb49fcbdf6a04f0289":[7,0,1,8], +"group__CMSIS__RTOS__KernelCtrl.html#gae818f6611d25ba3140bede410a52d659":[7,0,1,2], +"group__CMSIS__RTOS__KernelCtrl.html#gaf401728b4657456198c33fe75f8d6720":[7,0,1,7], +"group__CMSIS__RTOS__KernelCtrl.html#structosVersion__t":[7,0,1,0], +"group__CMSIS__RTOS__MemoryMgmt.html":[7,0,0], +"group__CMSIS__RTOS__Message.html":[7,0,10], +"group__CMSIS__RTOS__Message.html#a1e100dc33d403841ed3c344e3397868e":[7,0,10,0,2], +"group__CMSIS__RTOS__Message.html#a4e208dc0fb049b42c4b90cbd2791c5ad":[7,0,10,0,4], +"group__CMSIS__RTOS__Message.html#a6e93b49cb79c12f768d72580c7731f30":[7,0,10,0,1], +"group__CMSIS__RTOS__Message.html#aa55a4335d12dc2785dc00fdc292d1159":[7,0,10,0,3], +"group__CMSIS__RTOS__Message.html#ab74e6bf80237ddc4109968cedc58c151":[7,0,10,0,0], +"group__CMSIS__RTOS__Message.html#ac1cc09f875e20c926920b57bb83c70ee":[7,0,10,0,5], +"group__CMSIS__RTOS__Message.html#ga24e895a00f9d484db33aaf784c57bfed":[7,0,10,1], +"group__CMSIS__RTOS__Message.html#ga6a32ac394fcff568b251c160cc3014b2":[7,0,10,7], +"group__CMSIS__RTOS__Message.html#ga96d3d84069b20359de48109e28a1a89e":[7,0,10,6], +"group__CMSIS__RTOS__Message.html#gaa515fc8b956f721a8f72b2c505813bfc":[7,0,10,3], +"group__CMSIS__RTOS__Message.html#gaba987f665444e0d83fa6a3a68bc72abe":[7,0,10,10], +"group__CMSIS__RTOS__Message.html#gac24f87d4f395e9e9c900c320e45ade8a":[7,0,10,5], +"group__CMSIS__RTOS__Message.html#gac6dce7f9ad132d266292c2e979d861b4":[7,0,10,9], +"group__CMSIS__RTOS__Message.html#gad90d4959466a7a65105061da8256ab9e":[7,0,10,4], +"group__CMSIS__RTOS__Message.html#gaddf0904427436dd3880d46263c2dc9fa":[7,0,10,8], +"group__CMSIS__RTOS__Message.html#gae7cf7bf2b97a5ae481fb60fcce99247a":[7,0,10,2], +"group__CMSIS__RTOS__Message.html#structosMessageQueueAttr__t":[7,0,10,0], +"group__CMSIS__RTOS__MutexMgmt.html":[7,0,7], +"group__CMSIS__RTOS__MutexMgmt.html#a1e100dc33d403841ed3c344e3397868e":[7,0,7,0,2], +"group__CMSIS__RTOS__MutexMgmt.html#a6e93b49cb79c12f768d72580c7731f30":[7,0,7,0,1], +"group__CMSIS__RTOS__MutexMgmt.html#aa55a4335d12dc2785dc00fdc292d1159":[7,0,7,0,3], +"group__CMSIS__RTOS__MutexMgmt.html#ab74e6bf80237ddc4109968cedc58c151":[7,0,7,0,0], +"group__CMSIS__RTOS__MutexMgmt.html#ga00b5e58cd247a412d1afd18732d8b752":[7,0,7,6], +"group__CMSIS__RTOS__MutexMgmt.html#ga313801836c62deb23055efb55a420e42":[7,0,7,4], +"group__CMSIS__RTOS__MutexMgmt.html#ga40fba270cb31a977b3bd551d41eb9599":[7,0,7,2], +"group__CMSIS__RTOS__MutexMgmt.html#ga65c2482cc64a35d03871f3180f305926":[7,0,7,1], +"group__CMSIS__RTOS__MutexMgmt.html#ga7f9a7666df0978738cd570cb700b83fb":[7,0,7,9], +"group__CMSIS__RTOS__MutexMgmt.html#gab90920022ab944296821368ef6bb52f8":[7,0,7,5], +"group__CMSIS__RTOS__MutexMgmt.html#gabc54686ea0fc281823b1763422d2a924":[7,0,7,7], +"group__CMSIS__RTOS__MutexMgmt.html#gabee73ad227ba4587d3db12ef9bd582bc":[7,0,7,10], +"group__CMSIS__RTOS__MutexMgmt.html#gaea629705703580ff58776bf73c8db915":[7,0,7,8], +"group__CMSIS__RTOS__MutexMgmt.html#gaf0e1dee376798b4d516d164981526780":[7,0,7,3], +"group__CMSIS__RTOS__MutexMgmt.html#structosMutexAttr__t":[7,0,7,0], +"group__CMSIS__RTOS__PoolMgmt.html":[7,0,9], +"group__CMSIS__RTOS__PoolMgmt.html#a1e100dc33d403841ed3c344e3397868e":[7,0,9,0,2], +"group__CMSIS__RTOS__PoolMgmt.html#a5799465cca9c71c5587ceb0986f5b06a":[7,0,9,0,4], +"group__CMSIS__RTOS__PoolMgmt.html#a66c26015c0ac8e88a4ad907c120aee4f":[7,0,9,0,5], +"group__CMSIS__RTOS__PoolMgmt.html#a6e93b49cb79c12f768d72580c7731f30":[7,0,9,0,1], +"group__CMSIS__RTOS__PoolMgmt.html#aa55a4335d12dc2785dc00fdc292d1159":[7,0,9,0,3], +"group__CMSIS__RTOS__PoolMgmt.html#ab74e6bf80237ddc4109968cedc58c151":[7,0,9,0,0], +"group__CMSIS__RTOS__PoolMgmt.html#ga0394cffa9479a7994e3b03c79c1cb909":[7,0,9,9], +"group__CMSIS__RTOS__PoolMgmt.html#ga2e44473caf338266f56800960294f960":[7,0,9,1], +"group__CMSIS__RTOS__PoolMgmt.html#ga497ced5d72dc5cd405c4c418516220dc":[7,0,9,2], +"group__CMSIS__RTOS__PoolMgmt.html#ga8c39e7e5cd2b9eda907466808e59d62e":[7,0,9,10], +"group__CMSIS__RTOS__PoolMgmt.html#ga8ead54e99ccb8f112356c88f99d38fbe":[7,0,9,4], +"group__CMSIS__RTOS__PoolMgmt.html#ga958a9449bff8c95ce213de98eef5739d":[7,0,9,8], +"group__CMSIS__RTOS__PoolMgmt.html#gab2bf059b7fa7679c3cccdaeec60b6c0e":[7,0,9,7], +"group__CMSIS__RTOS__PoolMgmt.html#gab414a1e138205a55820acfa277c8f386":[7,0,9,3], +"group__CMSIS__RTOS__PoolMgmt.html#gabb4f4560daa6d1f8c8789082ee186d16":[7,0,9,5], +"group__CMSIS__RTOS__PoolMgmt.html#gad696e94bfbe28f0b6613f9303fdf6a37":[7,0,9,6], +"group__CMSIS__RTOS__PoolMgmt.html#structosMemoryPoolAttr__t":[7,0,9,0], +"group__CMSIS__RTOS__SemaphoreMgmt.html":[7,0,8], +"group__CMSIS__RTOS__SemaphoreMgmt.html#a1e100dc33d403841ed3c344e3397868e":[7,0,8,0,2], +"group__CMSIS__RTOS__SemaphoreMgmt.html#a6e93b49cb79c12f768d72580c7731f30":[7,0,8,0,1], +"group__CMSIS__RTOS__SemaphoreMgmt.html#aa55a4335d12dc2785dc00fdc292d1159":[7,0,8,0,3], +"group__CMSIS__RTOS__SemaphoreMgmt.html#ab74e6bf80237ddc4109968cedc58c151":[7,0,8,0,0], +"group__CMSIS__RTOS__SemaphoreMgmt.html#ga0abcee1b5449d7a6928fb9248c690bb6":[7,0,8,5], +"group__CMSIS__RTOS__SemaphoreMgmt.html#ga2a39806ace781a0008a4374ca701b14a":[7,0,8,2], +"group__CMSIS__RTOS__SemaphoreMgmt.html#ga6e1c1c4b04175bb92b013c8f37249f40":[7,0,8,1], +"group__CMSIS__RTOS__SemaphoreMgmt.html#ga7559d4dff3cda9992fc5ab5de3e74c70":[7,0,8,6], +"group__CMSIS__RTOS__SemaphoreMgmt.html#ga7e94c8b242a0c81f2cc79ec22895c87b":[7,0,8,4], +"group__CMSIS__RTOS__SemaphoreMgmt.html#ga81258ce9c67fa89f07cc49d2e136cd88":[7,0,8,7], +"group__CMSIS__RTOS__SemaphoreMgmt.html#ga9586952051f00285f1482dbe6695bbc4":[7,0,8,3], +"group__CMSIS__RTOS__SemaphoreMgmt.html#structosSemaphoreAttr__t":[7,0,8,0], +"group__CMSIS__RTOS__ThreadFlagsMgmt.html":[7,0,3], +"group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga656abc1c862c5b9a2b13584c42cc0bfa":[7,0,3,1], +"group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga6f89ef9caded1d9963c7b12b0f6412c9":[7,0,3,0], +"group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga85c8d2c89466e25abbcb545d9ddd71ba":[7,0,3,2], +"group__CMSIS__RTOS__ThreadFlagsMgmt.html#gac11542ad6300b600f872fc96e340ec2b":[7,0,3,3], +"group__CMSIS__RTOS__ThreadMgmt.html":[7,0,2], +"group__CMSIS__RTOS__ThreadMgmt.html#a1e100dc33d403841ed3c344e3397868e":[7,0,2,0,2], +"group__CMSIS__RTOS__ThreadMgmt.html#a66f538babc389986738ec70104e0562b":[7,0,2,0,8], +"group__CMSIS__RTOS__ThreadMgmt.html#a697f2aad6119d655d212ea10245ae394":[7,0,2,0,7], +"group__CMSIS__RTOS__ThreadMgmt.html#a6a5183df4c54c3e28dc8dc704f2487d5":[7,0,2,0,6], +"group__CMSIS__RTOS__ThreadMgmt.html#a6e93b49cb79c12f768d72580c7731f30":[7,0,2,0,1], +"group__CMSIS__RTOS__ThreadMgmt.html#aa55a4335d12dc2785dc00fdc292d1159":[7,0,2,0,3], +"group__CMSIS__RTOS__ThreadMgmt.html#aacbc9a219f2d6870e9ce89bb93f975c9":[7,0,2,0,5], +"group__CMSIS__RTOS__ThreadMgmt.html#ab74e6bf80237ddc4109968cedc58c151":[7,0,2,0,0], +"group__CMSIS__RTOS__ThreadMgmt.html#ad7c9b42355a4c8b9467130ab3fb19e43":[7,0,2,0,4], +"group__CMSIS__RTOS__ThreadMgmt.html#ga0aeaf349604f456e68e78f9d3b42e44b":[7,0,2,20], +"group__CMSIS__RTOS__ThreadMgmt.html#ga249499c519f3f8eef5673009ab6cfcbe":[7,0,2,1], +"group__CMSIS__RTOS__ThreadMgmt.html#ga2f8ba6dba6e9c065a6e236ffd410d74a":[7,0,2,27], +"group__CMSIS__RTOS__ThreadMgmt.html#ga3dbad90eff394b02de76a452c84c5d80":[7,0,2,23], +"group__CMSIS__RTOS__ThreadMgmt.html#ga3fca90fb0679afeb968aa8c3d5874487":[7,0,2,25], +"group__CMSIS__RTOS__ThreadMgmt.html#ga48d68b8666d99d28fa646ee1d2182b8f":[7,0,2,15], +"group__CMSIS__RTOS__ThreadMgmt.html#ga495b3f812224e7301f23a691793765db":[7,0,2,30], +"group__CMSIS__RTOS__ThreadMgmt.html#ga5606604d56e21ece1a654664be877439":[7,0,2,31], +"group__CMSIS__RTOS__ThreadMgmt.html#ga861a420fb2d643115b06622903fb3bfb":[7,0,2,19], +"group__CMSIS__RTOS__ThreadMgmt.html#ga8df03548e89fbc56402a5cd584a505da":[7,0,2,17], +"group__CMSIS__RTOS__ThreadMgmt.html#ga9c83bd5dd8de329701775d6ef7012720":[7,0,2,29], +"group__CMSIS__RTOS__ThreadMgmt.html#gaa6c32fe2a3e0a2e01f212d55b02e51c7":[7,0,2,4], +"group__CMSIS__RTOS__ThreadMgmt.html#gaa9336c1073858d6b118e2e011636246f":[7,0,2,2], +"group__CMSIS__RTOS__ThreadMgmt.html#gaa9de419d0152bf77e9bbcd1f369fb990":[7,0,2,22], +"group__CMSIS__RTOS__ThreadMgmt.html#gaaad14cd9547341ea8109dc4e8540f1dc":[7,0,2,24], +"group__CMSIS__RTOS__ThreadMgmt.html#gab9f8bd715d671c6ee27644867bc1bf65":[7,0,2,28], +"group__CMSIS__RTOS__ThreadMgmt.html#gac3230f3a55a297514b013ebf38f27e0a":[7,0,2,16], +"group__CMSIS__RTOS__ThreadMgmt.html#gacc0a98b42f0a5928e12dc91dc76866b9":[7,0,2,18], +"group__CMSIS__RTOS__ThreadMgmt.html#gad01c7ec26535b1de6b018bb9466720e2":[7,0,2,21], +"group__CMSIS__RTOS__ThreadMgmt.html#gad3dc89e942e38d9f3af858a0269a820d":[7,0,2,5] +}; diff --git a/docs/RTOS2/html/navtreeindex1.js b/docs/RTOS2/html/navtreeindex1.js new file mode 100644 index 0000000..406646c --- /dev/null +++ b/docs/RTOS2/html/navtreeindex1.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX1 = +{ +"group__CMSIS__RTOS__ThreadMgmt.html#gad4e3e0971b41f2d17584a8c6837342ec":[7,0,2,6], +"group__CMSIS__RTOS__ThreadMgmt.html#gadd51f99a6eb50b94eee75f27cae815eb":[7,0,2,3], +"group__CMSIS__RTOS__ThreadMgmt.html#gaddaa452dd7610e4096647a566d3556fc":[7,0,2,26], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da339313e26613bc12f66a852e2ff8745e":[7,0,2,5,5], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da339313e26613bc12f66a852e2ff8745e":[7,0,2,12], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da59e286915944fe0e4d1ffdb1f2946f14":[7,0,2,5,1], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da59e286915944fe0e4d1ffdb1f2946f14":[7,0,2,8], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dac4fe336e0790188fcf7d667372eca19d":[7,0,2,5,2], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dac4fe336e0790188fcf7d667372eca19d":[7,0,2,9], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dad5b2726c2d0228f4f1a76cf6b630963c":[7,0,2,5,4], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dad5b2726c2d0228f4f1a76cf6b630963c":[7,0,2,11], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dae9d77830b6866e287417b6e1d983e971":[7,0,2,5,0], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dae9d77830b6866e287417b6e1d983e971":[7,0,2,7], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820daf0e992e354fba8695957c530226a4968":[7,0,2,5,3], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820daf0e992e354fba8695957c530226a4968":[7,0,2,10], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342eca4b4fa46c3ebaf4259662a0a0a3173b7f":[7,0,2,6,50], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342eca4b4fa46c3ebaf4259662a0a0a3173b7f":[7,0,2,14], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342ecacd5864eac01a6916a7c866bb51a6aac1":[7,0,2,6,1], +"group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342ecacd5864eac01a6916a7c866bb51a6aac1":[7,0,2,13], +"group__CMSIS__RTOS__ThreadMgmt.html#structosThreadAttr__t":[7,0,2,0], +"group__CMSIS__RTOS__TickAPI.html":[7,1], +"group__CMSIS__RTOS__TickAPI.html#ga123151dc19d5a94a68f12cdbf61a9bb5":[7,1,6], +"group__CMSIS__RTOS__TickAPI.html#ga1f9a593126b7f0b66fc526c2cebd6192":[7,1,8], +"group__CMSIS__RTOS__TickAPI.html#ga3e47971bf3a02599d9ecb32208adafec":[7,1,1], +"group__CMSIS__RTOS__TickAPI.html#ga57065ec4b281504ad4de13a419870b4f":[7,1,3], +"group__CMSIS__RTOS__TickAPI.html#ga5e325c304fef5003b1dc31906f6a3056":[7,1,2], +"group__CMSIS__RTOS__TickAPI.html#ga5eeffb4d9dc6c6802fee8898096d9a59":[7,1,0], +"group__CMSIS__RTOS__TickAPI.html#ga936217ea28236fb57648973e0d8f627a":[7,1,5], +"group__CMSIS__RTOS__TickAPI.html#gaa64a145a554f1e5077848938d7f39c92":[7,1,7], +"group__CMSIS__RTOS__TickAPI.html#gaa8b4eca23e3ffe2df403291958cdc905":[7,1,4], +"group__CMSIS__RTOS__TimerMgmt.html":[7,0,6], +"group__CMSIS__RTOS__TimerMgmt.html#a1e100dc33d403841ed3c344e3397868e":[7,0,6,0,2], +"group__CMSIS__RTOS__TimerMgmt.html#a6e93b49cb79c12f768d72580c7731f30":[7,0,6,0,1], +"group__CMSIS__RTOS__TimerMgmt.html#aa55a4335d12dc2785dc00fdc292d1159":[7,0,6,0,3], +"group__CMSIS__RTOS__TimerMgmt.html#ab74e6bf80237ddc4109968cedc58c151":[7,0,6,0,0], +"group__CMSIS__RTOS__TimerMgmt.html#ga4f82a98eee4d9ea79507e44340d3d319":[7,0,6,7], +"group__CMSIS__RTOS__TimerMgmt.html#ga69d3589f54194022c30dd01e45ec6741":[7,0,6,10], +"group__CMSIS__RTOS__TimerMgmt.html#ga7dc24a4c2b90334427081c3da7a71915":[7,0,6,3], +"group__CMSIS__RTOS__TimerMgmt.html#gaacf768c1ec64b020598afb985d7b30be":[7,0,6,2], +"group__CMSIS__RTOS__TimerMgmt.html#gaad5409379689ee27bb0a0b56ea4a4b34":[7,0,6,1], +"group__CMSIS__RTOS__TimerMgmt.html#gab6ee2859ea657641b7adfac599b8121d":[7,0,6,8], +"group__CMSIS__RTOS__TimerMgmt.html#gabd7a89356da7717293eb0bc5d87b8ac9":[7,0,6,9], +"group__CMSIS__RTOS__TimerMgmt.html#gad0001dd74721ab461789324806db2453":[7,0,6,11], +"group__CMSIS__RTOS__TimerMgmt.html#gad4e7f785c5f700a509f55a3bf6a62bec":[7,0,6,6], +"group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915a2e0e1f31c742c84b497c4d7143357bdb":[7,0,6,3,0], +"group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915a2e0e1f31c742c84b497c4d7143357bdb":[7,0,6,4], +"group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915ab3463d921dc310938094745c230f2b35":[7,0,6,3,1], +"group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915ab3463d921dc310938094745c230f2b35":[7,0,6,5], +"group__CMSIS__RTOS__TimerMgmt.html#structosTimerAttr__t":[7,0,6,0], +"group__CMSIS__RTOS__Wait.html":[7,0,5], +"group__CMSIS__RTOS__Wait.html#ga3c807924c2d6d43bc2ffb49da3f7f3a1":[7,0,5,1], +"group__CMSIS__RTOS__Wait.html#gaf6055a51390ef65b6b6edc28bf47322e":[7,0,5,0], +"group__flags__error__codes.html":[7,0,11,0], +"group__flags__error__codes.html#ga2e951c3f1c3b7bff4eca3d7836cd19ca":[7,0,11,0,1], +"group__flags__error__codes.html#ga3b1d9fbb83d64eedb62f831c9be647c3":[7,0,11,0,0], +"group__flags__error__codes.html#ga4db38b50da1889bcaaa7f747e844f904":[7,0,11,0,2], +"group__flags__error__codes.html#gaa8a95ef938f8f5a9fcb815ec53184f77":[7,0,11,0,3], +"group__flags__error__codes.html#gaea3abd186643f539877e894b62b63448":[7,0,11,0,4], +"group__rtx5__specific.html":[7,2], +"group__rtx5__specific__defines.html":[7,2,0], +"group__rtx5__specific__defines.html#ga0949b67063d0bd427fbee9c816b5d45a":[7,2,0,4], +"group__rtx5__specific__defines.html#ga14a24724f6e87744ba84674ef76e4256":[7,2,0,12], +"group__rtx5__specific__defines.html#ga188bfaaf7477cf24cbc9f207feaeb53a":[7,2,0,3], +"group__rtx5__specific__defines.html#ga30d19272204231956582ebfff69567f6":[7,2,0,0], +"group__rtx5__specific__defines.html#ga42206aa2524b8fab613d26bea0f73c44":[7,2,0,9], +"group__rtx5__specific__defines.html#ga47eb1e21f1bf9a42281c6c89c7473e99":[7,2,0,8], +"group__rtx5__specific__defines.html#ga68100c8c44931f03547973294c433075":[7,2,0,2], +"group__rtx5__specific__defines.html#ga7377235f9fa3cedee06f682cd93f3e88":[7,2,0,10], +"group__rtx5__specific__defines.html#gaa8d067c476faa6bfc8e5e21f3b3c844e":[7,2,0,6], +"group__rtx5__specific__defines.html#gaad420018f26e751ec55d3922a283beb0":[7,2,0,11], +"group__rtx5__specific__defines.html#gab8e49e9e1eea5a015f2a3114cabceb48":[7,2,0,5], +"group__rtx5__specific__defines.html#gac6bea3541b458bbc79eafce42a2d87a2":[7,2,0,7], +"group__rtx5__specific__defines.html#gac749c24b9cf6c49b392b015ed0517cfc":[7,2,0,13], +"group__rtx5__specific__defines.html#gaf8a145fdeb24fd912971f0671b1a3603":[7,2,0,1], +"group__rtx5__specific__functions.html":[7,2,1], +"group__rtx5__specific__functions.html#ga074068b8efa7074cee68a71481d0b072":[7,2,1,1], +"group__rtx5__specific__functions.html#gaf1745a88f9cc60b609ab1c8076bd346d":[7,2,1,0], +"group__rtx__evr.html":[7,2,2], +"group__rtx__evr__event__flasg.html":[7,2,2,4], +"group__rtx__evr__event__flasg.html#ga10e98e35999350e9e337c716ba4dc079":[7,2,2,4,5], +"group__rtx__evr__event__flasg.html#ga2ef153a6ee7a8d72375f81128454ede9":[7,2,2,4,6], +"group__rtx__evr__event__flasg.html#ga877235cbe04188b831b70a3c2237c827":[7,2,2,4,4], +"group__rtx__evr__event__flasg.html#gaa1f48b9787e3a7d4f56449ed1dd12f26":[7,2,2,4,2], +"group__rtx__evr__event__flasg.html#gaa281b7380c0fa725faa722badbeb2e5f":[7,2,2,4,0], +"group__rtx__evr__event__flasg.html#gae798cdc4cb10ada732e592318037cba7":[7,2,2,4,1], +"group__rtx__evr__event__flasg.html#gae9ebcbc09a1c15c719d95fe7b8c2ee18":[7,2,2,4,3], +"group__rtx__evr__kernel.html":[7,2,2,1], +"group__rtx__evr__kernel.html#ga1d0340812c29274c6150fa72288e0612":[7,2,2,1,8], +"group__rtx__evr__kernel.html#ga26e0a22f49576824d853fb434cf6b079":[7,2,2,1,17], +"group__rtx__evr__kernel.html#ga28043ffc76fec09e6c8763a9a71b7f2a":[7,2,2,1,7], +"group__rtx__evr__kernel.html#ga2a38154886e6293e127bafcfb6f7d609":[7,2,2,1,0], +"group__rtx__evr__kernel.html#ga4c2a175b79d39d70a4a5112e270d03f2":[7,2,2,1,3], +"group__rtx__evr__kernel.html#ga5cc909465e8df09c9231782e0c45e374":[7,2,2,1,11], +"group__rtx__evr__kernel.html#ga5db8d306617656bfec12638e17584d66":[7,2,2,1,2], +"group__rtx__evr__kernel.html#ga64431a63437506a6f7fe22637d4891c5":[7,2,2,1,18], +"group__rtx__evr__kernel.html#ga7404f3a22af84ad4091c24811fc1bf87":[7,2,2,1,19], +"group__rtx__evr__kernel.html#ga75937a761dd488600d2525a532808d2b":[7,2,2,1,6], +"group__rtx__evr__kernel.html#ga7e84d337b452f647c3a3d6937abd6292":[7,2,2,1,1], +"group__rtx__evr__kernel.html#ga812fdd14d6c40072cc40aec742d4869e":[7,2,2,1,12], +"group__rtx__evr__kernel.html#ga9a8cac0fed8d3cf06f7301c944ad26d1":[7,2,2,1,16], +"group__rtx__evr__kernel.html#gabdaa26d7774111af4913b5d6669d0f85":[7,2,2,1,15], +"group__rtx__evr__kernel.html#gabe14acf14ed2611a3ba1f3b280fbfd8c":[7,2,2,1,10], +"group__rtx__evr__kernel.html#gac18ea91ffcae01e893304609a3c6cdc3":[7,2,2,1,9], +"group__rtx__evr__kernel.html#gac3abd78a9d3f3a6adc698e2929e1c32c":[7,2,2,1,14], +"group__rtx__evr__kernel.html#gad6407e9ff0910629b041866bd801075a":[7,2,2,1,5], +"group__rtx__evr__kernel.html#gaf09b8cd94ad2384e3ab518f0df94a651":[7,2,2,1,4], +"group__rtx__evr__kernel.html#gaf2bdfcb7b099295c7b0123abe88e10a3":[7,2,2,1,21], +"group__rtx__evr__kernel.html#gaf7be1022a33c13fb44f4059f5636b75a":[7,2,2,1,13], +"group__rtx__evr__kernel.html#gafb6530be8201b119015a3f45d66c2f09":[7,2,2,1,20], +"group__rtx__evr__memory.html":[7,2,2,0], +"group__rtx__evr__memory.html#ga15078f1251744140d90761e05c0fe1f2":[7,2,2,0,0], +"group__rtx__evr__memory.html#ga69c2139620def7c5e59f6b1249857949":[7,2,2,0,5], +"group__rtx__evr__memory.html#ga71c0df6f932436b54d7d641a440586db":[7,2,2,0,4], +"group__rtx__evr__memory.html#ga9227b18f5ea44d7caa8fadd4d539af9c":[7,2,2,0,2], +"group__rtx__evr__memory.html#gac71421bbf537f2f8c9255f9f51cf7d54":[7,2,2,0,3], +"group__rtx__evr__memory.html#gae1818917a5e085f92a03039ffaf2bad4":[7,2,2,0,1], +"group__rtx__evr__memory__pool.html":[7,2,2,7], +"group__rtx__evr__memory__pool.html#ga0e144530d45959126018ad74bae7a6ed":[7,2,2,7,6], +"group__rtx__evr__memory__pool.html#ga2fbd33e3d84b4f37e9f9b80576b26907":[7,2,2,7,5], +"group__rtx__evr__memory__pool.html#ga3e8e700baea20b88c3d13678fe7a7fb4":[7,2,2,7,10], +"group__rtx__evr__memory__pool.html#ga425c8a0e13c6fb13262d99a4dcabd507":[7,2,2,7,4], +"group__rtx__evr__memory__pool.html#ga46bc3ef3b1ca2e4cfb914f58d0efe92e":[7,2,2,7,9], +"group__rtx__evr__memory__pool.html#ga4bee4e3e41bdef94046dc059f16ca7ce":[7,2,2,7,15], +"group__rtx__evr__memory__pool.html#ga64ae703ad556f25b105e3eae85b582b8":[7,2,2,7,16], +"group__rtx__evr__memory__pool.html#ga668bc3e627d9b74b6e8259a667e05846":[7,2,2,7,14], +"group__rtx__evr__memory__pool.html#ga7e1a37b0c5dd0a97507c025ab1a62ec8":[7,2,2,7,0], +"group__rtx__evr__memory__pool.html#ga853e1867a4b65aff3f12f7be1aee5ce4":[7,2,2,7,17], +"group__rtx__evr__memory__pool.html#gad05246ee7e1f95e7f9496716515daeed":[7,2,2,7,7], +"group__rtx__evr__memory__pool.html#gad75c377c00ae23caf7b4c3b77a0b46d1":[7,2,2,7,11], +"group__rtx__evr__memory__pool.html#gadad71c7b04493c03647ca0929ea087b1":[7,2,2,7,2], +"group__rtx__evr__memory__pool.html#gaed36f26a548d40e2a3d5b81c8695f287":[7,2,2,7,12], +"group__rtx__evr__memory__pool.html#gaeface1ee4957cdb59292e13c38a672d7":[7,2,2,7,3], +"group__rtx__evr__memory__pool.html#gaf2fd4c91acf1379e93cd9886c515b9c5":[7,2,2,7,1], +"group__rtx__evr__memory__pool.html#gaf511fce5389dde6fd3277e3469c72fd9":[7,2,2,7,8], +"group__rtx__evr__memory__pool.html#gaf79f0e1eb41d42566ba9023be7e442c5":[7,2,2,7,13], +"group__rtx__evr__message__queue.html":[7,2,2,8], +"group__rtx__evr__message__queue.html#ga0826c1d05d3a99afb8682f0ca3f7fd62":[7,2,2,8,10], +"group__rtx__evr__message__queue.html#ga11e3df32a66d5240b277375cbb5d3c83":[7,2,2,8,11], +"group__rtx__evr__message__queue.html#ga145f0c464382dc71ff3b1c624b8bd570":[7,2,2,8,17], +"group__rtx__evr__message__queue.html#ga22bfb7d1c2f6e3e9fea9d3267b2d6988":[7,2,2,8,14], +"group__rtx__evr__message__queue.html#ga2922125d8ac63fd800dc3b7888fd3f3c":[7,2,2,8,9], +"group__rtx__evr__message__queue.html#ga36d6982377c1f54a227ba6fbb9458b79":[7,2,2,8,2], +"group__rtx__evr__message__queue.html#ga3947d4a7ac86ee7a50052c9eb4cd5432":[7,2,2,8,20], +"group__rtx__evr__message__queue.html#ga3bbf02128c31e5cc7ef4c78cdbec508c":[7,2,2,8,22], +"group__rtx__evr__message__queue.html#ga3d6348bed3937de29765ed4d7d07fac8":[7,2,2,8,16], +"group__rtx__evr__message__queue.html#ga401536a603e5a805cc6089b4de11d3d3":[7,2,2,8,4], +"group__rtx__evr__message__queue.html#ga4b1b6191c6ca87dff4714e25b5845828":[7,2,2,8,5], +"group__rtx__evr__message__queue.html#ga5e699de7401c46fd0e8bc19e398dc5a8":[7,2,2,8,12], +"group__rtx__evr__message__queue.html#ga6cfce7336f58505a2379a8a71f477d2f":[7,2,2,8,18], +"group__rtx__evr__message__queue.html#ga7394ca2d88255470f7ba0bb2bff12e99":[7,2,2,8,6], +"group__rtx__evr__message__queue.html#ga8440223b9d48145df5505489e7c6f7d9":[7,2,2,8,7], +"group__rtx__evr__message__queue.html#ga8ded1d43703e0885a81e65251c6df405":[7,2,2,8,0], +"group__rtx__evr__message__queue.html#ga91b8c8630c7d89b6b6dbb74d4fc81ba4":[7,2,2,8,19], +"group__rtx__evr__message__queue.html#gaa30c5b375d4050ad7d99ba094821bf52":[7,2,2,8,8], +"group__rtx__evr__message__queue.html#gaa7b18f18f3f53d6afb39ac1abe257000":[7,2,2,8,1], +"group__rtx__evr__message__queue.html#gab340b38df5d8bf2a1182fd18f2d3a6c4":[7,2,2,8,13], +"group__rtx__evr__message__queue.html#gad0ef8ee59d2ec189351c5884f5f8e945":[7,2,2,8,3], +"group__rtx__evr__message__queue.html#gad11606ef82f5b82f291bf64adfc805e4":[7,2,2,8,21], +"group__rtx__evr__message__queue.html#gad423a0be13d65e98d9ae08de9c399615":[7,2,2,8,15], +"group__rtx__evr__mutex.html":[7,2,2,5], +"group__rtx__evr__mutex.html#ga3fe98bfc9cbea52f578aa5a202305442":[7,2,2,5,9], +"group__rtx__evr__mutex.html#ga457302507cedf0ea969cbb110af606b8":[7,2,2,5,3], +"group__rtx__evr__mutex.html#ga47388f06c025938facfddd95851d666f":[7,2,2,5,0], +"group__rtx__evr__mutex.html#ga4c4780cf766e9d2c6e8c26f206fba607":[7,2,2,5,6], +"group__rtx__evr__mutex.html#ga51f59bf99b315f016ca752eddd1911d5":[7,2,2,5,1], +"group__rtx__evr__mutex.html#ga561c8898b912ea8eace4e6ba606210e5":[7,2,2,5,10], +"group__rtx__evr__mutex.html#ga5d2b957c02fcdcc0617479b93a56f6af":[7,2,2,5,8], +"group__rtx__evr__mutex.html#ga697ec95e014a30a3676690a8d217f546":[7,2,2,5,7], +"group__rtx__evr__mutex.html#ga712b32609cfb3ceded746ee6a86d2442":[7,2,2,5,2], +"group__rtx__evr__mutex.html#ga89284c1927aa646535ff804f1aeda720":[7,2,2,5,11], +"group__rtx__evr__mutex.html#ga913c46223d91000fedab624d0f4e53f8":[7,2,2,5,4], +"group__rtx__evr__mutex.html#gaa3feba455090d50295cbf4b1447f3f87":[7,2,2,5,13], +"group__rtx__evr__mutex.html#gaaadf1b9cf9a62f4e61742069b95daf68":[7,2,2,5,12], +"group__rtx__evr__mutex.html#gaddc9bb3c619b92a786ee5255ec65eaca":[7,2,2,5,5], +"group__rtx__evr__semaphore.html":[7,2,2,6], +"group__rtx__evr__semaphore.html#ga0a9f3c7dbf89d3f155a96524e7195630":[7,2,2,6,9], +"group__rtx__evr__semaphore.html#ga17d8aa861b6e669cc68c3c41e3e12332":[7,2,2,6,3], +"group__rtx__evr__semaphore.html#ga17f21ffa4ec39c50ce203e6985dd0deb":[7,2,2,6,11], +"group__rtx__evr__semaphore.html#ga31f9d55abcc5f398ea3810177cbf2bf3":[7,2,2,6,2], +"group__rtx__evr__semaphore.html#ga4d1f85595cc0802cf8cac89fd8f88b5d":[7,2,2,6,7], +"group__rtx__evr__semaphore.html#ga53eb40f5251e9464b46cc153fe8b26d8":[7,2,2,6,8], +"group__rtx__evr__semaphore.html#ga5639f03e935ab79844777664a518c2ec":[7,2,2,6,1], +"group__rtx__evr__semaphore.html#ga814dc5c7d95e7d1bfb30ce0f472ae420":[7,2,2,6,10], +"group__rtx__evr__semaphore.html#ga852798d5e14cda14484564ac4d7f5a4b":[7,2,2,6,6], +"group__rtx__evr__semaphore.html#ga96a0209384296a283c7b1d23a3395fa1":[7,2,2,6,0], +"group__rtx__evr__semaphore.html#gaad8d8a2844e948b00f02e8620c431c9c":[7,2,2,6,13], +"group__rtx__evr__semaphore.html#gabbaaf85deaf4645414987fc1c3289343":[7,2,2,6,5], +"group__rtx__evr__semaphore.html#gaeb0605679ad9f686dd0f40610c8af772":[7,2,2,6,12], +"group__rtx__evr__semaphore.html#gafd91c9bb268a48b394571a9fc1809019":[7,2,2,6,4], +"group__rtx__evr__thread.html":[7,2,2,2], +"group__rtx__evr__thread.html#ga02088c2d38cbc31a46675334f63f37f5":[7,2,2,2,15], +"group__rtx__evr__thread.html#ga1200f51e9152810e76386e241904427c":[7,2,2,2,6], +"group__rtx__evr__thread.html#ga1999d77992b03347abdca7ec17f91cca":[7,2,2,2,28], +"group__rtx__evr__thread.html#ga1c3120fb155ca19ea5c9089a446ef19d":[7,2,2,2,5], +"group__rtx__evr__thread.html#ga392bb7a8dcd6d126a5e424ab01aa8a80":[7,2,2,2,17], +"group__rtx__evr__thread.html#ga396ce41f68401a885f0ae46a54e8dd1f":[7,2,2,2,1], +"group__rtx__evr__thread.html#ga3faae4d941ddecfe773ef9f3efe8b901":[7,2,2,2,21], +"group__rtx__evr__thread.html#ga40c0d21a5c0d128f09966aeeca37ecba":[7,2,2,2,4], +"group__rtx__evr__thread.html#ga47b64cfdc5c5410dde2c5d9145c7d79b":[7,2,2,2,18], +"group__rtx__evr__thread.html#ga4a2879b06201a29d8c223253d41cca43":[7,2,2,2,0], +"group__rtx__evr__thread.html#ga4f849a33d2c95754b11a499d77503b5c":[7,2,2,2,3], +"group__rtx__evr__thread.html#ga4fd48ef48eefb01a6252cfc02ea169ab":[7,2,2,2,7], +"group__rtx__evr__thread.html#ga5bfa3bc241aea59ebe9bc1edcf6b78d8":[7,2,2,2,2], +"group__rtx__evr__thread.html#ga6abe7d167bd5bb91c3d6bf6d2bb417aa":[7,2,2,2,25], +"group__rtx__evr__thread.html#ga6d5932965736e0f2f35fe2d87bd622e7":[7,2,2,2,27], +"group__rtx__evr__thread.html#ga86ac910ac88d8fe54206a12d7ed69a27":[7,2,2,2,19], +"group__rtx__evr__thread.html#ga8b25f2548a9f3c069431131169d170ac":[7,2,2,2,14], +"group__rtx__evr__thread.html#gaa268fe19f933b8d2a830063560694561":[7,2,2,2,11], +"group__rtx__evr__thread.html#gaa557f9732a8a2120f08cfb2694aa26fb":[7,2,2,2,24], +"group__rtx__evr__thread.html#gaa5aa707fc2d6b44bfcb86bce2e2e90f3":[7,2,2,2,26], +"group__rtx__evr__thread.html#gab0d959bc625cb3e7ddd6bf7c302f631e":[7,2,2,2,12], +"group__rtx__evr__thread.html#gab46562848142ce5ea806d629fd000168":[7,2,2,2,32], +"group__rtx__evr__thread.html#gab9efd66ed2edb439c5081806c9b63cf9":[7,2,2,2,20], +"group__rtx__evr__thread.html#gabe470d5bb1373c59c51470fd20b55bcb":[7,2,2,2,22], +"group__rtx__evr__thread.html#gabf4a015bd3fb2a33c0d105a871aaba72":[7,2,2,2,8], +"group__rtx__evr__thread.html#gac60670562ed1efbfbc61036d881c8af9":[7,2,2,2,16], +"group__rtx__evr__thread.html#gada73306deca99987b104aa9840fdd4e2":[7,2,2,2,9], +"group__rtx__evr__thread.html#gadbbee398f4fab418c9b8115fc7392ff8":[7,2,2,2,29], +"group__rtx__evr__thread.html#gadd45d32305aa45668a36f2c9f0f4c758":[7,2,2,2,30], +"group__rtx__evr__thread.html#gae3bc50d5f154463c7f6647544bb5ecab":[7,2,2,2,23], +"group__rtx__evr__thread.html#gaf41ff549329cf2feb4a1efe49c518e30":[7,2,2,2,13], +"group__rtx__evr__thread.html#gaf59defd6c171d2c3d3508e7136278db2":[7,2,2,2,31], +"group__rtx__evr__thread.html#gafed41f1b6bcdde658ca306f8a6d7ac7e":[7,2,2,2,10], +"group__rtx__evr__timer.html":[7,2,2,3], +"group__rtx__evr__timer.html#ga27cf05adc61d30a0e68f380c96ea5f93":[7,2,2,3,7], +"group__rtx__evr__timer.html#ga453d82bfa65dfbbaffbd5b4ff4f050b2":[7,2,2,3,5], +"group__rtx__evr__timer.html#ga474f3bd3ed38945b087f37fd709560b7":[7,2,2,3,11], +"group__rtx__evr__timer.html#ga601e3617903900524062c4f9069d052f":[7,2,2,3,4], +"group__rtx__evr__timer.html#ga6387808c22d6e186057ed744618d2487":[7,2,2,3,2], +"group__rtx__evr__timer.html#ga6fa5a23f241d765ae22ff1862c6f3b3f":[7,2,2,3,9], +"group__rtx__evr__timer.html#ga71dd40a818f1098052915bbfb6c17e88":[7,2,2,3,3], +"group__rtx__evr__timer.html#gab0dbdf460fc26b25f3987c44fb0ebdeb":[7,2,2,3,6], +"group__rtx__evr__timer.html#gaccd59c7ae2351e0a1bf96cdb749c049f":[7,2,2,3,8], +"group__rtx__evr__timer.html#gacd46f9d31d256c27c72e47d5be5e9d09":[7,2,2,3,1], +"group__rtx__evr__timer.html#gaea5811cc74861117eccbcbb997d36133":[7,2,2,3,10], +"group__rtx__evr__timer.html#gaf1b516bf697288e67fe797662b1873b0":[7,2,2,3,0], +"index.html":[], +"misraCompliance5.html":[5,5], +"misraCompliance5.html#MISRA_1":[5,5,0], +"misraCompliance5.html#MISRA_10":[5,5,9], +"misraCompliance5.html#MISRA_11":[5,5,10], +"misraCompliance5.html#MISRA_12":[5,5,11], +"misraCompliance5.html#MISRA_13":[5,5,12], +"misraCompliance5.html#MISRA_2":[5,5,1], +"misraCompliance5.html#MISRA_3":[5,5,2], +"misraCompliance5.html#MISRA_4":[5,5,3], +"misraCompliance5.html#MISRA_5":[5,5,4], +"misraCompliance5.html#MISRA_6":[5,5,5], +"misraCompliance5.html#MISRA_7":[5,5,6], +"misraCompliance5.html#MISRA_8":[5,5,7] +}; diff --git a/docs/RTOS2/html/navtreeindex2.js b/docs/RTOS2/html/navtreeindex2.js new file mode 100644 index 0000000..05a9e29 --- /dev/null +++ b/docs/RTOS2/html/navtreeindex2.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX2 = +{ +"misraCompliance5.html#MISRA_9":[5,5,8], +"modules.html":[7], +"os2Migration.html":[4], +"os2MigrationFunctions.html":[4,1], +"os2MigrationFunctions.html#mig_eventFlags":[4,1,3], +"os2MigrationFunctions.html#mig_kernel":[4,1,0], +"os2MigrationFunctions.html#mig_mailQueue":[4,1,10], +"os2MigrationFunctions.html#mig_memPool":[4,1,8], +"os2MigrationFunctions.html#mig_msgQueue":[4,1,9], +"os2MigrationFunctions.html#mig_mutex":[4,1,6], +"os2MigrationFunctions.html#mig_sem":[4,1,7], +"os2MigrationFunctions.html#mig_signalEvents":[4,1,11], +"os2MigrationFunctions.html#mig_threadFlags":[4,1,2], +"os2MigrationFunctions.html#mig_threadMgmt":[4,1,1], +"os2MigrationFunctions.html#mig_timer":[4,1,5], +"os2MigrationFunctions.html#mig_wait":[4,1,4], +"os2MigrationGuide.html":[4,0], +"os2MigrationGuide.html#MigL1":[4,0,0], +"os2MigrationGuide.html#MigL2":[4,0,1], +"os2MigrationGuide.html#MigL3":[4,0,2], +"pControlBlockSizes.html":[5,4,1], +"pDirectory_Files.html":[5,4,2], +"pDirectory_Files.html#Folders":[5,4,2,0], +"pDirectory_Files.html#libFiles":[5,4,2,1], +"pHardwareRequirements.html":[5,4,0], +"pHardwareRequirements.html#rMemory":[5,4,0,1], +"pHardwareRequirements.html#tpCortexA5_A7_A9":[5,4,0,0,2], +"pHardwareRequirements.html#tpCortexM0_M0P_M23":[5,4,0,0,0], +"pHardwareRequirements.html#tpCortexM3_M4_M7_M33":[5,4,0,0,1], +"pHardwareRequirements.html#tpProcessor":[5,4,0,0], +"pToolchains.html":[5,4,3], +"pToolchains.html#technicalData_Toolchain_ARM":[5,4,3,0], +"pToolchains.html#technicalData_Toolchain_GCC":[5,4,3,2], +"pToolchains.html#technicalData_Toolchain_IAR":[5,4,3,1], +"pages.html":[], +"rtosValidation.html":[3], +"rtosValidation.html#test_output":[3,0], +"rtos_api2.html":[2,0], +"rtos_api2.html#rtos_api2_basics":[2,0,0], +"rtos_api2.html#rtos_api2_functions":[2,0,1], +"rtos_apicpp.html":[2,1], +"rtos_os_tick_api.html":[2,2], +"rtos_revisionHistory.html":[0], +"rtos_revisionHistory.html#GenRTOS2Rev":[0,0], +"rtos_revisionHistory.html#RTX5RevisionHistory":[0,1], +"rtx5_impl.html":[5], +"rtx__os_8h.html#a0046cd4086246454426394e75d5ae872":[8,12,2], +"rtx__os_8h.html#a0354dd9f726694843f2a01df98c5641c":[8,4,3], +"rtx__os_8h.html#a09c2a312ca0311b5e24340fe8f827077":[8,17,0], +"rtx__os_8h.html#a0a8aa7db62759b8d67cca3ca2af45aa0":[8,6,1], +"rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f":[8,8,1], +"rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f":[8,20,1], +"rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f":[8,19,1], +"rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f":[8,21,1], +"rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f":[8,23,1], +"rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f":[8,26,1], +"rtx__os_8h.html#a0ad043071ccc7a261d79a759dc9c6f0c":[8,20,3], +"rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830":[8,24,1], +"rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830":[8,28,1], +"rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830":[8,27,1], +"rtx__os_8h.html#a1071334ebd46d95b9ab1dcad788b2adc":[8,27,13], +"rtx__os_8h.html#a11175ec6a8801a32e287f84e82908bfb":[8,15,3], +"rtx__os_8h.html#a121e21e21369e7ccff1b47800c32797e":[8,12,1], +"rtx__os_8h.html#a13aeb46a18b12ae911abead8e497ffd3":[8,9,9], +"rtx__os_8h.html#a13b5bfe96f3e2fe411c9f66f4a582adf":[8,10,2], +"rtx__os_8h.html#a13c143cc2f25a550fc3eb7ae68b0c56d":[8,21,9], +"rtx__os_8h.html#a1d127017fb298b889f4ba24752d08b8e":[8,28,3], +"rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b":[8,8,0], +"rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b":[8,19,0], +"rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b":[8,20,0], +"rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b":[8,27,0], +"rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b":[8,23,0], +"rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b":[8,26,0], +"rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b":[8,24,0], +"rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b":[8,21,0], +"rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b":[8,28,0], +"rtx__os_8h.html#a1effca68f27e85391274c5e2987d693c":[8,15,5], +"rtx__os_8h.html#a21a74cedec66715cd5d7422797035868":[8,27,7], +"rtx__os_8h.html#a25a01bb859125507013a2fe9737d3c32":[8,7,4], +"rtx__os_8h.html#a25a01bb859125507013a2fe9737d3c32":[8,13,4], +"rtx__os_8h.html#a260e06ce96c2e4deebccaedeb059dc0b":[8,28,7], +"rtx__os_8h.html#a2817f701d5e1a1181e657251363295fd":[8,10,1], +"rtx__os_8h.html#a28478ea2856f6286899bc90b2c6a1ec4":[8,27,3], +"rtx__os_8h.html#a28478ea2856f6286899bc90b2c6a1ec4":[8,23,3], +"rtx__os_8h.html#a2c127bf32ccb4edf2bf22fea5a00e494":[8,7,2], +"rtx__os_8h.html#a2c127bf32ccb4edf2bf22fea5a00e494":[8,13,2], +"rtx__os_8h.html#a2d0644ba3070f630371f24c452e2a26f":[8,6,6], +"rtx__os_8h.html#a2ffe4e77325d9a7152f7086ea7aa5114":[8,5,1], +"rtx__os_8h.html#a2ffe4e77325d9a7152f7086ea7aa5114":[8,10,0], +"rtx__os_8h.html#a310b3e01cc8e274529353210db5a78c3":[8,4,8], +"rtx__os_8h.html#a382a07e24a852d580d7548b8d517384c":[8,27,20], +"rtx__os_8h.html#a3c7b4f24d9527394f4b5a1135d117691":[8,27,15], +"rtx__os_8h.html#a3d6d4ee231cd6db41ee358a5676b1a9d":[8,4,10], +"rtx__os_8h.html#a3e07bcf21ce5250f3dc0f1ec4ebc938d":[8,4,9], +"rtx__os_8h.html#a421971e8ae94fe0bd86b85a90445e71e":[8,27,5], +"rtx__os_8h.html#a42d7108f7184dcb944cdf73f649ad2dd":[8,9,8], +"rtx__os_8h.html#a444139ba664bc8c262139a9addddb48c":[8,22,1], +"rtx__os_8h.html#a447dbb69b4c036e118b3b1b8bd22fe60":[8,27,18], +"rtx__os_8h.html#a458421a43d4f6dc515faf427bf579d00":[8,27,10], +"rtx__os_8h.html#a4a598d941460a6d8ebfbd9c622e2876a":[8,22,3], +"rtx__os_8h.html#a4e2e4e1126848f81d9e943147e07f0e0":[8,26,6], +"rtx__os_8h.html#a50b315b9b80bafdba54a7a731be1cc30":[8,23,7], +"rtx__os_8h.html#a534f37c2b021c8242492bedfe48b0338":[8,9,6], +"rtx__os_8h.html#a540b2b79850c654b3f5756c488314b8d":[8,9,4], +"rtx__os_8h.html#a54be7ae32f627ee70e1af8c54203ee5a":[8,23,8], +"rtx__os_8h.html#a58873af81b75772a41aa5c1ff788a0c2":[8,21,7], +"rtx__os_8h.html#a5916fa670084fea56a52ba450565da4b":[8,25,1], +"rtx__os_8h.html#a5973e7102782a9936a5e0d1417863675":[8,4,1], +"rtx__os_8h.html#a61326117ed4a9ddf3f754e71e119e5b3":[8,11,1], +"rtx__os_8h.html#a675214f6d8913a15569ca32f3a505e46":[8,13,6], +"rtx__os_8h.html#a675214f6d8913a15569ca32f3a505e46":[8,7,6], +"rtx__os_8h.html#a68d0eb20a4cb1daaec11ac0ef1dd9399":[8,6,4], +"rtx__os_8h.html#a694e5f79185db270e087e94719177ca0":[8,4,7], +"rtx__os_8h.html#a6a019648a53352a413ea79b958a362cd":[8,21,8], +"rtx__os_8h.html#a6aa2c0bcb2024f1e4c38f9e8f6769c09":[8,4,6], +"rtx__os_8h.html#a6b4c66676a5bc985c28b71ac4ac79159":[8,4,2], +"rtx__os_8h.html#a6bc379cb485caaa1bd9b63abbc79a4ec":[8,25,0], +"rtx__os_8h.html#a7044be0679894b5daf72f19f9dd06e03":[8,8,6], +"rtx__os_8h.html#a70b3153655adaf42687fe250983f6c95":[8,27,17], +"rtx__os_8h.html#a72d4e2550fcee67cc139fca04505a903":[8,9,2], +"rtx__os_8h.html#a735ef00341a84c02ba561c66de3d20af":[8,23,10], +"rtx__os_8h.html#a773b39d480759f67926cb18ae2219281":[8,4,0], +"rtx__os_8h.html#a7b7d02cdf33432995469f29878f7dcda":[8,9,0], +"rtx__os_8h.html#a7f005c3fa691e77c52d3297cc2699072":[8,11,3], +"rtx__os_8h.html#a81659cc4c01e54e2424022728d9effc7":[8,27,11], +"rtx__os_8h.html#a81baadf3fdf0eeff338f997ca3fe5009":[8,25,2], +"rtx__os_8h.html#a83ec0540c50d4e79bed99f1b384bd2b9":[8,27,9], +"rtx__os_8h.html#a87c898585d0aeffdcf67c9e1b3befefe":[8,27,14], +"rtx__os_8h.html#a89570e219f9fb794b8353207a7592f95":[8,20,5], +"rtx__os_8h.html#a8afd5feb676df99867375957b0587451":[8,8,5], +"rtx__os_8h.html#a8afd5feb676df99867375957b0587451":[8,19,5], +"rtx__os_8h.html#a8afd5feb676df99867375957b0587451":[8,23,5], +"rtx__os_8h.html#a8afd5feb676df99867375957b0587451":[8,21,5], +"rtx__os_8h.html#a8afd5feb676df99867375957b0587451":[8,24,5], +"rtx__os_8h.html#a8afd5feb676df99867375957b0587451":[8,26,5], +"rtx__os_8h.html#a8b9ac161a613448926b2c2b2c8dbe259":[8,28,6], +"rtx__os_8h.html#a8d777f385d3dfec8815d20f7496026dc":[8,5,0], +"rtx__os_8h.html#a8d777f385d3dfec8815d20f7496026dc":[8,10,4], +"rtx__os_8h.html#a8ee60a2e00c90d7e00d5069188dc115b":[8,15,6], +"rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb":[8,28,4], +"rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb":[8,23,4], +"rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb":[8,19,4], +"rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb":[8,24,4], +"rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb":[8,26,4], +"rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb":[8,21,4], +"rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb":[8,27,4], +"rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb":[8,8,4], +"rtx__os_8h.html#a90272dda245ae1fb3cf197e91a8689dc":[8,16,2], +"rtx__os_8h.html#a92435efb84d6814afd444fd462802e9c":[8,23,9], +"rtx__os_8h.html#a987889d464cb2925029e135b76aa0dc9":[8,23,6], +"rtx__os_8h.html#a9ce2ec4812a92cb6ab39f6e81e9173a9":[8,29,1], +"rtx__os_8h.html#a9e3fb1e50a1c71b2337df296222d9553":[8,22,2], +"rtx__os_8h.html#a9ed39e2ea931586b6a985a6942ef573e":[8,11,0], +"rtx__os_8h.html#a9efab2399c7c560b34de477b9aa0a465":[8,12,3], +"rtx__os_8h.html#aa111194ee30ea4e76b9dfcac8a03a8d9":[8,22,5], +"rtx__os_8h.html#aa230a0d899f6c0750e6d454af3ef9b05":[8,27,6], +"rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe":[8,26,2], +"rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe":[8,20,2], +"rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe":[8,28,2], +"rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe":[8,21,2], +"rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe":[8,8,2], +"rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe":[8,23,2], +"rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe":[8,24,2], +"rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe":[8,19,2], +"rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe":[8,27,2], +"rtx__os_8h.html#aa30bb7d2484db1812c1aaf77a23cd11e":[8,4,4], +"rtx__os_8h.html#aa53108f7543b75adbb34afc035d4cdf6":[8,15,0], +"rtx__os_8h.html#aa793f0e9a46e8b59b6d351535ee18a7d":[8,26,7], +"rtx__os_8h.html#aab3d7e5f552f1830b1613e1498cef7cb":[8,6,5], +"rtx__os_8h.html#aaf8577e5ddcbff356a1d27310baa8a1f":[8,29,0], +"rtx__os_8h.html#ab2fdab230a2c39f3595a947861863cb7":[8,15,1], +"rtx__os_8h.html#ab386d4a98974f52ca151426c4dde0da4":[8,21,10], +"rtx__os_8h.html#ab415a6615c5ddf5365ed86e58a1e1809":[8,28,9], +"rtx__os_8h.html#ab70cdb878a204fecf91c7dd1af312421":[8,5,2], +"rtx__os_8h.html#aba0fcdc6eda7e9f65c1d1904b2fff919":[8,22,4], +"rtx__os_8h.html#ac013bca5f28bebf36a3372da78107e97":[8,4,5], +"rtx__os_8h.html#ac1cf67a8631962a42fa2da46f20a1a39":[8,19,6], +"rtx__os_8h.html#ac1cf67a8631962a42fa2da46f20a1a39":[8,21,6], +"rtx__os_8h.html#ac67f8858081fb7a6e5a4ee8d2de3b348":[8,27,12], +"rtx__os_8h.html#ac68271a63ddbc431c307beb7d2918275":[8,10,3], +"rtx__os_8h.html#ac8953ebf7df8aaf724cb12876ac8fb1a":[8,28,5], +"rtx__os_8h.html#ac8a94d8dcb13e89d5886dabf7cd9945a":[8,13,7], +"rtx__os_8h.html#ac8a94d8dcb13e89d5886dabf7cd9945a":[8,7,7], +"rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7":[8,19,3], +"rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7":[8,21,3], +"rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7":[8,24,3], +"rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7":[8,26,3], +"rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7":[8,8,3], +"rtx__os_8h.html#acd99bb05ca015e7d74448acb1deba7ca":[8,9,1], +"rtx__os_8h.html#ace1bc7755b9332cfacdf8ee58ef2e3c1":[8,13,5], +"rtx__os_8h.html#ace1bc7755b9332cfacdf8ee58ef2e3c1":[8,7,5], +"rtx__os_8h.html#ad0cab90d8d20d57e2f2b9be52f7dd25d":[8,17,1], +"rtx__os_8h.html#ad2649f7342615613f26a8603203bba7b":[8,9,5], +"rtx__os_8h.html#ad2b4e6d37acc8020701610f54c0c8910":[8,20,4], +"rtx__os_8h.html#ad5ee660a662e3d7897a97f62ce6ecdc1":[8,6,3], +"rtx__os_8h.html#ad63716408aae5b50857ca8ce74e3a3ff":[8,27,19], +"rtx__os_8h.html#ad88a39594ffe6ab1016cf59517219e21":[8,9,3], +"rtx__os_8h.html#ad9cc02dbd824d3b15349daa809bcfee9":[8,15,4], +"rtx__os_8h.html#adaa6c424a231e5f6c788532675f33e16":[8,27,22], +"rtx__os_8h.html#adb7453887f86cc0d98e37becf4c83682":[8,6,7], +"rtx__os_8h.html#adbd8f5195a8c472906488694e50bc57d":[8,11,2], +"rtx__os_8h.html#adc127f5d2483352fd20eaddb38feb6d2":[8,7,1], +"rtx__os_8h.html#adc127f5d2483352fd20eaddb38feb6d2":[8,16,0], +"rtx__os_8h.html#adc127f5d2483352fd20eaddb38feb6d2":[8,13,1], +"rtx__os_8h.html#adcfea33cc536708db8a3419ba0295551":[8,27,8], +"rtx__os_8h.html#addc777bf5285ab03de6787385e6ea053":[8,22,0], +"rtx__os_8h.html#adf2ebf46aa7018845582f1c70de83598":[8,27,21], +"rtx__os_8h.html#ae20e71788b6e24c734e1a4fbfb1bc55c":[8,6,0], +"rtx__os_8h.html#ae5e5c0754f1e26bf915455e21cf2eba5":[8,16,1], +"rtx__os_8h.html#ae5e5c0754f1e26bf915455e21cf2eba5":[8,11,4], +"rtx__os_8h.html#ae64a3e930a8e3d1fb28038db9bc514d9":[8,9,7], +"rtx__os_8h.html#ae757685e50b875e953f4aff67ac24b1b":[8,27,16], +"rtx__os_8h.html#aec2f993aec2c27fc750119ab17b16cdb":[8,15,2], +"rtx__os_8h.html#aee4a6239f04d660fc90663dd6b39ca95":[8,28,8], +"rtx__os_8h.html#af1b7cb88db5bf93bba7cbcaa503cbd6c":[8,7,3], +"rtx__os_8h.html#af1b7cb88db5bf93bba7cbcaa503cbd6c":[8,13,3], +"rtx__os_8h.html#af77cba93c22c4dac7ea999b28b6b686d":[8,6,2], +"rtx__os_8h.html#afac2a47adace059aff113283a03f6760":[8,7,0], +"rtx__os_8h.html#afac2a47adace059aff113283a03f6760":[8,13,0], +"rtx__os_8h.html#afac2a47adace059aff113283a03f6760":[8,12,0], +"rtx__os_8h.html#structosRtxConfig__t":[8,4], +"rtx__os_8h.html#structosRtxConfig__t_8isr__queue":[8,5], +"rtx__os_8h.html#structosRtxConfig__t_8mem":[8,6], +"rtx__os_8h.html#structosRtxConfig__t_8mpi":[8,7], +"rtx__os_8h.html#structosRtxEventFlags__t":[8,8], +"rtx__os_8h.html#structosRtxInfo__t":[8,9], +"rtx__os_8h.html#structosRtxInfo__t_8isr__queue":[8,10], +"rtx__os_8h.html#structosRtxInfo__t_8kernel":[8,11], +"rtx__os_8h.html#structosRtxInfo__t_8mem":[8,12], +"rtx__os_8h.html#structosRtxInfo__t_8mpi":[8,13], +"rtx__os_8h.html#structosRtxInfo__t_8thread":[8,15], +"rtx__os_8h.html#structosRtxInfo__t_8thread_8robin":[8,16], +"rtx__os_8h.html#structosRtxInfo__t_8thread_8run":[8,17], +"rtx__os_8h.html#structosRtxMemoryPool__t":[8,19], +"rtx__os_8h.html#structosRtxMessageQueue__t":[8,21], +"rtx__os_8h.html#structosRtxMessage__t":[8,20], +"rtx__os_8h.html#structosRtxMpInfo__t":[8,22], +"rtx__os_8h.html#structosRtxMutex__t":[8,23], +"rtx__os_8h.html#structosRtxObjectMemUsage__t":[8,25], +"rtx__os_8h.html#structosRtxObject__t":[8,24], +"rtx__os_8h.html#structosRtxSemaphore__t":[8,26], +"rtx__os_8h.html#structosRtxThread__t":[8,27], +"rtx__os_8h.html#structosRtxTimerFinfo__t":[8,29], +"rtx__os_8h.html#structosRtxTimer__t":[8,28], +"structosRtxInfo__t_8post__process.html":[8,14], +"structosRtxInfo__t_8post__process.html#a07c9d45abfb605d2bdb59d8f2e697fca":[8,14,4], +"structosRtxInfo__t_8post__process.html#a448b397ae9f093b1632dd42680d003bf":[8,14,0], +"structosRtxInfo__t_8post__process.html#a701cf47135bf3d62510b25b6dcdc19a8":[8,14,2], +"structosRtxInfo__t_8post__process.html#a87c97ad39fd308d767c9b0870aa57932":[8,14,1], +"structosRtxInfo__t_8post__process.html#afa86c80888f72693bbf3bc6c05856159":[8,14,3] +}; diff --git a/docs/RTOS2/html/navtreeindex3.js b/docs/RTOS2/html/navtreeindex3.js new file mode 100644 index 0000000..f568310 --- /dev/null +++ b/docs/RTOS2/html/navtreeindex3.js @@ -0,0 +1,23 @@ +var NAVTREEINDEX3 = +{ +"structosRtxInfo__t_8timer.html":[8,18], +"structosRtxInfo__t_8timer.html#a10ae9fc7d453b0dd525d0edf2ede7961":[8,18,0], +"structosRtxInfo__t_8timer.html#a1d8a4975693ef1eb9ca54878098d608f":[8,18,2], +"structosRtxInfo__t_8timer.html#adc127f5d2483352fd20eaddb38feb6d2":[8,18,1], +"structosRtxInfo__t_8timer.html#ae69dfeafefa7851fd9524a2b32a0eff9":[8,18,3], +"technicalData5.html":[5,4], +"theory_of_operation.html":[5,1], +"theory_of_operation.html#CMSIS_RTOS_ISR_Calls":[5,1,8], +"theory_of_operation.html#CMSIS_RTOS_TimeOutValue":[5,1,7], +"theory_of_operation.html#GlobalMemoryPool":[5,1,2,0], +"theory_of_operation.html#MemoryAllocation":[5,1,2], +"theory_of_operation.html#ObjectMemoryPool":[5,1,2,1], +"theory_of_operation.html#Scheduler":[5,1,1], +"theory_of_operation.html#StaticObjectMemory":[5,1,2,2], +"theory_of_operation.html#SystemStartup":[5,1,0], +"theory_of_operation.html#ThreadStack":[5,1,3], +"theory_of_operation.html#TickLess":[5,1,5,0], +"theory_of_operation.html#kernelTimer":[5,1,5], +"theory_of_operation.html#lowPower":[5,1,4], +"theory_of_operation.html#rtx_os_h":[5,1,6] +}; diff --git a/docs/RTOS2/html/open.png b/docs/RTOS2/html/open.png new file mode 100644 index 0000000..39e5e68 Binary files /dev/null and b/docs/RTOS2/html/open.png differ diff --git a/docs/RTOS2/html/os2Migration.html b/docs/RTOS2/html/os2Migration.html new file mode 100644 index 0000000..ec043a9 --- /dev/null +++ b/docs/RTOS2/html/os2Migration.html @@ -0,0 +1,134 @@ + + + + + +Migration from API v1 to API v2 +CMSIS-RTOS2: Migration from API v1 to API v2 + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Migration from API v1 to API v2
+
+
+

To use the API version 2 functions follow the steps described in:

+ +
+
+ + + + diff --git a/docs/RTOS2/html/os2Migration.js b/docs/RTOS2/html/os2Migration.js new file mode 100644 index 0000000..cd3f183 --- /dev/null +++ b/docs/RTOS2/html/os2Migration.js @@ -0,0 +1,22 @@ +var os2Migration = +[ + [ "RTX Migration Guide", "os2MigrationGuide.html", [ + [ "Level 1 Migration - Upgrade to RTX5 on API v1", "os2MigrationGuide.html#MigL1", null ], + [ "Level 2 Migration - Use API v2 and v1 alongside in RTX5", "os2MigrationGuide.html#MigL2", null ], + [ "Level 3 Migration - Full transition to API v2", "os2MigrationGuide.html#MigL3", null ] + ] ], + [ "Detailed API Function Differences", "os2MigrationFunctions.html", [ + [ "Kernel Information and Control", "os2MigrationFunctions.html#mig_kernel", null ], + [ "Thread Management", "os2MigrationFunctions.html#mig_threadMgmt", null ], + [ "Thread Flags", "os2MigrationFunctions.html#mig_threadFlags", null ], + [ "Event Flags", "os2MigrationFunctions.html#mig_eventFlags", null ], + [ "Generic Wait Functions", "os2MigrationFunctions.html#mig_wait", null ], + [ "Timer Management", "os2MigrationFunctions.html#mig_timer", null ], + [ "Mutexes", "os2MigrationFunctions.html#mig_mutex", null ], + [ "Semaphores", "os2MigrationFunctions.html#mig_sem", null ], + [ "Memory Pool", "os2MigrationFunctions.html#mig_memPool", null ], + [ "Message Queue", "os2MigrationFunctions.html#mig_msgQueue", null ], + [ "Mail Queue", "os2MigrationFunctions.html#mig_mailQueue", null ], + [ "Signal Events", "os2MigrationFunctions.html#mig_signalEvents", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/os2MigrationFunctions.html b/docs/RTOS2/html/os2MigrationFunctions.html new file mode 100644 index 0000000..a629624 --- /dev/null +++ b/docs/RTOS2/html/os2MigrationFunctions.html @@ -0,0 +1,766 @@ + + + + + +Detailed API Function Differences +CMSIS-RTOS2: Detailed API Function Differences + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Detailed API Function Differences
+
+
+

This section lists the CMSIS-RTOS API v1 and API v2 functions along with the differences in functionality. The list is sorted alphabetically by API v2 function names and is structured the following way:

+
    +
  • RTOS API v2 function prototype
  • +
  • RTOS API v1 function prototype that is equivalent or provides similar functionality
  • +
  • Brief description of the RTOS v2 function.
  • +
  • Description of the difference.
  • +
+

The background color indicates:

+
    +
  • Green: New functions in API v2 that are not available in API v1
  • +
  • Amber: Functions that are modified or replaced in API v2 compared to API v1
  • +
  • Red: Functions in API v1 that are deprecated in API v2
  • +
+

+Kernel Information and Control

+
+
osStatus_t osKernelGetInfo (osVersion_t* version, char* id_buf, uint32_t id_size)
+ none
+
+ Get RTOS Kernel Information.
+ New function osKernelGetInfo.

+
osKernelState_t osKernelGetState (void)
+ int32_t         osKernelRunning (void)
+
+ Get the current RTOS Kernel state.
+

+
    +
  • The function osKernelGetState replaces the RTOS v1 function osKernelRunning.
  • +
  • Return type changed to osKernelState_t.
  • +
+

+
uint32_t osKernelGetTickCount (void)
+ none
+
+ Get the RTOS kernel tick count.
+ New function.

+
uint32_t osKernelGetTickFreq (void)
+ none
+
+ Get the RTOS kernel tick frequency.
+

+
    +
  • The function osKernelGetTickFreq replaces the RTOS v1 macro osKernelTickMicroSec.
  • +
+

+
uint32_t osKernelGetSysTimerCount (void)
+ uint32_t osKernelSysTick (void)
+
+ Get the RTOS kernel system timer count.
+

+
    +
  • The function osKernelGetSysTimerCount replaces the RTOS v1 function osKernelSysTick.
  • +
+

+
uint64_t osKernelGetSysTimerFreq (void)
+ none
+
+ Get the RTOS kernel system timer frequency.
+ New function.

+
osStatus_t osKernelInitialize (void)
+ osStatus   osKernelInitialize (void)
+
+ Initialize the RTOS Kernel.
+

+ +

+
uint32_t osKernelLock (void)
+ none
+
+ Lock the RTOS Kernel scheduler.
+ New function.

+
int32_t osKernelUnlock (void)
+ none
+
+ Unlock the RTOS Kernel scheduler.
+ New function.

+
void osKernelRestoreLock (void)
+ none
+
+ Restore the RTOS Kernel scheduler lock state.
+ New function.

+
osStatus_t osKernelStart (void)
+ osStatus   osKernelStart (void)
+
+ Start the RTOS Kernel scheduler.
+

+ +

+
uint32_t osKernelSuspend (void)
+ none
+
+ Suspend the RTOS Kernel scheduler.
+ New function.

+
void osKernelResume (uint32_t sleep_time)
+ none
+
+ Resume the RTOS Kernel scheduler.
+ New function.

+Thread Management

+
+
osStatus_t osThreadDetach (osThreadId_t thread_id)
+ none
+
+ Detach a thread (thread storage can be reclaimed when thread terminates).
+ New function.

+
uint32_t osThreadEnumerate (osThreadId_t *thread_array, uint32_t array_items)
+ none
+
+ Enumerate active threads.
+ New function.

+
__NO_RETURN void osThreadExit (void)
+ none
+
+ Terminate execution of current running thread.
+ New function.

+
uint32_t osThreadGetCount (osThreadId_t thread_id)
+ none
+
+ Get number of active threads.
+ New function.

+
const char *osThreadGetName (osThreadId_t thread_id)
+ none
+
+ Get name of a thread.
+ New function.

+
osThreadId_t osThreadGetId (void)
+ osThreadId   osThreadGetId (void)
+
+ Return the thread ID of the current running thread.
+

+ +

+
osPriority_t osThreadGetPriority (osThreadId_t thread_id)
+ osPriority   osThreadGetPriority (osThreadId thread_id)
+
+ Get current priority of a thread.
+

+ +

+
uint32_t osThreadGetStackSize (osThreadId_t thread_id)
+ none
+
+ Get stack size of a thread.
+ New function.

+
uint32_t osThreadGetStackSpace (osThreadId_t thread_id)
+ none
+
+ Get available stack space of a thread based on stack watermark recording during execution.
+ New function.

+
osThreadState_t osThreadGetState (osThreadId_t thread_id)
+ none
+
+ Get current thread state of a thread.
+ New function.

+
osStatus_t osThreadJoin (osThreadId_t thread_id)
+ none
+
+ Wait for specified thread to terminate.
+ New function.

+
osThreadId_t osThreadNew (osThreadFunc_t function, void *argument, const osThreadAttr_t *attr)
+ osThreadId   osThreadCreate (const osThreadDef_t *thread_def, void *argument)
+
+ Create a thread and add it to Active Threads.
+

+
    +
  • The function osThreadNew replaces the RTOS v1 function osThreadCreate.
  • +
  • Options are now passed using a osThreadAttr_t struct, replacing the osThreadDef macro.
  • +
  • New function prototype is void func (void *arg), before: void func (const void *arg).
  • +
+

+
osStatus_t osThreadResume (osThreadId_t thread_id)
+ none
+
+ Resume execution of a thread.
+ New function.

+
osStatus_t osThreadSetPriority (osThreadId_t thread_id, osPriority_t priority)
+ osStatus   osThreadSetPriority (osThreadId thread_id, osPriority priority)
+
+ Change priority of a thread.
+

+ +

+
osStatus_t osThreadSuspend (osThreadId_t thread_id)
+ none
+
+ Suspend execution of a thread.
+ New function.

+
osStatus_t osThreadTerminate (osThreadId_t thread_id)
+ osStatus   osThreadTerminate (osThreadId thread_id)
+
+ Terminate execution of a thread.
+

+ +

+
osStatus_t osThreadYield (void)
+ osStatus   osThreadYield (void)
+
+ Pass control to next thread that is in state READY.
+

+ +

+Thread Flags

+

New section to synchronize threads using flags. Thread flags and the more flexible Event Flags are replacing the RTOS v1 Signal Events. Refer to Signal Events for a list of deprecated functions. Refer to Thread Flags for details.

+
+
uint32_t osThreadFlagsSet (osThreadId_t thread_id, uint32_t flags)
+ none
+
+ Set the specified Thread Flags of a thread.
+ New function.

+
uint32_t osThreadFlagsClear (uint32_t flags)
+ none
+
+ Clear the specified Thread Flags of current running thread.
+ New function.

+
uint32_t osThreadFlagsGet (void)
+ none
+
+ Get the current Thread Flags of current running thread.
+ New function.

+
uint32_t osThreadFlagsWait (uint32_t flags, uint32_t options, uint32_t timeout)
+ none
+
+ Wait for one or more Thread Flags of the current running thread to become signaled.
+ New function.

+Event Flags

+

New section to synchronize events using flags. Event flags and thread flags are replacing the RTOS v1 Signal Events. All functions listed in the RTOS v1 Signal Events have been deprecated. Refer to Signal Events for a list of deprecated functions. Refer to Event Flags for details about the new function.

+
+
uint32_t osEventFlagsClear (osEventFlagsId_t ef_id, uint32_t flags)
+ none
+
+ Clear the specified Event Flags.
+ New function.

+
const char *osEventFlagsGetName ((osEventFlagsId_t ef_id)
+ none
+
+ Get name of an Event Flags object.
+ New function.

+
osStatus_t osEventFlagsDelete (osEventFlagsId_t ef_id)
+ none
+
+ Delete an Event Flags object.
+ New function.

+
uint32_t osEventFlagsGet (osEventFlagsId_t ef_id)
+ none
+
+ Get the current Event Flags.
+ New function.

+
osEventFlagsId_t osEventFlagsNew (const osEventFlagsAttr_t *attr)
+ none
+
+ Create and Initialize an Event Flags object.
+ New function.

+
uint32_t osEventFlagsSet (osEventFlagsId_t ef_id, uint32_t flags)
+ none
+
+ Set the specified Event Flags.
+ New function.

+
uint32_t osEventFlagsWait (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout)
+ none
+
+ Wait for one or more Event Flags to become signaled.
+ New function.

+Generic Wait Functions

+

Refer to Generic Wait Functions for details.

+
+
osStatus_t osDelay (uint32_t ticks)
+ osStatus   osDelay (uint32_t timeout)
+
+ Wait for Timeout (Time Delay).
+

+ +

+
osStatus_t osDelayUntil (uint32_t ticks)
+ none
+
+ Wait until specified time.
+ New function.

+
none
+ osEvent osWait (uint32_t millisec)
+
+Deprecated.

+Timer Management

+

Refer to Timer Management for details.

+
+
osStatus_t osTimerDelete (osTimerId_t timer_id)
+ osStatus   osTimerDelete (osTimerId timer_id)
+
+ Delete a timer.
+

+ +

+
const char *osTimerGetName (osTimerId_t timer_id)
+ none
+
+ Get name of a timer.
+ New function.

+
uint32_t osTimerIsRunning (osTimerId_t timer_id)
+ none
+
+ Check if a timer is running.
+ New function.

+
osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)
+ osTimerId   osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument)
+
+ Create and Initialize a timer.
+

+
    +
  • The function osTimerNew replaces the RTOS v1 function osTimerCreate.
  • +
  • The return type changed to osTimerId_t.
  • +
  • The parameter list and types have changed.
  • +
+

+
osStatus_t osTimerStart (osTimerId_t timer_id, uint32_t ticks)
+ osStatus   osTimerStart (osTimerId timer_id, uint32_t timeout)
+
+ Start or restart a timer.
+

+ +

+
osStatus_t osTimerStop (osTimerId_t timer_id)
+ osStatus   osTimerStop (osTimerId timer_id)
+
+ Stop a timer.
+

+ +

+Mutexes

+

Refer to Mutex Management for details.

+
+
osStatus_t osMutexAcquire (osMutexId_t mutex_id, uint32_t timeout)
+ osStatus   osMutexWait (osMutexId mutex_id, uint32_t timeout)
+
+ Acquire a Mutex or timeout if it is locked.
+

+
    +
  • The function osMutexAcquire replaces the RTOS v1 function osMutexWait.
  • +
  • Return type changed to osStatus_t.
  • +
  • First parameter type changed to osMutexId_t.
  • +
+

+
osStatus_t osMutexDelete (osMutexId_t mutex_id)
+ osStatus   osMutexDelete (osMutexId mutex_id)
+
+ Delete a Mutex object.
+

+ +

+
const char *osMutexGetName ((osMutexId_t mutex_id)
+ none
+
+ Get name of a Mutex object.
+ New function.

+
osThreadId_t osMutexGetOwner (osMutexId_t mutex_id)
+ none
+
+ Get Thread which owns a Mutex object.
+ New function.

+
osMutexId_t osMutexNew (const osMutexAttr_t *attr)
+ osMutexId   osMutexCreate (const osMutexDef_t *mutex_def)
+
+ Create and Initialize a Mutex object.
+

+
    +
  • The function osMutexNew replaces the RTOS v1 function osMutexCreate.
  • +
  • The return type changed to osMutexId_t.
  • +
  • The parameter type changed to osMutexAttr_t.
  • +
+

+
osStatus_t osMutexRelease (osMutexId_t mutex_id)
+ osStatus   osMutexRelease (osMutexId mutex_id)
+
+ Release a Mutex that was acquired by osMutexAcquire.
+

+ +

+Semaphores

+

Refer to Semaphores for details.

+
+
osStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout)
+ none
+
+ Acquire a Semaphore token or timeout if no tokens are available.
+ New function. Replaces osSemaphoreWait.

+
osStatus_t osSemaphoreDelete (osSemaphoreId_t semaphore_id)
+ osStatus   osSemaphoreDelete (osSemaphoreId semaphore_id)
+
+ Delete a Semaphore object.
+

+ +

+
uint32_t osSemaphoreGetCount (osSemaphoreId_t semaphore_id)
+ none
+
+ Get current Semaphore token count.
+ New function.

+
const char *osSemaphoreGetName ((osSemaphoreId_t semaphore_id)
+ none
+
+ Get name of a Semaphore object.
+ New function.

+
osSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr)
+ osSemaphoreId   osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count)
+
+ Create and Initialize a Semaphore object.
+

+
    +
  • The function osSemaphoreNew replaces the RTOS v1 function osSemaphoreCreate.
  • +
  • The return type changed to osSemaphoreId_t.
  • +
  • The parameter list and types have changed.
  • +
+

+
osStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id)
+ osStatus   osSemaphoreRelease (osSemaphoreId semaphore_id)
+
+ Release a Semaphore token up to the initial maximum count.
+

+ +

+
none
+ int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t timeout)
+
+Deprecated. Replaced by osSemaphoreAcquire.

+Memory Pool

+
+
void * osMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout)
+ void * osPoolAlloc  (osPoolId pool_id)
+
+ Allocate a memory block from a Memory Pool.
+

+
    +
  • The function osMemoryPoolAlloc replaces both RTOS v1 functions osPoolAlloc.
  • +
  • The parameter list and types changed.
  • +
+

+
osStatus_t osMemoryPoolDelete (osMemoryPoolId_t mp_id)
+ none
+
+ Delete a Memory Pool object.
+ New function.

+
osStatus_t osMemoryPoolFree (osMemoryPoolId_t mp_id, void * block)
+ osStatus   osPoolFree (osPoolId pool_id, void * block)
+
+ Return an allocated memory block back to a Memory Pool.
+

+
    +
  • The function osMemoryPoolFree replaces the RTOS v1 function osPoolFree.
  • +
  • The first parameter type osMemoryPoolId_t replaces the ROTS v1 type osPoolId.
  • +
+

+
uint32_t osMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id)
+ none
+
+ Get memory block size in a Memory Pool.
+ New function.

+
uint32_t osMemoryPoolGetCapacity (osMemoryPoolId_t mp_id)
+ none
+
+ Get maximum number of memory blocks in a Memory Pool.
+ New function.

+
uint32_t osMemoryPoolGetCount (osMemoryPoolId_t mp_id)
+ none
+
+ Get number of memory blocks used in a Memory Pool.
+ New function.

+
const char *osMemoryPoolGetName ((osMemoryPoolId_t mp_id)
+ none
+
+ Get name of a Memory Pool object.
+ New function.

+
uint32_t osMemoryPoolGetSpace (osMemoryPoolId_t mp_id)
+ none
+
+ Get number of memory blocks available in a Memory Pool.
+ New function.

+
osMemoryPoolId_t osMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr)
+ osPoolId         osPoolCreate (const osPoolDef_t * pool_def)
+
+ Get number of memory blocks available in a Memory Pool.
+

+
    +
  • The function osMemoryPoolNew replaces the RTOS v1 function osPoolCreate.
  • +
  • The return type changed to osMemoryPoolId_t.
  • +
  • Parameter list and parameter types have changed.
  • +
+

+Message Queue

+

In general, messages are now using fixed size memory instead of being 32-bit values. Refer to Message Queue for details.

+
+
osStatus_t osMessageQueueDelete (osMessageQueueId_t mq_id)
+ none
+
+ Delete a Message Queue object.
+ New function.

+
osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout)
+ osEvent    osMessageGet (osMessageQId queue_id, uint32_t timeout)
+
+ Get a Message from a Queue or timeout if Queue is empty.
+

+
    +
  • The function osMessageQueueGet replaces the RTOS v1 function osMessageGet.
  • +
  • The return type changed to osStatus_t.
  • +
  • The parameter list and parameter types have changed.
  • +
+

+
uint32_t osMessageQueueGetCapacity (osMessageQueueId_t mq_id)
+ none
+
+ Get maximum number of messages in a Message Queue.
+ New function.

+
uint32_t osMessageQueueGetCount (osMessageQueueId_t mq_id)
+ none
+
+ Get number of queued messages in a Message Queue.
+ New function.

+
uint32_t osMessageQueueGetMsgSize (osMessageQueueId_t mq_id)
+ none
+
+ Get maximum message size in a Memory Pool.
+ New function.

+
const char *osMessageQueueGetName ((osMessageQueueId_t mq_id)
+ none
+
+ Get name of a Message Queue object.
+ New function.

+
uint32_t osMessageQueueGetSpace (osMessageQueueId_t mq_id)
+ none
+
+ Get number of available slots for messages in a Message Queue.
+ New function.

+
osMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr)
+ osMessageQId       osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id)
+
+ Create and Initialize a Message Queue object.
+

+
    +
  • The function osMessageQueueNew replaces the RTOS v1 function osMessageCreate.
  • +
  • The return type changed to osMessageQueueId_t.
  • +
  • The parameter list and parameter types have changed.
  • +
+

+
osStatus_t osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout)
+ osStatus   osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t timeout)
+
+ Put a Message into a Queue or timeout if Queue is full.
+

+
    +
  • The function osMessageQueuePut replaces the RTOS v1 function osMessagePut.
  • +
  • The return type changed to osStatus_t.
  • +
  • The parameter list and parameter types have changed.
  • +
+

+
osStatus_t osMessageQueueReset (osMessageQueueId_t mq_id)
+ none
+
+ Reset a Message Queue to initial empty state.
+ New function.

+Mail Queue

+

The Mail Queue RTOS v1 functions have been deprecated. Use the functionality of the Message Queue instead. Differences are listed under Message Queue.

+
+
none
+ void * osMailAlloc (osMailQId queue_id, uint32_t timeout)
+
+Deprecated.

+
none
+ void * osMailCAlloc (osMailQId queue_id, uint32_t timeout)
+
+Deprecated.

+
none
+ osMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id)
+
+Deprecated.

+
none
+ osStatus osMailFree (osMailQId queue_id, void *mail)
+
+Deprecated.

+
none
+ osEvent osMailGet (osMailQId queue_id, uint32_t timeout)
+
+Deprecated.

+
none
+ osStatus osMailPut (osMailQId queue_id, void *mail)
+
+Deprecated.

+Signal Events

+

The section RTOS v1 Signal Events has been deprecated. Use the functions listed under Thread Flags instead.

+
+
none
+ int32_t osSignalClear (osThreadId thread_id, int32_t signals)
+
+Deprecated.

+
none
+ int32_t osSignalSet (osThreadId thread_id, int32_t signals)
+
+Deprecated.

+
none
+ osEvent osSignalWait (int32_t signals, uint32_t timeout)
+
+Deprecated.
+
+ + + + diff --git a/docs/RTOS2/html/os2MigrationGuide.html b/docs/RTOS2/html/os2MigrationGuide.html new file mode 100644 index 0000000..d1b662b --- /dev/null +++ b/docs/RTOS2/html/os2MigrationGuide.html @@ -0,0 +1,282 @@ + + + + + +RTX Migration Guide +CMSIS-RTOS2: RTX Migration Guide + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
RTX Migration Guide
+
+
+

RTX5 supplies both API layers: CMSIS-RTOS v1 and CMSIS-RTOS v2. This allows a gradient transition from version 1 to 2. A modified v1 header and a special v1 compatibility module enable existing code to run on a v2 implementation with almost no modifications.

+

Only a few incompatibilities and limitations exist:

+
    +
  • Kernel startup
    +
      +
    • The function osKernelRunning has been removed in CMSIS-RTOS v2, use osKernelGetState() instead.
    • +
    • Function main was usually a running thread in CMSIS-RTOS v1 implementations, which is not the case in CMSIS-RTOS v2 anymore. The Kernel was running even without calling corresponding APIs to initialize and start the Kernel explicitly. In CMSIS-RTOS v2 the Kernel needs be initialized by calling osKernelInitialize() and must be started by calling osKernelStart().
    • +
    +
  • +
  • OS tick
    + RTX5 uses the OS Tick API to configure the tick interrupts. The interval calculation is typically based on SystemCoreClock variable. Thus one has to assure this variable is set correctly before calling osKernelStart.
  • +
  • The function osWait is deprecated.
  • +
  • Error code incompatibility
    + CMSIS-RTOS v1 used two different error codes for invalid parameters: osErrorParameter and osErrorValue. The new version only uses a common osErrorParameter code. Therefore, code relying on osErrorValue is not compatible. The following functions are affected: +
  • +
  • The osDelay return code has changed from osErrorTimeout to osOK.
  • +
+

The level of migration depends on the project's phase in its life cycle:

+
    +
  • The first level of migration is to migrate to RTX5 without changing the API level.
  • +
  • The second level in the transition is to use v2 API functions and v1 API functions in mixed variation.
  • +
  • The third level is the full transition to the API v2. It is non-trivial and requires some additional development effort to migrate all API v1 calls to v2.
  • +
+

+Level 1 Migration - Upgrade to RTX5 on API v1

+

Upgrade to RTX Version 5 from any 4.x version using the API v1 compatibility layer. Configure an existing project as follows:

+
    +
  • Open Manage Run-Time Environment window
  • +
  • Expand CMSIS software component.
  • +
  • Expand RTOS (API), uncheck Keil RTX, and select Keil RTX5.
  • +
  • Expand RTOS2 (API) and select Keil RTX5.
  • +
  • Resolve missing components.
  • +
+
+RTX5_Migrate1.PNG +
+Component Selection for RTX5
+
    +
  • Click OK.
  • +
  • Expand CMSIS group in the Project window:
  • +
  • Open RTX_Config.h and adapt the configuration to suit the application including (refer to Configure RTX v5):
      +
    • System Configuration->Global Dynamic Memory size
    • +
    • Kernel Tick Frequency
    • +
    • Thread Configuration->Default Thread Stack size
    • +
    +
  • +
  • Rename function int main (void) to void app_main (void *arg).
  • +
  • Create a new function int main (void) which implements at least:
      +
    • System initialization and configuration
    • +
    • Update SystemCoreClock
    • +
    • Initialize CMSIS-RTOS kernel
    • +
    • Creates new thread app_main
    • +
    • Start RTOS scheduler
    • +
    +
  • +
+

Example - Application Main Thread

+
#include "RTE_Components.h"
+
#include CMSIS_device_header
+
+
/* Renamed main() function */
+
void app_main (void const *argument) {
+
// contents of old "main"
+
}
+
+
osThreadDef(app_main, osPriorityNormal, 1, 0);
+
+
int main (void) {
+
// System Initialization
+
SystemCoreClockUpdate();
+
// ...
+ +
osThreadCreate(osThread(app_main), NULL);
+ +
for (;;);
+
}
+
Note
In RTOS API v1 all timings were specified in milliseconds. RTX5 defines all times in kernel ticks. To match both it is recommended to set the Kernel Tick Frequency to 1000 Hz in the System Configuration.
+

To validate the correct operation of your RTOS after migration you can temporarily integrate the RTOS Validation component into your project.

+

+Level 2 Migration - Use API v2 and v1 alongside in RTX5

+

Implementing new features in your project is ideally done using the new API. Both API versions are offered in RTX5 and can exist along-side.

+

The component selection is identical to Migration Level 1.

+

Include "cmsis_os2.h" in all modules where access to API v2 functions is required.

+
#include "cmsis_os.h" // ARM::CMSIS:RTOS:Keil RTX5
+
#include "cmsis_os2.h" // ARM::CMSIS:RTOS2:Keil RTX5
+

The following snippet shows how threads - created with both API versions - live along-side:

+
/*----------------------------------------------------------------------------
+
* Thread 4 'phaseD': Phase D output - API v2 thread
+
*---------------------------------------------------------------------------*/
+
void phaseD (void *argument) {
+
for (;;) {
+
osThreadFlagsWait(0x0001, osFlagsWaitAny, osWaitForever); /* wait for an event flag 0x0001 */
+
Switch_On (LED_D);
+
signal_func(tid_phaseA); /* call common signal function */
+
Switch_Off(LED_D);
+
}
+
}
+
+
/*----------------------------------------------------------------------------
+
* Thread 5 'clock': Signal Clock - API v1 thread
+
*---------------------------------------------------------------------------*/
+
void clock (void const *argument) {
+
for (;;) {
+
osSignalWait(0x0100, osWaitForever); /* Wait for event send by API v2 function osThreadFlagsSet() */
+
Switch_On (LED_CLK);
+
osDelay(80); /* delay ticks */
+
Switch_Off(LED_CLK);
+
}
+
}
+
+
/* Define the API v1 thread */
+
osThreadDef(clock, osPriorityNormal, 1, 0);
+
+
/*----------------------------------------------------------------------------
+
* Main: Initialize and start RTX Kernel
+
*---------------------------------------------------------------------------*/
+
void app_main (void *argument) {
+
+
; //...
+
/* Create the API v2 thread */
+
tid_phaseD = osThreadNew(phaseD, NULL, NULL);
+
/* Create the API v1 thread */
+
tid_clock = osThreadCreate(osThread(clock), NULL);
+
+
osThreadFlagsSet(tid_phaseA, 0x0001); /* set signal to phaseA thread */
+
+ +
while(1);
+
}
+

The full example "RTX5 Migration" is part of the CMSIS5 pack and available from the pack installer.

+

+Level 3 Migration - Full transition to API v2

+

Migrating fully to APIv2 reduces the overhead of the translation layer and simplifies the project. There is some effort to replace and re-test all API Version 1 calls. The following steps are recommended as a rough guide-line:

+
    +
  • Open Manage Run-Time Environment window:
  • +
  • Expand CMSIS Software Component:
  • +
  • Expand RTOS (API) Software Component and de-select Keil RTX5
  • +
  • Click OK
  • +
  • Exchange all occurrences of
    #include "cmsis_os.h"
    +
    with
    #include "cmsis_os2.h"
    +
  • +
  • Identify all references to the API v1 and replace with the appropriate calls in v2. You might want to use the Error List window in uVision to identify the related code passages quickly.
  • +
+
Note
See Detailed API Function Differences for details in differences.
+

Generally there are no longer os*Def macros to declare OS objects.

+
Note
    +
  • Signal Events have been replaced. Use the functions listed under Thread Flags and Event Flags instead.
  • +
  • The Mail Queue RTOS v1 functions have been deprecated. Use the functionality of the Message Queue instead. Differences are listed under Message Queue.
  • +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/os__systick_8c.html b/docs/RTOS2/html/os__systick_8c.html new file mode 100644 index 0000000..865978c --- /dev/null +++ b/docs/RTOS2/html/os__systick_8c.html @@ -0,0 +1,135 @@ + + + + + +os_systick.c File Reference +CMSIS-RTOS2: os_systick.c File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.2 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
os_systick.c File Reference
+
+
+ +

CMSIS OS Tick SysTick implementation. +More...

+

Description

+
Version
V1.0.0
+
Date
05. June 2017
+
+
+ + + + diff --git a/docs/RTOS2/html/os__tick_8h.html b/docs/RTOS2/html/os__tick_8h.html new file mode 100644 index 0000000..dcc5d52 --- /dev/null +++ b/docs/RTOS2/html/os__tick_8h.html @@ -0,0 +1,207 @@ + + + + + +os_tick.h File Reference +CMSIS-RTOS2: os_tick.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
os_tick.h File Reference
+
+
+ +

CMSIS OS Tick header file. +More...

+ + + + + +

+Macros

#define IRQHANDLER_T
 IRQ Handler. More...
 
+ + + +

+Typedefs

typedef void(* IRQHandler_t )(void)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

int32_t OS_Tick_Setup (uint32_t freq, IRQHandler_t handler)
 Setup OS Tick timer to generate periodic RTOS Kernel Ticks. More...
 
void OS_Tick_Enable (void)
 Enable OS Tick timer interrupt. More...
 
void OS_Tick_Disable (void)
 Disable OS Tick timer interrupt. More...
 
void OS_Tick_AcknowledgeIRQ (void)
 Acknowledge execution of OS Tick timer interrupt. More...
 
int32_t OS_Tick_GetIRQn (void)
 Get OS Tick timer IRQ number. More...
 
uint32_t OS_Tick_GetClock (void)
 Get OS Tick timer clock frequency. More...
 
uint32_t OS_Tick_GetInterval (void)
 Get OS Tick timer interval reload value. More...
 
uint32_t OS_Tick_GetCount (void)
 Get OS Tick timer counter value. More...
 
uint32_t OS_Tick_GetOverflow (void)
 Get OS Tick timer overflow status. More...
 
+

Description

+
Version
V1.0.1
+
Date
24. November 2017
+

Macro Definition Documentation

+ +
+
+ + + + +
#define IRQHANDLER_T
+
+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef void(* IRQHandler_t)(void)
+
+ +
+
+
+
+ + + + diff --git a/docs/RTOS2/html/own_lib_projwin.png b/docs/RTOS2/html/own_lib_projwin.png new file mode 100644 index 0000000..9802fa5 Binary files /dev/null and b/docs/RTOS2/html/own_lib_projwin.png differ diff --git a/docs/RTOS2/html/pControlBlockSizes.html b/docs/RTOS2/html/pControlBlockSizes.html new file mode 100644 index 0000000..fcb61c7 --- /dev/null +++ b/docs/RTOS2/html/pControlBlockSizes.html @@ -0,0 +1,151 @@ + + + + + +Control Block Sizes +CMSIS-RTOS2: Control Block Sizes + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Control Block Sizes
+
+
+

Keil RTX v5 specific control block definitions (including sizes) as well as memory pool and message queue memory requirements are defined in the header file rtx_os.h:

+

If you provide memory for the RTOS objects, you need to know the size that is required for each object control block. The memory of the control block is provided by the parameter attr of the related osXxxxNew function. The element cb_mem is the memory address, cb_size is the size of the control block memory.

+

Refer to Static Object Memory for more information.

+

The following table lists the control block sizes:

+ + + + + + + + + + + + + + + + + +
Category Control Block Size Attribute Size #define symbol
Thread Management osThreadAttr_t::cb_mem 68 bytes osRtxThreadCbSize
Timer Management osTimerAttr_t::cb_mem 32 bytes osRtxTimerCbSize
Event Flags osEventFlagsAttr_t::cb_mem 16 bytes osRtxEventFlagsCbSize
Mutex Management osMutexAttr_t::cb_mem 28 bytes osRtxMutexCbSize
Semaphores osSemaphoreAttr_t::cb_mem 16 bytes osRtxSemaphoreCbSize
Memory Pool osMemoryPoolAttr_t::cb_mem 36 bytes osRtxMemoryPoolCbSize
Message Queue osMessageQueueAttr_t::cb_mem 52 bytes osRtxMessageQueueCbSize
+
+
+ + + + diff --git a/docs/RTOS2/html/pDirectory_Files.html b/docs/RTOS2/html/pDirectory_Files.html new file mode 100644 index 0000000..b865db1 --- /dev/null +++ b/docs/RTOS2/html/pDirectory_Files.html @@ -0,0 +1,202 @@ + + + + + +Directory Structure and File Overview +CMSIS-RTOS2: Directory Structure and File Overview + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Directory Structure and File Overview
+
+
+

The following section provides an overview of the directory structure and the files that are relevant for the user's for CMSIS-RTOS RTX v5. The following directory references start below the CMSIS pack installation path, for example ARM/CMSIS/version/CMSIS/RTOS2.

+

+RTX v5 Directory Structure

+

The CMSIS-RTOS RTX v5 is delivered in source code and several examples are provided.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Directory Content
Include Header files: cmsis_os2.h for CMSIS-RTOS C API v2 and os_tick.h for OS Tick API.
Source Generic OS tick implementations for various processors based on OS Tick API.
Template CMSIS-RTOS API v1 template source and header file.
RTX Directory with RTX specific files and folders. Also contains the component viewer description file.
RTX/Config CMSIS-RTOS RTX configuration files RTX_Config.h and RTX_Config.c.
RTX/Examples Example projects that can be directly used in development tools.
RTX/Include RTX v5 specific include files.
RTX/Include1 CMSIS-RTOS v1 API header file.
RTX/Library Pre-built libraries (see next table for details).
RTX/Source Source code that can be used with ARMCC and GCC.
RTX/Template User code templates for creating application projects with CMSIS-RTOS RTX v5.
+

+RTX v5 Library Files

+

The CMSIS-RTOS RTX Library is available pre-compiled for ARMCC and GCC compilers and supports all Cortex-M processor variants in every configuration, including Arm Cortex-M23 and Cortex-M33.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Library File Processor Configuration
Library/ARM/RTX_CM0.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M0 and M1, little-endian.
Library/ARM/RTX_CM3.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M3, M4, and M7 without FPU, little-endian.
Library/ARM/RTX_CM4F.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Cortex-M4 and M7 with FPU, little-endian.
Library/ARM/RTX_V8MB.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Armv8-M Baseline.
Library/ARM/RTX_V8MBN.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Armv8-M Baseline, non-secure.
Library/ARM/RTX_V8MM.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Armv8-M Mainline.
Library/ARM/RTX_V8MMF.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Armv8-M Mainline with FPU.
Library/ARM/RTX_V8MMFN.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Armv8-M Mainline with FPU, non-secure.
Library/ARM/RTX_V8MMN.lib CMSIS-RTOS RTX Library for ARMCC Compiler, Armv8-M Mainline, non-secure.
Library/GCC/libRTX_CM0.a CMSIS-RTOS libRTX Library for GCC Compiler, Cortex-M0 and M1, little-endian.
Library/GCC/libRTX_CM3.a CMSIS-RTOS libRTX Library for GCC Compiler, Cortex-M3, M4, and M7 without FPU, little-endian.
Library/GCC/libRTX_CM4F.a CMSIS-RTOS libRTX Library for GCC Compiler, Cortex-M4 and M7 with FPU, little-endian.
Library/GCC/libRTX_V8MB.a CMSIS-RTOS libRTX Library for GCC Compiler, Armv8-M Baseline.
Library/GCC/libRTX_V8MBN.a CMSIS-RTOS libRTX Library for GCC Compiler, Armv8-M Baseline, non-secure.
Library/GCC/libRTX_V8MM.a CMSIS-RTOS libRTX Library for GCC Compiler, Armv8-M Mainline.
Library/GCC/libRTX_V8MMF.a CMSIS-RTOS libRTX Library for GCC Compiler, Armv8-M Mainline with FPU.
Library/GCC/libRTX_V8MMFN.a CMSIS-RTOS libRTX Library for GCC Compiler, Armv8-M Mainline with FPU, non-secure.
Library/GCC/libRTX_V8MMN.a CMSIS-RTOS libRTX Library for GCC Compiler, Armv8-M Mainline, non-secure.
+
+
+ + + + diff --git a/docs/RTOS2/html/pHardwareRequirements.html b/docs/RTOS2/html/pHardwareRequirements.html new file mode 100644 index 0000000..fac09bb --- /dev/null +++ b/docs/RTOS2/html/pHardwareRequirements.html @@ -0,0 +1,221 @@ + + + + + +Hardware Requirements +CMSIS-RTOS2: Hardware Requirements + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Hardware Requirements
+
+
+

The following section lists the hardware requirements for RTX v5 on the various supported target processors:

+

+Processor Requirements

+

RTX assumes a fully function-able processor and uses the following hardware features. It does not implement any confidence test for processor validation which should be provided by an user-supplied software test library.

+

+Cortex-M0/M0+/M23 target processor

+ + + + + + + + + + + + + +
Hardware Requirement Description
SysTick timer The SysTick timer generates the kernel tick interrupts and the interface is implemented in os_systick.c using the OS Tick API
Exception Handler RTX implements exception handlers for SVC, PendSV, and SysTick interrupt
Core Registers The processor status is read using the following core registers: CONTROL, IPSR, PRIMASK
System Control Block (SBC) To control and setup the processor exceptions including PendSV and SVC
Interrupt Control The CMSIS-Core functions __disable_irq and __enable_irq to control the interrupt system via the CPSR core register.
+

The interface files to the processor hardware are:

+
    +
  • irq_cm0.s defines exception handlers for Cortex-M0/M0+
  • +
  • irq_armv8mbl_common.s defines exception handlers for Cortex-M23
  • +
  • rtx_core_cm.h defines processor specific helper functions and the interfaces to Core Registers and Core Peripherals.
  • +
  • os_tick.h is the OS Tick API that defines the interface functions to the SysTick timer.
  • +
+
Note
    +
  • The CMSIS-Core variable SystemCoreClock is used to configure the SysTick timer.
  • +
+
+

+Cortex-M3/M4/M7/M33 target processor

+ + + + + + + + + + + + + + + +
Hardware Requirement Description
SysTick timer The SysTick timer generates the kernel tick interrupts and the interface is implemented in os_systick.c using the OS Tick API
Exception Handler RTX implements exception handlers for SVC, PendSV, and SysTick interrupt
Core Registers The processor status is read using the following core registers: CONTROL, IPSR, PRIMASK, BASEPRI
System Control Block (SBC) To control and setup the processor exceptions including PendSV and SVC
NVIC Interface The CMSIS-Core function NVIC_GetPriorityGrouping to setup interrupt priorities.
LDREX, STREX instruction Atomic execution avoids the requirement to disable interrupts and is implemented via exclusive access instructions.
+

The interface files to the processor hardware are:

+
    +
  • irq_cm3.s defines exception handlers for Cortex-M3 and Cortex-M4/M7 without floating point unit.
  • +
  • irq_cm4f.s defines exception handlers for Cortex-M4/M7 with floating point unit.
  • +
  • irq_armv8mml_common.s defines exception handlers for Cortex-M33
  • +
  • rtx_core_cm.h defines processor specific helper functions and the interfaces to Core Registers and Core Peripherals.
  • +
  • os_tick.h is the OS Tick API that defines the interface functions to the SysTick timer.
  • +
+
Note
    +
  • The CMSIS-Core variable SystemCoreClock is used to configure the SysTick timer.
  • +
+
+

+Cortex-A5/A7/A9 target processor

+ + + + + + + + + + + + + +
Hardware Requirement Description
Timer Peripheral An arbitrary timer peripheral generates the kernel tick interrupts. The interfaces for Cortex-A Generic Timer and Private Timer are implemented in os_tick_gtim.c and os_tick_ptim.c using the OS Tick API
Exception Handler RTX implements exception handlers for SVC, IRQ, Data Abort, Prefetch Abort and Undefined Instruction interrupt.
Core Registers The processor status is read using the following core registers: CPSR, CPACR and FPSCR.
LDREX, STREX instruction Atomic execution avoids the requirement to disable interrupts and is implemented via exclusive access instructions.
Interrupt Controller An interrupt controller interface is required to setup and control Timer Peripheral interrupt. The interface for Arm GIC (Generic Interrupt Controller) is implemented in irq_ctrl_gic.c using the IRQ Controller API.
+

The interface files to the processor hardware are:

+
    +
  • irq_ca.s defines SVC, IRQ, Data Abort, Prefetch Abort and Undefined Instruction exception handlers.
  • +
  • rtx_core_ca.h defines processor specific helper functions and the interfaces to Core Registers and Core Peripherals.
  • +
  • os_tick.h is the OS Tick API that defines the interface functions to the timer peripheral.
  • +
  • irq_ctrl.h is the IRQ Controller API that defines the interface functions to the interrupt controller.
  • +
+
Note
    +
  • The CMSIS-Core variable SystemCoreClock is used to configure the timer peripheral.
  • +
+
+

+Memory Requirements

+

RTX requires RAM memory that is accessible with contiguous linear addressing. When memory is split across multiple memory banks, some systems do not accept multiple load or store operations on this memory blocks.

+

RTX does not implement any confidence test for memory validation. This should be implemented by an user-supplied software test library.

+
+
+ + + + diff --git a/docs/RTOS2/html/pToolchains.html b/docs/RTOS2/html/pToolchains.html new file mode 100644 index 0000000..7f260b6 --- /dev/null +++ b/docs/RTOS2/html/pToolchains.html @@ -0,0 +1,161 @@ + + + + + +Supported Toolchains +CMSIS-RTOS2: Supported Toolchains + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Supported Toolchains
+
+
+

Keil RTX5 is developed and tested using the common toolchains and development environments.

+

+Arm Compiler (Arm/Keil MDK, uVision5)

+

RTX5 is initially developed and optimized using Arm Compiler and Arm/Keil MDK. The current release is tested with the following versions:

+
    +
  • +Arm Compiler 5.06 Update 6
  • +
  • +Arm Compiler 6.6.2 (Long Term Maintenance)
  • +
  • +Arm Compiler 6.9
  • +
  • +RTOS-aware debugging with uVision 5.24
  • +
+

+IAR Embedded Workbench

+

RTX5 has been ported to the IAR Embedded Workbench. The following releases are known to work:

+
    +
  • +IAR Embedded Workbench 7.7 (community report)
  • +
  • +IAR Embedded Workbench 7.80.4
  • +
  • +IAR Embedded Workbench 8.20.1
  • +
+

+GNU Compiler Collection

+

RTX5 has also been ported to support GCC, maintenance mainly relays on community contribution. Active development is currently tested with:

+
    +
  • +GNU Tools for Arm Embedded 6.3.1 20170620
  • +
+
+
+ + + + diff --git a/docs/RTOS2/html/pages.html b/docs/RTOS2/html/pages.html new file mode 100644 index 0000000..a819afc --- /dev/null +++ b/docs/RTOS2/html/pages.html @@ -0,0 +1,133 @@ + + + + + +Usage and Description +CMSIS-RTOS2: Usage and Description + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-RTOS2 +  Version 2.1.3 +
+
Real-Time Operating System: API and RTX Reference Implementation
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Usage and Description
+
+
+
Here is a list of all related documentation pages:
+ + +
\Coding Rules
+
+
+
+ + + + diff --git a/docs/RTOS2/html/printComponentTabs.js b/docs/RTOS2/html/printComponentTabs.js new file mode 100644 index 0000000..8afdb6b --- /dev/null +++ b/docs/RTOS2/html/printComponentTabs.js @@ -0,0 +1,39 @@ +var strgURL = location.pathname; // path of current component + +// constuctor for the array of objects +function tabElement(id, folderName, tabTxt ) { + this.id = id; // elementID as needed in html; + this.folderName = folderName; // folder name of the component + this.tabTxt = tabTxt; // Text displayed as menu on the web + this.currentListItem = '
  • ' + this.tabTxt + '
  • '; + this.listItem = '
  • ' + this.tabTxt + '
  • '; +}; + +// array of objects +var arr = []; + +// fill array + arr.push( new tabElement( "GEN", "/General/html/", "General") ); + arr.push( new tabElement( "CORE_A", "/Core_A/html/", "CMSIS-Core(A)") ); + arr.push( new tabElement( "CORE_M", "/Core/html/", "CMSIS-Core(M)") ); + arr.push( new tabElement( "DRV", "/Driver/html/", "Driver") ); + arr.push( new tabElement( "DSP", "/DSP/html/", "DSP") ); + arr.push( new tabElement( "NN", "/NN/html/", "NN") ); + arr.push( new tabElement( "RTOSv1", "/RTOS/html/", "RTOS v1") ); + arr.push( new tabElement( "RTOSv2", "/RTOS2/html/", "RTOS v2") ); + arr.push( new tabElement( "PACK", "/Pack/html/", "Pack") ); + arr.push( new tabElement( "SVD", "/SVD/html/", "SVD") ); + arr.push( new tabElement( "DAP", "/DAP/html/", "DAP") ); + arr.push( new tabElement( "ZONE", "/Zone/html/", "Zone") ); + +// write tabs +// called from the header file. +function writeComponentTabs() { + for ( var i=0; i < arr.length; i++ ) { + if (strgURL.search(arr[i].folderName) > 0) { // if this is the current folder + document.write(arr[i].currentListItem); // then print and hightlight the tab + } else { + document.write(arr[i].listItem); // else, print the tab + } + } +}; diff --git a/docs/RTOS2/html/project_window.png b/docs/RTOS2/html/project_window.png new file mode 100644 index 0000000..137ae14 Binary files /dev/null and b/docs/RTOS2/html/project_window.png differ diff --git a/docs/RTOS2/html/resize.js b/docs/RTOS2/html/resize.js new file mode 100644 index 0000000..304fcb6 --- /dev/null +++ b/docs/RTOS2/html/resize.js @@ -0,0 +1,97 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(document).bind('touchmove',function(e){ + var device = navigator.userAgent.toLowerCase(); + var ios = device.match(/(iphone|ipod|ipad)/); + if (ios) { + try { + var target = e.target; + while (target) { + if ($(target).css('-webkit-overflow-scrolling')=='touch') return; + target = target.parentNode; + } + e.preventDefault(); + } catch(err) { + e.preventDefault(); + } + } + }); +} + + diff --git a/docs/RTOS2/html/rtosValidation.html b/docs/RTOS2/html/rtosValidation.html new file mode 100644 index 0000000..a909f61 --- /dev/null +++ b/docs/RTOS2/html/rtosValidation.html @@ -0,0 +1,172 @@ + + + + + +RTOS Validation +CMSIS-RTOS2: RTOS Validation + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    RTOS Validation
    +
    +
    +

    Arm offers a Software Pack for the CMSIS-RTOS Validation. The ARM::CMSIS-RTOS_Validation Pack contains the following:

    +
      +
    • Source code of a CMSIS-RTOS Validation Suite along with configuration file.
    • +
    • Documentation of the CMSIS-RTOS Validation Suite.
    • +
    • Example that shows the usage of the CMSIS-RTOS Validation Suite using simulation.
    • +
    +
    Note
    Currently, a public version of the test suite is available only for CMSIS-RTOS v1 API.
    +

    The CMSIS-RTOS Validation Suite performs generic validation of various RTOS features. The test cases verify the functional behavior, test invalid parameters and call management functions from ISR.

    +

    The following CMSIS-RTOS features can be tested with the current release:

    +
      +
    • Thread : Create multiple threads, terminate, restart, yield, change priority
    • +
    • Timer : Create periodic and one-shot timers
    • +
    • GenWait : Call generic wait functions (osDelay and osWait)
    • +
    • WaitFunc : Measure wait ticks (delay, mail, message, mutex, semaphore, signal)
    • +
    +

    Moreover the following inter-thread communication functions can be tested:

    +
      +
    • Signal : Verify signal events
    • +
    • Memory Pool : Verify memory allocation
    • +
    • Message Queue : Exchange messages between threads
    • +
    • Mail Queue : Exchange data between threads
    • +
    • Mutex : Synchronize resource access
    • +
    • Semaphore : Access shared resources
    • +
    +

    The RTOS Validation output can be printed to a console, output via ITM printf, or output to a memory buffer.

    +

    +Sample Test Output

    +
    CMSIS-RTOS Test Suite   Oct 21 2015   16:39:16 
    +
    +TEST 01: TC_ThreadCreate                  PASSED
    +TEST 02: TC_ThreadMultiInstance           PASSED
    +TEST 03: TC_ThreadTerminate               PASSED
    +  :
    +  :
    +TEST 08: TC_ThreadChainedCreate           PASSED
    +TEST 09: TC_ThreadYield                   NOT EXECUTED
    +TEST 10: TC_ThreadParam                   PASSED
    +  :
    +  :
    +TEST 60: TC_MailFromISRToThread           PASSED
    +
    +Test Summary: 60 Tests, 59 Executed, 59 Passed, 0 Failed, 0 Warnings.
    +Test Result: PASSED
    +
    +
    + + + + diff --git a/docs/RTOS2/html/rtos_api2.html b/docs/RTOS2/html/rtos_api2.html new file mode 100644 index 0000000..31420e6 --- /dev/null +++ b/docs/RTOS2/html/rtos_api2.html @@ -0,0 +1,275 @@ + + + + + +CMSIS-RTOS C API v2 +CMSIS-RTOS2: CMSIS-RTOS C API v2 + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    CMSIS-RTOS C API v2
    +
    +
    +

    Overview of all CMSIS-RTOS C API v2 functions that are implemented in the cmsis_os2.h header file.

    +

    +Common Design Concepts

    +

    All RTOS objects share a common design concept. The overall life-cycle of an object can be summarized as created -> in use -> destroyed.

    +

    Create Objects

    +

    An object is created by calling its osXxxNew function. The new function returns an identifier that can be used to operate with the new object. The actual state of an object is typically stored in an object specific control block. The memory layout (and size needed) for the control block is implementation specific. One should not make any specific assumptions about the control block. The control block layout might change and hence should be seen as an implementation internal detail.

    +

    In order to expose control about object specific options all osXxxNew functions provide an optional attr argument, which can be left as NULL by default. It takes a pointer to an object specific attribute structure, commonly containing the fields

    +
      +
    • name to attach a human readable name to the object for identification,
    • +
    • attr_bits to control object-specific options,
    • +
    • cb_mem to provide memory for the control block manually, and
    • +
    • cb_size to quantify the memory size provided for the control block.
    • +
    +

    The name attribute is only used for object identification, e.g. using RTOS-aware debugging. The attached string is not used for any other purposes internally.

    +

    The cb_mem and cb_size attributes can be used to provide memory for the control block manually instead of relying on the implementation internal memory allocation. One has to assure that the amount of memory pointed to by cb_mem is sufficient for the objects control block structure. If the size given as cb_size is not sufficient the osXxxNew function returns with an error, i.e. returning NULL. Furthermore providing control block memory manually is less portable. Thus one has to take care about implementation specific alignment and placement requirements for instance. Refer to Memory Management for further details.

    +

    Object Usage

    +

    After an object has been created successfully it can be used until it is destroyed. The actions defined for an object depends on its type. Commonly all the osXxxDoSomething access function require the reference to the object to work with as the first xxx_id parameter.

    +

    The access function can be assumed to apply some sort of sanity checking on the id parameter. So that it is assured one cannot accidentally call an access function with a NULL object reference. Furthermore the concrete object type is verified, i.e. one cannot call access functions of one object type with a reference to another object type.

    +

    All further parameter checks applied are either object and action specific or may even be implementation specific. Thus one should always check action function return values for osErrorParameter to asure the provided arguments were accepted.

    +

    As a rule of thumb only non-blocking access function can be used from Interrupt Service Routines (ISR). This incorporates osXxxWait functions (and similar) limited to be called with parameter timeout set to 0, i.e. usage of try-semantics.

    +

    Object Destruction

    +

    Objects that are not needed anymore can be destructed on demand to free the control block memory. Objects are not destructed implicitly. Thus one can assume an object id to be valid until osXxxDelete is called explicitly. The delete function finally frees the control block memory. In case of user provided control block memory, see above, the memory must be freed manually as well.

    +

    The only exception one has to take care of are Threads which do not have an explicit osThreadDelete function. Threads can either be detached or joinable. Detached threads are automatically destroyed on termination, i.e. call to osThreadTerminate or osThreadExit or return from thread function. On the other hand joinable threads are kept alive until one explicitly calls osThreadJoin.

    +

    +Function Reference

    + +

    The following CMSIS-RTOS C API v2 functions can be called from threads and Interrupt Service Routines (ISR):

    + +
    +
    + + + + diff --git a/docs/RTOS2/html/rtos_apicpp.html b/docs/RTOS2/html/rtos_apicpp.html new file mode 100644 index 0000000..d6cf733 --- /dev/null +++ b/docs/RTOS2/html/rtos_apicpp.html @@ -0,0 +1,130 @@ + + + + + +CMSIS-RTOS C++ API +CMSIS-RTOS2: CMSIS-RTOS C++ API + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    CMSIS-RTOS C++ API
    +
    +
    +

    A C++11/C++14 interface is planned for the future.

    +
    +
    + + + + diff --git a/docs/RTOS2/html/rtos_os_tick_api.html b/docs/RTOS2/html/rtos_os_tick_api.html new file mode 100644 index 0000000..a2dfaca --- /dev/null +++ b/docs/RTOS2/html/rtos_os_tick_api.html @@ -0,0 +1,144 @@ + + + + + +OS Tick API +CMSIS-RTOS2: OS Tick API + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    OS Tick API
    +
    +
    +

    The CMSIS OS Tick API may be used by an RTOS implementation to be easily potable across the different Cortex-M and Cortex-A processors. It provides a generic interface to a kernel system tick timer and defines the following functions:

    + +
    +
    + + + + diff --git a/docs/RTOS2/html/rtos_revisionHistory.html b/docs/RTOS2/html/rtos_revisionHistory.html new file mode 100644 index 0000000..bde1a04 --- /dev/null +++ b/docs/RTOS2/html/rtos_revisionHistory.html @@ -0,0 +1,265 @@ + + + + + +Revision History +CMSIS-RTOS2: Revision History + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Revision History
    +
    +
    +

    +CMSIS-RTOS API Version 2

    + + + + + + + + + + + + + + + + + + + + + + + +
    Version Description
    V2.1.3 Additional functions allowed to be called from Interrupt Service Routines: +
    V2.1.2 Additional functions allowed to be called from Interrupt Service Routines: +
    V2.1.1

    Additional functions allowed to be called from Interrupt Service Routines:

    + +

    Changed Kernel Tick type to uint32_t:

    + +
    V2.1.0

    Support for critical and uncritical sections (nesting safe):

    + +

    Updated Thread Flags and Event Flags:

    +
      +
    • changed flags parameter and return type from int32_t to uint32_t
    • +
    +
    V2.0.0 New API Version 2.0 available. +
    V1.02 - only documentation changes Added: Overview of the CMSIS-RTOS Validation Software Pack.
    + Clarified: Behavior of Timeout Value.
    V1.02 Added: New control functions for short timeouts in microsecond resolution osKernelSysTick, osKernelSysTickFrequency, osKernelSysTickMicroSec.
    + Removed: osSignalGet. fv
    V1.01 Added capabilities for C++, kernel initialization and object deletion.
    + Prepared for C++ class interface. In this context to const attribute has been moved from osXxxxDef_t typedefs to the osXxxxDef macros.
    + Added: osTimerDelete, osMutexDelete, osSemaphoreDelete.
    + Added: osKernelInitialize that prepares the kernel for object creation.
    +
    V1.00 First official Release.
    + Added: osKernelStart; starting 'main' as a thread is now an optional feature.
    + Semaphores have now the standard behavior.
    + osTimerCreate does no longer start the timer. Added: osTimerStart (replaces osTimerRestart).
    + Changed: osThreadPass is renamed to osThreadYield.
    V0.02 Preview Release.
    +

    +CMSIS-RTOS RTX Version 5

    + + + + + + + + + + + + + + + + + + + +
    Version Description
    V5.4.0
      +
    • Based on CMSIS-RTOS API V2.1.3.
    • +
    • Added support for Event Recorder initialization and filter setup.
    • +
    • Added support to use RTOS as Event Recorder Time Stamp source.
    • +
    • Fixed osDelayUntil longest delay (limited to 2^31-1).
    • +
    • Fixed optimization issue when using GCC optimization level 3.
    • +
    • Fixed osMemoryPoolAlloc to avoid potential race condition.
    • +
    • Restructured exception handling for Cortex-A devices.
    • +
    • Minor code optimizations (removed unnecessary checks).
    • +
    +
    V5.3.0
      +
    • Added Object Memory usage counters.
    • +
    • Added support for additional external configuration file.
    • +
    • Added user configurable names for system threads (Idle and Timer).
    • +
    • Added support for OS sections when using ARMCC5.
    • +
    • Added callback for MPU integration (experimental)
    • +
    • Increased default thread stack sizes to 256 bytes.
    • +
    • Fixed stack context display for running thread in SCVD.
    • +
    • Enhanced MISRA Compliance.
    • +
    +
    V5.2.3
      +
    • Based on CMSIS-RTOS API V2.1.2.
    • +
    • Added TrustZone Module Identifier configuration for Idle and Timer Thread.
    • +
    • Moved SVC/PendSV handler priority setup from osKernelInitialize to osKernelStart (User Priority Grouping can be updated after osKernelInitialize but before osKernelStart).
    • +
    • Corrected SysTick and PendSV handlers for ARMv8-M Baseline.
    • +
    • Corrected memory allocation for stack and data when "Object specific Memory allocation" configuration is used.
    • +
    • Added support for ARMv8-M IAR compiler.
    • +
    +
    V5.2.2
      +
    • Corrected IRQ and SVC exception handlers for Cortex-A.
    • +
    +
    V5.2.1
      +
    • Corrected SysTick and SVC Interrupt Priority for Cortex-M.
    • +
    +
    V5.2.0
      +
    • Based on CMSIS-RTOS API V2.1.1.
    • +
    • Added support for for Cortex-A.
    • +
    • Using OS Tick API for RTX Kernel Timer Tick.
    • +
    • Fixed potential corruption of terminated threads list.
    • +
    • Corrected MessageQueue to use actual message length (before padding).
    • +
    • Corrected parameters for ThreadEnumerate and MessageQueueInserted events.
    • +
    • Timer Thread creation moved to osKernelStart.
    • +
    +
    V5.1.0
      +
    • Based on CMSIS-RTOS API V2.1.0.
    • +
    • Added support for Event recording.
    • +
    • Added support for IAR compiler.
    • +
    • Updated configuration files: RTX_Config.h for the configuration settings and RTX_config.c for implementing the RTX v5 Specific API.
    • +
    • osRtx name-space for RTX specific symbols.
    • +
    +
    V5.0.0 Initial release compliant to CMSIS-RTOS2.
    +
    +
    +
    + + + + diff --git a/docs/RTOS2/html/rtx5_impl.html b/docs/RTOS2/html/rtx5_impl.html new file mode 100644 index 0000000..de1d804 --- /dev/null +++ b/docs/RTOS2/html/rtx5_impl.html @@ -0,0 +1,139 @@ + + + + + +RTX v5 Implementation +CMSIS-RTOS2: RTX v5 Implementation + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    RTX v5 Implementation
    +
    +
    +

    Keil RTX version 5 (RTX5) implements the CMSIS-RTOS2 as a native RTOS interface for Arm Cortex-M processor-based devices. A translation layer to CMSIS-RTOS API v1 is provided. Therefore, RTX5 can be used in applications that where previously based on RTX version 4 and CMSIS-RTOS version 1 with minimal effort.

    +

    The following sections provide further details:

    + +
    +
    + + + + diff --git a/docs/RTOS2/html/rtx5_impl.js b/docs/RTOS2/html/rtx5_impl.js new file mode 100644 index 0000000..2fa6c97 --- /dev/null +++ b/docs/RTOS2/html/rtx5_impl.js @@ -0,0 +1,81 @@ +var rtx5_impl = +[ + [ "Create an RTX5 Project", "cre_rtx_proj.html", [ + [ "Additional requirements for RTX on Cortex-A", "cre_rtx_proj.html#cre_rtx_cortexa", null ], + [ "Using Interrupts on Cortex-M", "cre_rtx_proj.html#cre_UsingIRQs", null ], + [ "Add support for RTX specific functions", "cre_rtx_proj.html#cre_rtx_proj_specifics", null ], + [ "Add Event Recorder Visibility", "cre_rtx_proj.html#cre_rtx_proj_er", null ] + ] ], + [ "Theory of Operation", "theory_of_operation.html", [ + [ "System Startup", "theory_of_operation.html#SystemStartup", null ], + [ "Scheduler", "theory_of_operation.html#Scheduler", null ], + [ "Memory Allocation", "theory_of_operation.html#MemoryAllocation", [ + [ "Global Memory Pool", "theory_of_operation.html#GlobalMemoryPool", null ], + [ "Object-specific Memory Pools", "theory_of_operation.html#ObjectMemoryPool", null ], + [ "Static Object Memory", "theory_of_operation.html#StaticObjectMemory", null ] + ] ], + [ "Thread Stack Management", "theory_of_operation.html#ThreadStack", null ], + [ "Low-Power Operation", "theory_of_operation.html#lowPower", null ], + [ "RTX Kernel Timer Tick", "theory_of_operation.html#kernelTimer", [ + [ "Tick-less Low-Power Operation", "theory_of_operation.html#TickLess", null ] + ] ], + [ "RTX5 Header File", "theory_of_operation.html#rtx_os_h", null ], + [ "Timeout Value", "theory_of_operation.html#CMSIS_RTOS_TimeOutValue", null ], + [ "Calls from Interrupt Service Routines", "theory_of_operation.html#CMSIS_RTOS_ISR_Calls", null ] + ] ], + [ "Configure RTX v5", "config_rtx5.html", [ + [ "System Configuration", "config_rtx5.html#systemConfig", [ + [ "Global dynamic memory", "config_rtx5.html#systemConfig_glob_mem", null ], + [ "Round-Robin Thread Switching", "config_rtx5.html#systemConfig_rr", null ], + [ "ISR FIFO Queue", "config_rtx5.html#systemConfig_isr_fifo", null ], + [ "Object Memory Usage Counters", "config_rtx5.html#systemConfig_usage_counters", null ] + ] ], + [ "Thread Configuration", "config_rtx5.html#threadConfig", [ + [ "Configuration of Thread Count and Stack Space", "config_rtx5.html#threadConfig_countstack", null ], + [ "Stack Overflow Checking", "config_rtx5.html#threadConfig_ovfcheck", null ], + [ "Stack Usage Watermark", "config_rtx5.html#threadConfig_watermark", null ], + [ "Processor Mode for Thread Execution", "config_rtx5.html#threadConfig_procmode", null ] + ] ], + [ "Timer Configuration", "config_rtx5.html#timerConfig", [ + [ "Object-specific memory allocation", "config_rtx5.html#timerConfig_obj", null ], + [ "User Timer Thread", "config_rtx5.html#timerConfig_user", null ] + ] ], + [ "Event Flags Configuration", "config_rtx5.html#eventFlagsConfig", [ + [ "Object-specific memory allocation", "config_rtx5.html#eventFlagsConfig_obj", null ] + ] ], + [ "Mutex Configuration", "config_rtx5.html#mutexConfig", [ + [ "Object-specific Memory Allocation", "config_rtx5.html#mutexConfig_obj", null ] + ] ], + [ "Semaphore Configuration", "config_rtx5.html#semaphoreConfig", [ + [ "Object-specific memory allocation", "config_rtx5.html#semaphoreConfig_obj", null ] + ] ], + [ "Memory Pool Configuration", "config_rtx5.html#memPoolConfig", [ + [ "Object-specific memory allocation", "config_rtx5.html#memPoolConfig_obj", null ] + ] ], + [ "Message Queue Configuration", "config_rtx5.html#msgQueueConfig", [ + [ "Object-specific memory allocation", "config_rtx5.html#msgQueueConfig_obj", null ] + ] ], + [ "Event Recorder Configuration", "config_rtx5.html#evtrecConfig", [ + [ "Global Configuration", "config_rtx5.html#evtrecConfigGlobIni", null ], + [ "RTOS Event Generation", "config_rtx5.html#evtrecConfigEvtGen", null ], + [ "Manual event configuration", "config_rtx5.html#systemConfig_event_recording", null ] + ] ] + ] ], + [ "Building the RTX5 Library", "creating_RTX5_LIB.html", null ], + [ "Technical Data", "technicalData5.html", "technicalData5" ], + [ "MISRA C:2012 Compliance", "misraCompliance5.html", [ + [ "[MISRA Note 1]: Return statements for parameter checking", "misraCompliance5.html#MISRA_1", null ], + [ "[MISRA Note 2]: Object identifiers are void pointers", "misraCompliance5.html#MISRA_2", null ], + [ "[MISRA Note 3]: Conversion to unified object control blocks", "misraCompliance5.html#MISRA_3", null ], + [ "[MISRA Note 4]: Conversion from unified object control blocks", "misraCompliance5.html#MISRA_4", null ], + [ "[MISRA Note 5]: Conversion to object types", "misraCompliance5.html#MISRA_5", null ], + [ "[MISRA Note 6]: Conversion from user provided storage", "misraCompliance5.html#MISRA_6", null ], + [ "[MISRA Note 7]: Check for proper pointer alignment", "misraCompliance5.html#MISRA_7", null ], + [ "[MISRA Note 8]: Memory allocation management", "misraCompliance5.html#MISRA_8", null ], + [ "[MISRA Note 9]: Pointer conversions for register access", "misraCompliance5.html#MISRA_9", null ], + [ "[MISRA Note 10]: SVC calls use function-like macros", "misraCompliance5.html#MISRA_10", null ], + [ "[MISRA Note 11]: SVC calls use assembly code", "misraCompliance5.html#MISRA_11", null ], + [ "[MISRA Note 12]: Usage of exclusive access instructions", "misraCompliance5.html#MISRA_12", null ], + [ "[MISRA Note 13]: Usage of Event Recorder", "misraCompliance5.html#MISRA_13", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__evr_8h.html b/docs/RTOS2/html/rtx__evr_8h.html new file mode 100644 index 0000000..d34903a --- /dev/null +++ b/docs/RTOS2/html/rtx__evr_8h.html @@ -0,0 +1,1498 @@ + + + + + +rtx_evr.h File Reference +CMSIS-RTOS2: rtx_evr.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    rtx_evr.h File Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define osRtxErrorKernelNotReady   (-7)
     Extended Status codes. More...
     
    #define osRtxErrorKernelNotRunning   (-8)
     
    #define osRtxErrorInvalidControlBlock   (-9)
     
    #define osRtxErrorInvalidDataMemory   (-10)
     
    #define osRtxErrorInvalidThreadStack   (-11)
     
    #define osRtxErrorInvalidPriority   (-12)
     
    #define osRtxErrorThreadNotJoinable   (-13)
     
    #define osRtxErrorMutexNotOwned   (-14)
     
    #define osRtxErrorMutexNotLocked   (-15)
     
    #define osRtxErrorMutexLockLimit   (-16)
     
    #define osRtxErrorSemaphoreCountLimit   (-17)
     
    #define osRtxErrorTZ_InitContext_S   (-18)
     
    #define osRtxErrorTZ_AllocContext_S   (-19)
     
    #define osRtxErrorTZ_FreeContext_S   (-20)
     
    #define osRtxErrorTZ_LoadContext_S   (-21)
     
    #define osRtxErrorTZ_SaveContext_S   (-22)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void EvrRtxMemoryInit (void *mem, uint32_t size, uint32_t result)
     Event on memory initialization (Op) More...
     
    void EvrRtxMemoryAlloc (void *mem, uint32_t size, uint32_t type, void *block)
     Event on memory allocate (Op) More...
     
    void EvrRtxMemoryFree (void *mem, void *block, uint32_t result)
     Event on memory free (Op) More...
     
    void EvrRtxMemoryBlockInit (osRtxMpInfo_t *mp_info, uint32_t block_count, uint32_t block_size, void *block_mem)
     Event on memory block initialization (Op) More...
     
    void EvrRtxMemoryBlockAlloc (osRtxMpInfo_t *mp_info, void *block)
     Event on memory block alloc (Op) More...
     
    void EvrRtxMemoryBlockFree (osRtxMpInfo_t *mp_info, void *block, int32_t status)
     Event on memory block free (Op) More...
     
    void EvrRtxKernelError (int32_t status)
     Event on RTOS kernel error (Error) More...
     
    void EvrRtxKernelInitialize (void)
     Event on RTOS kernel initialize (API) More...
     
    void EvrRtxKernelInitialized (void)
     Event on successful RTOS kernel initialize (Op) More...
     
    void EvrRtxKernelGetInfo (osVersion_t *version, char *id_buf, uint32_t id_size)
     Event on RTOS kernel information retrieve (API) More...
     
    void EvrRtxKernelInfoRetrieved (osVersion_t *version, char *id_buf)
     Event on successful RTOS kernel information retrieve (Op) More...
     
    void EvrRtxKernelGetState (osKernelState_t state)
     Event on current RTOS Kernel state retrieve (API) More...
     
    void EvrRtxKernelStart (void)
     Event on RTOS Kernel scheduler start (API) More...
     
    void EvrRtxKernelStarted (void)
     Event on successful RTOS Kernel scheduler start (Op) More...
     
    void EvrRtxKernelLock (void)
     Event on RTOS Kernel scheduler lock (API) More...
     
    void EvrRtxKernelLocked (int32_t lock)
     Event on successful RTOS Kernel scheduler lock (Op) More...
     
    void EvrRtxKernelUnlock (void)
     Event on RTOS Kernel scheduler unlock (API) More...
     
    void EvrRtxKernelUnlocked (int32_t lock)
     Event on successful RTOS Kernel scheduler unlock (Op) More...
     
    void EvrRtxKernelRestoreLock (int32_t lock)
     Event on RTOS Kernel scheduler lock state restore (API) More...
     
    void EvrRtxKernelLockRestored (int32_t lock)
     Event on successful RTOS Kernel scheduler lock state restore (Op) More...
     
    void EvrRtxKernelSuspend (void)
     Event on RTOS Kernel scheduler suspend (API) More...
     
    void EvrRtxKernelSuspended (uint32_t sleep_ticks)
     Event on successful RTOS Kernel scheduler suspend (Op) More...
     
    void EvrRtxKernelResume (uint32_t sleep_ticks)
     Event on RTOS Kernel scheduler resume (API) More...
     
    void EvrRtxKernelResumed (void)
     Event on successful RTOS Kernel scheduler resume (Op) More...
     
    void EvrRtxKernelGetTickCount (uint32_t count)
     Event on RTOS kernel tick count retrieve (API) More...
     
    void EvrRtxKernelGetTickFreq (uint32_t freq)
     Event on RTOS kernel tick frequency retrieve (API) More...
     
    void EvrRtxKernelGetSysTimerCount (uint32_t count)
     Event on RTOS kernel system timer count retrieve (API) More...
     
    void EvrRtxKernelGetSysTimerFreq (uint32_t freq)
     Event on RTOS kernel system timer frequency retrieve (API) More...
     
    void EvrRtxThreadError (osThreadId_t thread_id, int32_t status)
     Event on thread error (Error) More...
     
    void EvrRtxThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr)
     Event on thread create and intialize (API) More...
     
    void EvrRtxThreadCreated (osThreadId_t thread_id, uint32_t thread_addr, const char *name)
     Event on successful thread create (Op) More...
     
    void EvrRtxThreadGetName (osThreadId_t thread_id, const char *name)
     Event on thread name retrieve (API) More...
     
    void EvrRtxThreadGetId (osThreadId_t thread_id)
     Event on current running thread ID retrieve (API) More...
     
    void EvrRtxThreadGetState (osThreadId_t thread_id, osThreadState_t state)
     Event on thread state retrieve (API) More...
     
    void EvrRtxThreadGetStackSize (osThreadId_t thread_id, uint32_t stack_size)
     Event on thread stack size retrieve (API) More...
     
    void EvrRtxThreadGetStackSpace (osThreadId_t thread_id, uint32_t stack_space)
     Event on available stack space retrieve (API) More...
     
    void EvrRtxThreadSetPriority (osThreadId_t thread_id, osPriority_t priority)
     Event on thread priority set (API) More...
     
    void EvrRtxThreadGetPriority (osThreadId_t thread_id, osPriority_t priority)
     Event on thread priority retrieve (API) More...
     
    void EvrRtxThreadYield (void)
     Event on thread yield (API) More...
     
    void EvrRtxThreadSuspend (osThreadId_t thread_id)
     Event on thread suspend (API) More...
     
    void EvrRtxThreadSuspended (osThreadId_t thread_id)
     Event on successful thread suspend (Op) More...
     
    void EvrRtxThreadResume (osThreadId_t thread_id)
     Event on thread resume (API) More...
     
    void EvrRtxThreadResumed (osThreadId_t thread_id)
     Event on successful thread resume (Op) More...
     
    void EvrRtxThreadDetach (osThreadId_t thread_id)
     Event on thread detach (API) More...
     
    void EvrRtxThreadDetached (osThreadId_t thread_id)
     Event on successful thread detach (Op) More...
     
    void EvrRtxThreadJoin (osThreadId_t thread_id)
     Event on thread join (API) More...
     
    void EvrRtxThreadJoinPending (osThreadId_t thread_id)
     Event on pending thread join (Op) More...
     
    void EvrRtxThreadJoined (osThreadId_t thread_id)
     Event on successful thread join (Op) More...
     
    void EvrRtxThreadBlocked (osThreadId_t thread_id, uint32_t timeout)
     Event on thread execution block (Op) More...
     
    void EvrRtxThreadUnblocked (osThreadId_t thread_id, uint32_t ret_val)
     Event on thread execution unblock (Op) More...
     
    void EvrRtxThreadPreempted (osThreadId_t thread_id)
     Event on running thread pre-emption (Op) More...
     
    void EvrRtxThreadSwitched (osThreadId_t thread_id)
     Event on running thread switch (Op) More...
     
    void EvrRtxThreadExit (void)
     Event on thread exit (API) More...
     
    void EvrRtxThreadTerminate (osThreadId_t thread_id)
     Event on thread terminate (API) More...
     
    void EvrRtxThreadDestroyed (osThreadId_t thread_id)
     Event on successful thread terminate (Op) More...
     
    void EvrRtxThreadGetCount (uint32_t count)
     Event on active thread count retrieve (API) More...
     
    void EvrRtxThreadEnumerate (osThreadId_t *thread_array, uint32_t array_items, uint32_t count)
     Event on active threads enumerate (API) More...
     
    void EvrRtxThreadFlagsSet (osThreadId_t thread_id, uint32_t flags)
     Event on thread flags set (API) More...
     
    void EvrRtxThreadFlagsSetDone (osThreadId_t thread_id, uint32_t thread_flags)
     Event on successful thread flags set (Op) More...
     
    void EvrRtxThreadFlagsClear (uint32_t flags)
     Event on thread flags clear (API) More...
     
    void EvrRtxThreadFlagsClearDone (uint32_t thread_flags)
     Event on successful thread flags clear (Op) More...
     
    void EvrRtxThreadFlagsGet (uint32_t thread_flags)
     Event on thread flags retrieve (API) More...
     
    void EvrRtxThreadFlagsWait (uint32_t flags, uint32_t options, uint32_t timeout)
     Event on wait for thread flags (API) More...
     
    void EvrRtxThreadFlagsWaitPending (uint32_t flags, uint32_t options, uint32_t timeout)
     Event on pending wait for thread flags (Op) More...
     
    void EvrRtxThreadFlagsWaitTimeout (void)
     Event on wait timeout for thread flags (Op) More...
     
    void EvrRtxThreadFlagsWaitCompleted (uint32_t flags, uint32_t options, uint32_t thread_flags)
     Event on successful wait for thread flags (Op) More...
     
    void EvrRtxThreadFlagsWaitNotCompleted (uint32_t flags, uint32_t options)
     Event on unsuccessful wait for thread flags (Op) More...
     
    void EvrRtxThreadDelay (uint32_t ticks)
     Event on wait for timeout (API) More...
     
    void EvrRtxThreadDelayUntil (uint32_t ticks)
     Event on wait until specified time (API) More...
     
    void EvrRtxThreadDelayCompleted (void)
     Event on completed wait (Op) More...
     
    void EvrRtxTimerError (osTimerId_t timer_id, int32_t status)
     Event on timer error (Error) More...
     
    void EvrRtxTimerCallback (osTimerFunc_t func, void *argument)
     Event on timer callback call (Op) More...
     
    void EvrRtxTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)
     Event on timer create and initialize (API) More...
     
    void EvrRtxTimerCreated (osTimerId_t timer_id, const char *name)
     Event on successful timer create (Op) More...
     
    void EvrRtxTimerGetName (osTimerId_t timer_id, const char *name)
     Event on timer name retrieve (API) More...
     
    void EvrRtxTimerStart (osTimerId_t timer_id, uint32_t ticks)
     Event on timer start (API) More...
     
    void EvrRtxTimerStarted (osTimerId_t timer_id)
     Event on successful timer start (Op) More...
     
    void EvrRtxTimerStop (osTimerId_t timer_id)
     Event on timer stop (API) More...
     
    void EvrRtxTimerStopped (osTimerId_t timer_id)
     Event on successful timer stop (Op) More...
     
    void EvrRtxTimerIsRunning (osTimerId_t timer_id, uint32_t running)
     Event on timer running state check (API) More...
     
    void EvrRtxTimerDelete (osTimerId_t timer_id)
     Event on timer delete (API) More...
     
    void EvrRtxTimerDestroyed (osTimerId_t timer_id)
     Event on successful timer delete (Op) More...
     
    void EvrRtxEventFlagsError (osEventFlagsId_t ef_id, int32_t status)
     Event on event flags error (Error) More...
     
    void EvrRtxEventFlagsNew (const osEventFlagsAttr_t *attr)
     Event on event flags create and initialize (API) More...
     
    void EvrRtxEventFlagsCreated (osEventFlagsId_t ef_id, const char *name)
     Event on successful event flags create (Op) More...
     
    void EvrRtxEventFlagsGetName (osEventFlagsId_t ef_id, const char *name)
     Event on event flags name retrieve (API) More...
     
    void EvrRtxEventFlagsSet (osEventFlagsId_t ef_id, uint32_t flags)
     Event on event flags set (API) More...
     
    void EvrRtxEventFlagsSetDone (osEventFlagsId_t ef_id, uint32_t event_flags)
     Event on successful event flags set (Op) More...
     
    void EvrRtxEventFlagsClear (osEventFlagsId_t ef_id, uint32_t flags)
     Event on event flags clear (API) More...
     
    void EvrRtxEventFlagsClearDone (osEventFlagsId_t ef_id, uint32_t event_flags)
     Event on successful event flags clear (Op) More...
     
    void EvrRtxEventFlagsGet (osEventFlagsId_t ef_id, uint32_t event_flags)
     Event on event flags retrieve (API) More...
     
    void EvrRtxEventFlagsWait (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout)
     Event on wait for event flags (API) More...
     
    void EvrRtxEventFlagsWaitPending (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout)
     Event on pending wait for event flags (Op) More...
     
    void EvrRtxEventFlagsWaitTimeout (osEventFlagsId_t ef_id)
     Event on wait timeout for event flags (Op) More...
     
    void EvrRtxEventFlagsWaitCompleted (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t event_flags)
     Event on successful wait for event flags (Op) More...
     
    void EvrRtxEventFlagsWaitNotCompleted (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options)
     Event on unsuccessful wait for event flags (Op) More...
     
    void EvrRtxEventFlagsDelete (osEventFlagsId_t ef_id)
     Event on event flags delete (API) More...
     
    void EvrRtxEventFlagsDestroyed (osEventFlagsId_t ef_id)
     Event on successful event flags delete (Op) More...
     
    void EvrRtxMutexError (osMutexId_t mutex_id, int32_t status)
     Event on mutex error (Error) More...
     
    void EvrRtxMutexNew (const osMutexAttr_t *attr)
     Event on mutex create and initialize (API) More...
     
    void EvrRtxMutexCreated (osMutexId_t mutex_id, const char *name)
     Event on successful mutex create (Op) More...
     
    void EvrRtxMutexGetName (osMutexId_t mutex_id, const char *name)
     Event on mutex name retrieve (API) More...
     
    void EvrRtxMutexAcquire (osMutexId_t mutex_id, uint32_t timeout)
     Event on mutex acquire (API) More...
     
    void EvrRtxMutexAcquirePending (osMutexId_t mutex_id, uint32_t timeout)
     Event on pending mutex acquire (Op) More...
     
    void EvrRtxMutexAcquireTimeout (osMutexId_t mutex_id)
     Event on mutex acquire timeout (Op) More...
     
    void EvrRtxMutexAcquired (osMutexId_t mutex_id, uint32_t lock)
     Event on successful mutex acquire (Op) More...
     
    void EvrRtxMutexNotAcquired (osMutexId_t mutex_id)
     Event on unsuccessful mutex acquire (Op) More...
     
    void EvrRtxMutexRelease (osMutexId_t mutex_id)
     Event on mutex release (API) More...
     
    void EvrRtxMutexReleased (osMutexId_t mutex_id, uint32_t lock)
     Event on successful mutex release (Op) More...
     
    void EvrRtxMutexGetOwner (osMutexId_t mutex_id, osThreadId_t thread_id)
     Event on mutex owner retrieve (API) More...
     
    void EvrRtxMutexDelete (osMutexId_t mutex_id)
     Event on mutex delete (API) More...
     
    void EvrRtxMutexDestroyed (osMutexId_t mutex_id)
     Event on successful mutex delete (Op) More...
     
    void EvrRtxSemaphoreError (osSemaphoreId_t semaphore_id, int32_t status)
     Event on semaphore error (Error) More...
     
    void EvrRtxSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr)
     Event on semaphore create and initialize (API) More...
     
    void EvrRtxSemaphoreCreated (osSemaphoreId_t semaphore_id, const char *name)
     Event on successful semaphore create (Op) More...
     
    void EvrRtxSemaphoreGetName (osSemaphoreId_t semaphore_id, const char *name)
     Event on semaphore name retrieve (API) More...
     
    void EvrRtxSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout)
     Event on semaphore acquire (API) More...
     
    void EvrRtxSemaphoreAcquirePending (osSemaphoreId_t semaphore_id, uint32_t timeout)
     Event on pending semaphore acquire (Op) More...
     
    void EvrRtxSemaphoreAcquireTimeout (osSemaphoreId_t semaphore_id)
     Event on semaphore acquire timeout (Op) More...
     
    void EvrRtxSemaphoreAcquired (osSemaphoreId_t semaphore_id, uint32_t tokens)
     Event on successful semaphore acquire (Op) More...
     
    void EvrRtxSemaphoreNotAcquired (osSemaphoreId_t semaphore_id)
     Event on unsuccessful semaphore acquire (Op) More...
     
    void EvrRtxSemaphoreRelease (osSemaphoreId_t semaphore_id)
     Event on semaphore release (API) More...
     
    void EvrRtxSemaphoreReleased (osSemaphoreId_t semaphore_id, uint32_t tokens)
     Event on successful semaphore release (Op) More...
     
    void EvrRtxSemaphoreGetCount (osSemaphoreId_t semaphore_id, uint32_t count)
     Event on semaphore token count retrieval (API) More...
     
    void EvrRtxSemaphoreDelete (osSemaphoreId_t semaphore_id)
     Event on semaphore delete (API) More...
     
    void EvrRtxSemaphoreDestroyed (osSemaphoreId_t semaphore_id)
     Event on successful semaphore delete (Op) More...
     
    void EvrRtxMemoryPoolError (osMemoryPoolId_t mp_id, int32_t status)
     Event on memory pool error (Error) More...
     
    void EvrRtxMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr)
     Event on memory pool create and initialize (API) More...
     
    void EvrRtxMemoryPoolCreated (osMemoryPoolId_t mp_id, const char *name)
     Event on successful memory pool create (Op) More...
     
    void EvrRtxMemoryPoolGetName (osMemoryPoolId_t mp_id, const char *name)
     Event on memory pool name retrieve (API) More...
     
    void EvrRtxMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout)
     Event on memory pool allocation (API) More...
     
    void EvrRtxMemoryPoolAllocPending (osMemoryPoolId_t mp_id, uint32_t timeout)
     Event on pending memory pool allocation (Op) More...
     
    void EvrRtxMemoryPoolAllocTimeout (osMemoryPoolId_t mp_id)
     Event on memory pool allocation timeout (Op) More...
     
    void EvrRtxMemoryPoolAllocated (osMemoryPoolId_t mp_id, void *block)
     Event on successful memory pool allocation (Op) More...
     
    void EvrRtxMemoryPoolAllocFailed (osMemoryPoolId_t mp_id)
     Event on unsuccessful memory pool allocation (Op) More...
     
    void EvrRtxMemoryPoolFree (osMemoryPoolId_t mp_id, void *block)
     Event on memory pool free (API) More...
     
    void EvrRtxMemoryPoolDeallocated (osMemoryPoolId_t mp_id, void *block)
     Event on successful memory pool free (Op) More...
     
    void EvrRtxMemoryPoolFreeFailed (osMemoryPoolId_t mp_id, void *block)
     Event on unsuccessful memory pool free (Op) More...
     
    void EvrRtxMemoryPoolGetCapacity (osMemoryPoolId_t mp_id, uint32_t capacity)
     Event on memory pool capacity retrieve (API) More...
     
    void EvrRtxMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id, uint32_t block_size)
     Event on memory pool block size retrieve (API) More...
     
    void EvrRtxMemoryPoolGetCount (osMemoryPoolId_t mp_id, uint32_t count)
     Event on used memory pool blocks retrieve (API) More...
     
    void EvrRtxMemoryPoolGetSpace (osMemoryPoolId_t mp_id, uint32_t space)
     Event on available memory pool blocks retrieve (API) More...
     
    void EvrRtxMemoryPoolDelete (osMemoryPoolId_t mp_id)
     Event on memory pool delete (API) More...
     
    void EvrRtxMemoryPoolDestroyed (osMemoryPoolId_t mp_id)
     Event on successful memory pool delete (Op) More...
     
    void EvrRtxMessageQueueError (osMessageQueueId_t mq_id, int32_t status)
     Event on message queue error (Error) More...
     
    void EvrRtxMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr)
     Event on message queue create and initialization (API) More...
     
    void EvrRtxMessageQueueCreated (osMessageQueueId_t mq_id, const char *name)
     Event on successful message queue create (Op) More...
     
    void EvrRtxMessageQueueGetName (osMessageQueueId_t mq_id, const char *name)
     Event on message queue name retrieve(API) More...
     
    void EvrRtxMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout)
     Event on message put (API) More...
     
    void EvrRtxMessageQueuePutPending (osMessageQueueId_t mq_id, const void *msg_ptr, uint32_t timeout)
     Event on pending message put (Op) More...
     
    void EvrRtxMessageQueuePutTimeout (osMessageQueueId_t mq_id)
     Event on message put timeout (Op) More...
     
    void EvrRtxMessageQueueInsertPending (osMessageQueueId_t mq_id, const void *msg_ptr)
     Event on pending message insert (Op) More...
     
    void EvrRtxMessageQueueInserted (osMessageQueueId_t mq_id, const void *msg_ptr)
     Event on successful message insert (Op) More...
     
    void EvrRtxMessageQueueNotInserted (osMessageQueueId_t mq_id, const void *msg_ptr)
     Event on unsuccessful message insert (Op) More...
     
    void EvrRtxMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout)
     Event on message get (API) More...
     
    void EvrRtxMessageQueueGetPending (osMessageQueueId_t mq_id, void *msg_ptr, uint32_t timeout)
     Event on pending message get (Op) More...
     
    void EvrRtxMessageQueueGetTimeout (osMessageQueueId_t mq_id)
     Event on message get timeout (Op) More...
     
    void EvrRtxMessageQueueRetrieved (osMessageQueueId_t mq_id, void *msg_ptr)
     Event on successful message get (Op) More...
     
    void EvrRtxMessageQueueNotRetrieved (osMessageQueueId_t mq_id, void *msg_ptr)
     Event on unsuccessful message get (Op) More...
     
    void EvrRtxMessageQueueGetCapacity (osMessageQueueId_t mq_id, uint32_t capacity)
     Event on message queue capacity retrieve (API) More...
     
    void EvrRtxMessageQueueGetMsgSize (osMessageQueueId_t mq_id, uint32_t msg_size)
     Event on message queue message size retrieve (API) More...
     
    void EvrRtxMessageQueueGetCount (osMessageQueueId_t mq_id, uint32_t count)
     Event on message queue message count retrieve (API) More...
     
    void EvrRtxMessageQueueGetSpace (osMessageQueueId_t mq_id, uint32_t space)
     Event on message queue message slots retrieve (API) More...
     
    void EvrRtxMessageQueueReset (osMessageQueueId_t mq_id)
     Event on message queue reset (API) More...
     
    void EvrRtxMessageQueueResetDone (osMessageQueueId_t mq_id)
     Event on successful message queue reset (Op) More...
     
    void EvrRtxMessageQueueDelete (osMessageQueueId_t mq_id)
     Event on message queue delete (API) More...
     
    void EvrRtxMessageQueueDestroyed (osMessageQueueId_t mq_id)
     Event on successful message queue delete (Op) More...
     
    +

    Macro Definition Documentation

    + +
    +
    + + + + +
    #define osRtxErrorKernelNotReady   (-7)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorKernelNotRunning   (-8)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorInvalidControlBlock   (-9)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorInvalidDataMemory   (-10)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorInvalidThreadStack   (-11)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorInvalidPriority   (-12)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorThreadNotJoinable   (-13)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorMutexNotOwned   (-14)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorMutexNotLocked   (-15)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorMutexLockLimit   (-16)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorSemaphoreCountLimit   (-17)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorTZ_InitContext_S   (-18)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorTZ_AllocContext_S   (-19)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorTZ_FreeContext_S   (-20)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorTZ_LoadContext_S   (-21)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxErrorTZ_SaveContext_S   (-22)
    +
    + +
    +
    +

    Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void EvrRtxThreadFlagsSet (osThreadId_t thread_id,
    uint32_t flags 
    )
    +
    +
    Parameters
    + + + +
    [in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
    [in]flagsflags of the thread that shall be set.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void EvrRtxThreadFlagsSetDone (osThreadId_t thread_id,
    uint32_t thread_flags 
    )
    +
    +
    Parameters
    + + + +
    [in]thread_idthread ID obtained by osThreadNew or osThreadGetId.
    [in]thread_flagsthread flags after setting.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + +
    void EvrRtxThreadFlagsClear (uint32_t flags)
    +
    +
    Parameters
    + + +
    [in]flagsflags of the thread that shall be cleared.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + +
    void EvrRtxThreadFlagsClearDone (uint32_t thread_flags)
    +
    +
    Parameters
    + + +
    [in]thread_flagsthread flags before clearing.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + +
    void EvrRtxThreadFlagsGet (uint32_t thread_flags)
    +
    +
    Parameters
    + + +
    [in]thread_flagscurrent thread flags.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void EvrRtxThreadFlagsWait (uint32_t flags,
    uint32_t options,
    uint32_t timeout 
    )
    +
    +
    Parameters
    + + + + +
    [in]flagsflags to wait for.
    [in]optionsflags options (osFlagsXxxx).
    [in]timeoutTimeout Value or 0 in case of no time-out.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void EvrRtxThreadFlagsWaitPending (uint32_t flags,
    uint32_t options,
    uint32_t timeout 
    )
    +
    +
    Parameters
    + + + + +
    [in]flagsflags to wait for.
    [in]optionsflags options (osFlagsXxxx).
    [in]timeoutTimeout Value or 0 in case of no time-out.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void EvrRtxThreadFlagsWaitCompleted (uint32_t flags,
    uint32_t options,
    uint32_t thread_flags 
    )
    +
    +
    Parameters
    + + + + +
    [in]flagsflags to wait for.
    [in]optionsflags options (osFlagsXxxx).
    [in]thread_flagsthread flags before clearing.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void EvrRtxThreadFlagsWaitNotCompleted (uint32_t flags,
    uint32_t options 
    )
    +
    +
    Parameters
    + + + +
    [in]flagsflags to wait for.
    [in]optionsflags options (osFlagsXxxx).
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void EvrRtxEventFlagsSet (osEventFlagsId_t ef_id,
    uint32_t flags 
    )
    +
    +
    Parameters
    + + + +
    [in]ef_idevent flags ID obtained by osEventFlagsNew.
    [in]flagsflags that shall be set.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void EvrRtxEventFlagsSetDone (osEventFlagsId_t ef_id,
    uint32_t event_flags 
    )
    +
    +
    Parameters
    + + + +
    [in]ef_idevent flags ID obtained by osEventFlagsNew.
    [in]event_flagsevent flags after setting.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void EvrRtxEventFlagsClear (osEventFlagsId_t ef_id,
    uint32_t flags 
    )
    +
    +
    Parameters
    + + + +
    [in]ef_idevent flags ID obtained by osEventFlagsNew.
    [in]flagsflags that shall be cleared.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void EvrRtxEventFlagsClearDone (osEventFlagsId_t ef_id,
    uint32_t event_flags 
    )
    +
    +
    Parameters
    + + + +
    [in]ef_idevent flags ID obtained by osEventFlagsNew.
    [in]event_flagsevent flags before clearing.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void EvrRtxEventFlagsGet (osEventFlagsId_t ef_id,
    uint32_t event_flags 
    )
    +
    +
    Parameters
    + + + +
    [in]ef_idevent flags ID obtained by osEventFlagsNew.
    [in]event_flagscurrent event flags.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void EvrRtxEventFlagsWait (osEventFlagsId_t ef_id,
    uint32_t flags,
    uint32_t options,
    uint32_t timeout 
    )
    +
    +
    Parameters
    + + + + + +
    [in]ef_idevent flags ID obtained by osEventFlagsNew.
    [in]flagsflags to wait for.
    [in]optionsflags options (osFlagsXxxx).
    [in]timeoutTimeout Value or 0 in case of no time-out.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void EvrRtxEventFlagsWaitPending (osEventFlagsId_t ef_id,
    uint32_t flags,
    uint32_t options,
    uint32_t timeout 
    )
    +
    +
    Parameters
    + + + + + +
    [in]ef_idevent flags ID obtained by osEventFlagsNew.
    [in]flagsflags to wait for.
    [in]optionsflags options (osFlagsXxxx).
    [in]timeoutTimeout Value or 0 in case of no time-out.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void EvrRtxEventFlagsWaitCompleted (osEventFlagsId_t ef_id,
    uint32_t flags,
    uint32_t options,
    uint32_t event_flags 
    )
    +
    +
    Parameters
    + + + + + +
    [in]ef_idevent flags ID obtained by osEventFlagsNew.
    [in]flagsflags to wait for.
    [in]optionsflags options (osFlagsXxxx).
    [in]event_flagsevent flags before clearing or 0 if specified flags have not been set.
    +
    +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void EvrRtxEventFlagsWaitNotCompleted (osEventFlagsId_t ef_id,
    uint32_t flags,
    uint32_t options 
    )
    +
    +
    Parameters
    + + + + +
    [in]ef_idevent flags ID obtained by osEventFlagsNew.
    [in]flagsflags to wait for.
    [in]optionsflags options (osFlagsXxxx).
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/docs/RTOS2/html/rtx__evr_8txt.html b/docs/RTOS2/html/rtx__evr_8txt.html new file mode 100644 index 0000000..6d1c3c8 --- /dev/null +++ b/docs/RTOS2/html/rtx__evr_8txt.html @@ -0,0 +1,129 @@ + + + + + +rtx_evr.txt File Reference +CMSIS-RTOS2: rtx_evr.txt File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/docs/RTOS2/html/rtx__os_8h.html b/docs/RTOS2/html/rtx__os_8h.html new file mode 100644 index 0000000..0ec2356 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h.html @@ -0,0 +1,2561 @@ + + + + + +rtx_os.h File Reference +CMSIS-RTOS2: rtx_os.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    rtx_os.h File Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  osRtxThread_t
     Thread Control Block. More...
     
    struct  osRtxTimerFinfo_t
     Timer Function Information. More...
     
    struct  osRtxTimer_t
     Timer Control Block. More...
     
    struct  osRtxEventFlags_t
     Event Flags Control Block. More...
     
    struct  osRtxMutex_t
     Mutex Control Block. More...
     
    struct  osRtxSemaphore_t
     Semaphore Control Block. More...
     
    struct  osRtxMpInfo_t
     Memory Pool Information. More...
     
    struct  osRtxMemoryPool_t
     Memory Pool Control Block. More...
     
    struct  osRtxMessage_t
     Message Control Block. More...
     
    struct  osRtxMessageQueue_t
     Message Queue Control Block. More...
     
    struct  osRtxObject_t
     Generic Object Control Block. More...
     
    struct  osRtxInfo_t
     OS Runtime Information structure. More...
     
    struct  osRtxObjectMemUsage_t
     OS Runtime Object Memory Usage structure. More...
     
    struct  osRtxConfig_t
     OS Configuration structure. More...
     
    struct  osRtxInfo_t.kernel
     
    struct  osRtxInfo_t.thread
     
    struct  osRtxInfo_t.thread.run
     < Thread Info More...
     
    struct  osRtxInfo_t.thread.robin
     
    struct  osRtxInfo_t.timer
     
    struct  osRtxInfo_t.isr_queue
     
    struct  osRtxInfo_t.post_process
     
    struct  osRtxInfo_t.mem
     
    struct  osRtxInfo_t.mpi
     
    struct  osRtxConfig_t.isr_queue
     
    struct  osRtxConfig_t.mem
     
    struct  osRtxConfig_t.mpi
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define osRtxVersionAPI   20010003
     Kernel Information. More...
     
    #define osRtxVersionKernel   50040000
     Kernel version (5.4.0) More...
     
    #define osRtxKernelId   "RTX V5.4.0"
     Kernel identification string. More...
     
    #define osRtxIdInvalid   0x00U
     Object Identifier definitions. More...
     
    #define osRtxIdThread   0x01U
     
    #define osRtxIdTimer   0x02U
     
    #define osRtxIdEventFlags   0x03U
     
    #define osRtxIdMutex   0x04U
     
    #define osRtxIdSemaphore   0x05U
     
    #define osRtxIdMemoryPool   0x06U
     
    #define osRtxIdMessage   0x07U
     
    #define osRtxIdMessageQueue   0x08U
     
    #define osRtxFlagSystemObject   0x01U
     Object Flags definitions. More...
     
    #define osRtxFlagSystemMemory   0x02U
     
    #define osRtxKernelInactive   ((uint8_t)osKernelInactive)
     Kernel State definitions. More...
     
    #define osRtxKernelReady   ((uint8_t)osKernelReady)
     
    #define osRtxKernelRunning   ((uint8_t)osKernelRunning)
     
    #define osRtxKernelLocked   ((uint8_t)osKernelLocked)
     
    #define osRtxKernelSuspended   ((uint8_t)osKernelSuspended)
     
    #define osRtxThreadStateMask   0x0FU
     Thread State definitions (extending osThreadState) More...
     
    #define osRtxThreadInactive   ((uint8_t)osThreadInactive)
     
    #define osRtxThreadReady   ((uint8_t)osThreadReady)
     
    #define osRtxThreadRunning   ((uint8_t)osThreadRunning)
     
    #define osRtxThreadBlocked   ((uint8_t)osThreadBlocked)
     
    #define osRtxThreadTerminated   ((uint8_t)osThreadTerminated)
     
    #define osRtxThreadWaitingDelay   ((uint8_t)(osRtxThreadBlocked | 0x10U))
     
    #define osRtxThreadWaitingJoin   ((uint8_t)(osRtxThreadBlocked | 0x20U))
     
    #define osRtxThreadWaitingThreadFlags   ((uint8_t)(osRtxThreadBlocked | 0x30U))
     
    #define osRtxThreadWaitingEventFlags   ((uint8_t)(osRtxThreadBlocked | 0x40U))
     
    #define osRtxThreadWaitingMutex   ((uint8_t)(osRtxThreadBlocked | 0x50U))
     
    #define osRtxThreadWaitingSemaphore   ((uint8_t)(osRtxThreadBlocked | 0x60U))
     
    #define osRtxThreadWaitingMemoryPool   ((uint8_t)(osRtxThreadBlocked | 0x70U))
     
    #define osRtxThreadWaitingMessageGet   ((uint8_t)(osRtxThreadBlocked | 0x80U))
     
    #define osRtxThreadWaitingMessagePut   ((uint8_t)(osRtxThreadBlocked | 0x90U))
     
    #define osRtxThreadFlagDefStack   0x10U
     Thread Flags definitions. More...
     
    #define osRtxStackMagicWord   0xE25A2EA5U
     Stack Marker definitions. More...
     
    #define osRtxStackFillPattern   0xCCCCCCCCU
     Stack Fill Pattern. More...
     
    #define osRtxTimerInactive   0x00U
     Timer State definitions. More...
     
    #define osRtxTimerStopped   0x01U
     Timer Stopped. More...
     
    #define osRtxTimerRunning   0x02U
     Timer Running. More...
     
    #define osRtxTimerPeriodic   ((uint8_t)osTimerPeriodic)
     Timer Type definitions. More...
     
    #define osRtxThreadFlagsLimit   31U
     number of Thread Flags available per thread More...
     
    #define osRtxEventFlagsLimit   31U
     number of Event Flags available per object More...
     
    #define osRtxMutexLockLimit   255U
     maximum number of recursive mutex locks More...
     
    #define osRtxSemaphoreTokenLimit   65535U
     maximum number of tokens per semaphore More...
     
    #define osRtxThreadCbSize   sizeof(osRtxThread_t)
     Thread Control Block size. More...
     
    #define osRtxTimerCbSize   sizeof(osRtxTimer_t)
     Timer Control Block size. More...
     
    #define osRtxEventFlagsCbSize   sizeof(osRtxEventFlags_t)
     Event Flags Control Block size. More...
     
    #define osRtxMutexCbSize   sizeof(osRtxMutex_t)
     Mutex Control Block size. More...
     
    #define osRtxSemaphoreCbSize   sizeof(osRtxSemaphore_t)
     Semaphore Control Block size. More...
     
    #define osRtxMemoryPoolCbSize   sizeof(osRtxMemoryPool_t)
     Memory Pool Control Block size. More...
     
    #define osRtxMessageQueueCbSize   sizeof(osRtxMessageQueue_t)
     Message Queue Control Block size. More...
     
    #define osRtxMemoryPoolMemSize(block_count, block_size)   (4*(block_count)*(((block_size)+3)/4))
     Memory Pool Memory size. More...
     
    #define osRtxMessageQueueMemSize(msg_count, msg_size)   (4*(msg_count)*(3+(((msg_size)+3)/4)))
     Message Queue Memory size. More...
     
    #define osRtxErrorStackUnderflow   1U
     Stack overflow, i.e. stack pointer below its lower memory limit for descending stacks. More...
     
    #define osRtxErrorISRQueueOverflow   2U
     ISR Queue overflow detected when inserting object. More...
     
    #define osRtxErrorTimerQueueOverflow   3U
     User Timer Callback Queue overflow detected for timer. More...
     
    #define osRtxErrorClibSpace   4U
     Standard C/C++ library libspace not available. More...
     
    #define osRtxErrorClibMutex   5U
     Standard C/C++ library mutex initialization failed. More...
     
    #define osRtxConfigPrivilegedMode   (1UL<<0)
     OS Trusted Firmware M Extension. More...
     
    #define osRtxConfigStackCheck   (1UL<<1)
     Stack overrun checking. More...
     
    #define osRtxConfigStackWatermark   (1UL<<2)
     Stack usage Watermark. More...
     
    + + + + + + + + + + + + + + +

    +Functions

    uint32_t osRtxErrorNotify (uint32_t code, void *object_id)
     OS Error Callback function. More...
     
    void osRtxIdleThread (void *argument)
     OS Idle Thread. More...
     
    void SVC_Handler (void)
     OS Exception handlers. More...
     
    void PendSV_Handler (void)
     
    void SysTick_Handler (void)
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    osRtxInfo_t osRtxInfo
     OS Runtime Information. More...
     
    osRtxObjectMemUsage_t osRtxThreadMemUsage
     OS Runtime Object Memory Usage variables. More...
     
    osRtxObjectMemUsage_t osRtxTimerMemUsage
     
    osRtxObjectMemUsage_t osRtxEventFlagsMemUsage
     
    osRtxObjectMemUsage_t osRtxMutexMemUsage
     
    osRtxObjectMemUsage_t osRtxSemaphoreMemUsage
     
    osRtxObjectMemUsage_t osRtxMemoryPoolMemUsage
     
    osRtxObjectMemUsage_t osRtxMessageQueueMemUsage
     
    const osRtxConfig_t osRtxConfig
     OS Configuration. More...
     
    +

    Data Structure Documentation

    + +
    +
    + + + + +
    struct osRtxThread_t
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +id +Object Identifier.
    +uint8_t +state +Object State.
    +uint8_t +flags +Object Flags.
    +uint8_t +attr +Object Attributes.
    +const char * +name +Object Name.
    +struct osRtxThread_s * +thread_next +Link pointer to next Thread in Object list.
    +struct osRtxThread_s * +thread_prev +Link pointer to previous Thread in Object list.
    +struct osRtxThread_s * +delay_next +Link pointer to next Thread in Delay list.
    +struct osRtxThread_s * +delay_prev +Link pointer to previous Thread in Delay list.
    +struct osRtxThread_s * +thread_join +Thread waiting to Join.
    +uint32_t +delay +Delay Time.
    +int8_t +priority +Thread Priority.
    +int8_t +priority_base +Base Priority.
    +uint8_t +stack_frame +Stack Frame (EXC_RETURN[7..0])
    +uint8_t +flags_options +Thread/Event Flags Options.
    +uint32_t +wait_flags +Waiting Thread/Event Flags.
    +uint32_t +thread_flags +Thread Flags.
    +struct osRtxMutex_s * +mutex_list +Link pointer to list of owned Mutexes.
    +void * +stack_mem +Stack Memory.
    +uint32_t +stack_size +Stack Size.
    +uint32_t +sp +Current Stack Pointer.
    +uint32_t +thread_addr +Thread entry address.
    +uint32_t +tz_memory +TrustZone Memory Identifier.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxTimerFinfo_t
    +
    +
    + + + + + + + +
    Data Fields
    +osTimerFunc_t +func +Function Pointer.
    +void * +arg +Function Argument.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxTimer_t
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +id +Object Identifier.
    +uint8_t +state +Object State.
    +uint8_t +flags +Object Flags.
    +uint8_t +type +Timer Type (Periodic/One-shot)
    +const char * +name +Object Name.
    +struct osRtxTimer_s * +prev +Pointer to previous active Timer.
    +struct osRtxTimer_s * +next +Pointer to next active Timer.
    +uint32_t +tick +Timer current Tick.
    +uint32_t +load +Timer Load value.
    +osRtxTimerFinfo_t +finfo +Timer Function Info.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxEventFlags_t
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +id +Object Identifier.
    +uint8_t +reserved_state +Object State (not used)
    +uint8_t +flags +Object Flags.
    +uint8_t +reserved +
    +const char * +name +Object Name.
    +osRtxThread_t * +thread_list +Waiting Threads List.
    +uint32_t +event_flags +Event Flags.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxMutex_t
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +id +Object Identifier.
    +uint8_t +reserved_state +Object State (not used)
    +uint8_t +flags +Object Flags.
    +uint8_t +attr +Object Attributes.
    +const char * +name +Object Name.
    +osRtxThread_t * +thread_list +Waiting Threads List.
    +osRtxThread_t * +owner_thread +Owner Thread.
    +struct osRtxMutex_s * +owner_prev +Pointer to previous owned Mutex.
    +struct osRtxMutex_s * +owner_next +Pointer to next owned Mutex.
    +uint8_t +lock +Lock counter.
    +uint8_t +padding[3] +
    + +
    +
    + +
    +
    + + + + +
    struct osRtxSemaphore_t
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +id +Object Identifier.
    +uint8_t +reserved_state +Object State (not used)
    +uint8_t +flags +Object Flags.
    +uint8_t +reserved +
    +const char * +name +Object Name.
    +osRtxThread_t * +thread_list +Waiting Threads List.
    +uint16_t +tokens +Current number of tokens.
    +uint16_t +max_tokens +Maximum number of tokens.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxMpInfo_t
    +
    +
    + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint32_t +max_blocks +Maximum number of Blocks.
    +uint32_t +used_blocks +Number of used Blocks.
    +uint32_t +block_size +Block Size.
    +void * +block_base +Block Memory Base Address.
    +void * +block_lim +Block Memory Limit Address.
    +void * +block_free +First free Block Address.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxMemoryPool_t
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +id +Object Identifier.
    +uint8_t +reserved_state +Object State (not used)
    +uint8_t +flags +Object Flags.
    +uint8_t +reserved +
    +const char * +name +Object Name.
    +osRtxThread_t * +thread_list +Waiting Threads List.
    +osRtxMpInfo_t +mp_info +Memory Pool Info.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxMessage_t
    +
    +
    + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +id +Object Identifier.
    +uint8_t +reserved_state +Object State (not used)
    +uint8_t +flags +Object Flags.
    +uint8_t +priority +Message Priority.
    +struct osRtxMessage_s * +prev +Pointer to previous Message.
    +struct osRtxMessage_s * +next +Pointer to next Message.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxMessageQueue_t
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +id +Object Identifier.
    +uint8_t +reserved_state +Object State (not used)
    +uint8_t +flags +Object Flags.
    +uint8_t +reserved +
    +const char * +name +Object Name.
    +osRtxThread_t * +thread_list +Waiting Threads List.
    +osRtxMpInfo_t +mp_info +Memory Pool Info.
    +uint32_t +msg_size +Message Size.
    +uint32_t +msg_count +Number of queued Messages.
    +osRtxMessage_t * +msg_first +Pointer to first Message.
    +osRtxMessage_t * +msg_last +Pointer to last Message.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxObject_t
    +
    +
    + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +id +Object Identifier.
    +uint8_t +state +Object State.
    +uint8_t +flags +Object Flags.
    +uint8_t +reserved +
    +const char * +name +Object Name.
    +osRtxThread_t * +thread_list +Threads List.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxInfo_t
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +const char * +os_id +OS Identification.
    +uint32_t +version +OS Version.
    +struct osRtxInfo_t +kernel +
    +int32_t +tick_irqn +Tick Timer IRQ Number.
    +struct osRtxInfo_t +thread +
    +struct osRtxInfo_t +timer +
    +struct osRtxInfo_t +isr_queue +
    +struct osRtxInfo_t +post_process +
    +struct osRtxInfo_t +mem +
    +struct osRtxInfo_t +mpi +
    + +
    +
    + +
    +
    + + + + +
    struct osRtxObjectMemUsage_t
    +
    +
    + + + + + + + + + + +
    Data Fields
    +uint32_t +cnt_alloc +Counter for alloc.
    +uint32_t +cnt_free +Counter for free.
    +uint32_t +max_used +Maximum used.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxConfig_t
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint32_t +flags +OS Configuration Flags.
    +uint32_t +tick_freq +Kernel Tick Frequency.
    +uint32_t +robin_timeout +Round Robin Timeout Tick.
    +struct osRtxConfig_t +isr_queue +
    +struct osRtxConfig_t +mem +
    +struct osRtxConfig_t +mpi +
    +uint32_t +thread_stack_size +Default Thread Stack Size.
    +const osThreadAttr_t * +idle_thread_attr +Idle Thread Attributes.
    +const osThreadAttr_t * +timer_thread_attr +Timer Thread Attributes.
    +const osMessageQueueAttr_t * +timer_mq_attr +Timer Message Queue Attributes.
    +uint32_t +timer_mq_mcnt +Timer Message Queue maximum Messages.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxInfo_t.kernel
    +
    +
    + + + + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +state +< Kernel Info

    State

    +
    +volatile uint8_t +blocked +Blocked.
    +uint8_t +pendSV +Pending SV.
    +uint8_t +reserved +
    +uint32_t +tick +Tick counter.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxInfo_t.thread
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +thread +run +< Thread Info
    +osRtxObject_t +ready +Ready List Object.
    +osRtxThread_t * +idle +Idle Thread.
    +osRtxThread_t * +delay_list +Delay List.
    +osRtxThread_t * +wait_list +Wait List (no Timeout)
    +osRtxThread_t * +terminate_list +Terminate Thread List.
    +thread +robin +
    + +
    +
    + +
    +
    + + + + +
    struct osRtxInfo_t.thread.run
    +
    +
    + + + + + + + +
    Data Fields
    +osRtxThread_t * +curr +< Thread Run Info

    Current running Thread

    +
    +osRtxThread_t * +next +Next Thread to Run.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxInfo_t.thread.robin
    +
    +
    + + + + + + + + + + +
    Data Fields
    +osRtxThread_t * +thread +< Thread Round Robin Info

    Round Robin Thread

    +
    +uint32_t +tick +Round Robin Time Tick.
    +uint32_t +timeout +Round Robin Timeout.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxInfo_t.isr_queue
    +
    +
    + + + + + + + + + + + + + + + + +
    Data Fields
    +uint16_t +max +< ISR Post Processing Queue

    Maximum Items

    +
    +uint16_t +cnt +Item Count.
    +uint16_t +in +Incoming Item Index.
    +uint16_t +out +Outgoing Item Index.
    +void ** +data +Queue Data.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxInfo_t.mem
    +
    +
    + + + + + + + + + + + + + +
    Data Fields
    +void * +stack +< Memory Pools (Variable Block Size)

    Stack Memory

    +
    +void * +mp_data +Memory Pool Data Memory.
    +void * +mq_data +Message Queue Data Memory.
    +void * +common +Common Memory.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxInfo_t.mpi
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +osRtxMpInfo_t * +stack +< Memory Pools (Fixed Block Size)

    Stack for Threads

    +
    +osRtxMpInfo_t * +thread +Thread Control Blocks.
    +osRtxMpInfo_t * +timer +Timer Control Blocks.
    +osRtxMpInfo_t * +event_flags +Event Flags Control Blocks.
    +osRtxMpInfo_t * +mutex +Mutex Control Blocks.
    +osRtxMpInfo_t * +semaphore +Semaphore Control Blocks.
    +osRtxMpInfo_t * +memory_pool +Memory Pool Control Blocks.
    +osRtxMpInfo_t * +message_queue +Message Queue Control Blocks.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxConfig_t.isr_queue
    +
    +
    + + + + + + + + + + +
    Data Fields
    +void ** +data +< ISR Post Processing Queue

    Queue Data

    +
    +uint16_t +max +Maximum Items.
    +uint16_t +padding +
    + +
    +
    + +
    +
    + + + + +
    struct osRtxConfig_t.mem
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +void * +stack_addr +< Memory Pools (Variable Block Size)

    Stack Memory Address

    +
    +uint32_t +stack_size +Stack Memory Size.
    +void * +mp_data_addr +Memory Pool Memory Address.
    +uint32_t +mp_data_size +Memory Pool Memory Size.
    +void * +mq_data_addr +Message Queue Data Memory Address.
    +uint32_t +mq_data_size +Message Queue Data Memory Size.
    +void * +common_addr +Common Memory Address.
    +uint32_t +common_size +Common Memory Size.
    + +
    +
    + +
    +
    + + + + +
    struct osRtxConfig_t.mpi
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +osRtxMpInfo_t * +stack +< Memory Pools (Fixed Block Size)

    Stack for Threads

    +
    +osRtxMpInfo_t * +thread +Thread Control Blocks.
    +osRtxMpInfo_t * +timer +Timer Control Blocks.
    +osRtxMpInfo_t * +event_flags +Event Flags Control Blocks.
    +osRtxMpInfo_t * +mutex +Mutex Control Blocks.
    +osRtxMpInfo_t * +semaphore +Semaphore Control Blocks.
    +osRtxMpInfo_t * +memory_pool +Memory Pool Control Blocks.
    +osRtxMpInfo_t * +message_queue +Message Queue Control Blocks.
    + +
    +
    +

    Macro Definition Documentation

    + +
    +
    + + + + +
    #define osRtxVersionAPI   20010003
    +
    +

    API version (2.1.3)

    + +
    +
    + +
    +
    + + + + +
    #define osRtxVersionKernel   50040000
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxKernelId   "RTX V5.4.0"
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxIdInvalid   0x00U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxIdThread   0x01U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxIdTimer   0x02U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxIdEventFlags   0x03U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxIdMutex   0x04U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxIdSemaphore   0x05U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxIdMemoryPool   0x06U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxIdMessage   0x07U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxIdMessageQueue   0x08U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxFlagSystemObject   0x01U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxFlagSystemMemory   0x02U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxKernelInactive   ((uint8_t)osKernelInactive)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxKernelReady   ((uint8_t)osKernelReady)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxKernelRunning   ((uint8_t)osKernelRunning)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxKernelLocked   ((uint8_t)osKernelLocked)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxKernelSuspended   ((uint8_t)osKernelSuspended)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadStateMask   0x0FU
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadInactive   ((uint8_t)osThreadInactive)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadReady   ((uint8_t)osThreadReady)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadRunning   ((uint8_t)osThreadRunning)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadBlocked   ((uint8_t)osThreadBlocked)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadTerminated   ((uint8_t)osThreadTerminated)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadWaitingDelay   ((uint8_t)(osRtxThreadBlocked | 0x10U))
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadWaitingJoin   ((uint8_t)(osRtxThreadBlocked | 0x20U))
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadWaitingThreadFlags   ((uint8_t)(osRtxThreadBlocked | 0x30U))
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadWaitingEventFlags   ((uint8_t)(osRtxThreadBlocked | 0x40U))
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadWaitingMutex   ((uint8_t)(osRtxThreadBlocked | 0x50U))
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadWaitingSemaphore   ((uint8_t)(osRtxThreadBlocked | 0x60U))
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadWaitingMemoryPool   ((uint8_t)(osRtxThreadBlocked | 0x70U))
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadWaitingMessageGet   ((uint8_t)(osRtxThreadBlocked | 0x80U))
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadWaitingMessagePut   ((uint8_t)(osRtxThreadBlocked | 0x90U))
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadFlagDefStack   0x10U
    +
    +

    Default Stack flag

    + +
    +
    + +
    +
    + + + + +
    #define osRtxStackMagicWord   0xE25A2EA5U
    +
    +

    Stack Magic Word (Stack Base)

    + +
    +
    + +
    +
    + + + + +
    #define osRtxStackFillPattern   0xCCCCCCCCU
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxTimerInactive   0x00U
    +
    +

    Timer Inactive

    + +
    +
    + +
    +
    + + + + +
    #define osRtxTimerStopped   0x01U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxTimerRunning   0x02U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxTimerPeriodic   ((uint8_t)osTimerPeriodic)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxThreadFlagsLimit   31U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxEventFlagsLimit   31U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxMutexLockLimit   255U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxSemaphoreTokenLimit   65535U
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxConfigPrivilegedMode   (1UL<<0)
    +
    +

    OS Configuration flags Threads in Privileged mode

    + +
    +
    + +
    +
    + + + + +
    #define osRtxConfigStackCheck   (1UL<<1)
    +
    + +
    +
    + +
    +
    + + + + +
    #define osRtxConfigStackWatermark   (1UL<<2)
    +
    + +
    +
    +

    Function Documentation

    + +
    +
    + + + + + + + + +
    void SVC_Handler (void )
    +
    + +
    +
    + +
    +
    + + + + + + + + +
    void PendSV_Handler (void )
    +
    + +
    +
    + +
    +
    + + + + + + + + +
    void SysTick_Handler (void )
    +
    + +
    +
    +

    Variable Documentation

    + +
    +
    + + + + +
    osRtxInfo_t osRtxInfo
    +
    + +
    +
    + +
    +
    + + + + +
    osRtxObjectMemUsage_t osRtxThreadMemUsage
    +
    + +
    +
    + +
    +
    + + + + +
    osRtxObjectMemUsage_t osRtxTimerMemUsage
    +
    + +
    +
    + +
    +
    + + + + +
    osRtxObjectMemUsage_t osRtxEventFlagsMemUsage
    +
    + +
    +
    + +
    +
    + + + + +
    osRtxObjectMemUsage_t osRtxMutexMemUsage
    +
    + +
    +
    + +
    +
    + + + + +
    osRtxObjectMemUsage_t osRtxSemaphoreMemUsage
    +
    + +
    +
    + +
    +
    + + + + +
    osRtxObjectMemUsage_t osRtxMemoryPoolMemUsage
    +
    + +
    +
    + +
    +
    + + + + +
    osRtxObjectMemUsage_t osRtxMessageQueueMemUsage
    +
    + +
    +
    + +
    +
    + + + + +
    const osRtxConfig_t osRtxConfig
    +
    + +
    +
    +
    +
    + + + + diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t.js new file mode 100644 index 0000000..1264ec6 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t.js @@ -0,0 +1,14 @@ +var rtx__os_8h_structosRtxConfig__t = +[ + [ "flags", "rtx__os_8h.html#a773b39d480759f67926cb18ae2219281", null ], + [ "tick_freq", "rtx__os_8h.html#a5973e7102782a9936a5e0d1417863675", null ], + [ "robin_timeout", "rtx__os_8h.html#a6b4c66676a5bc985c28b71ac4ac79159", null ], + [ "isr_queue", "rtx__os_8h.html#a0354dd9f726694843f2a01df98c5641c", null ], + [ "mem", "rtx__os_8h.html#aa30bb7d2484db1812c1aaf77a23cd11e", null ], + [ "mpi", "rtx__os_8h.html#ac013bca5f28bebf36a3372da78107e97", null ], + [ "thread_stack_size", "rtx__os_8h.html#a6aa2c0bcb2024f1e4c38f9e8f6769c09", null ], + [ "idle_thread_attr", "rtx__os_8h.html#a694e5f79185db270e087e94719177ca0", null ], + [ "timer_thread_attr", "rtx__os_8h.html#a310b3e01cc8e274529353210db5a78c3", null ], + [ "timer_mq_attr", "rtx__os_8h.html#a3e07bcf21ce5250f3dc0f1ec4ebc938d", null ], + [ "timer_mq_mcnt", "rtx__os_8h.html#a3d6d4ee231cd6db41ee358a5676b1a9d", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8isr__queue.js b/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8isr__queue.js new file mode 100644 index 0000000..6245bcb --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8isr__queue.js @@ -0,0 +1,6 @@ +var rtx__os_8h_structosRtxConfig__t_8isr__queue = +[ + [ "data", "rtx__os_8h.html#a8d777f385d3dfec8815d20f7496026dc", null ], + [ "max", "rtx__os_8h.html#a2ffe4e77325d9a7152f7086ea7aa5114", null ], + [ "padding", "rtx__os_8h.html#ab70cdb878a204fecf91c7dd1af312421", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8mem.js b/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8mem.js new file mode 100644 index 0000000..8ebce3f --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8mem.js @@ -0,0 +1,11 @@ +var rtx__os_8h_structosRtxConfig__t_8mem = +[ + [ "stack_addr", "rtx__os_8h.html#ae20e71788b6e24c734e1a4fbfb1bc55c", null ], + [ "stack_size", "rtx__os_8h.html#a0a8aa7db62759b8d67cca3ca2af45aa0", null ], + [ "mp_data_addr", "rtx__os_8h.html#af77cba93c22c4dac7ea999b28b6b686d", null ], + [ "mp_data_size", "rtx__os_8h.html#ad5ee660a662e3d7897a97f62ce6ecdc1", null ], + [ "mq_data_addr", "rtx__os_8h.html#a68d0eb20a4cb1daaec11ac0ef1dd9399", null ], + [ "mq_data_size", "rtx__os_8h.html#aab3d7e5f552f1830b1613e1498cef7cb", null ], + [ "common_addr", "rtx__os_8h.html#a2d0644ba3070f630371f24c452e2a26f", null ], + [ "common_size", "rtx__os_8h.html#adb7453887f86cc0d98e37becf4c83682", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8mpi.js b/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8mpi.js new file mode 100644 index 0000000..fa0cf44 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxConfig__t_8mpi.js @@ -0,0 +1,11 @@ +var rtx__os_8h_structosRtxConfig__t_8mpi = +[ + [ "stack", "rtx__os_8h.html#afac2a47adace059aff113283a03f6760", null ], + [ "thread", "rtx__os_8h.html#adc127f5d2483352fd20eaddb38feb6d2", null ], + [ "timer", "rtx__os_8h.html#a2c127bf32ccb4edf2bf22fea5a00e494", null ], + [ "event_flags", "rtx__os_8h.html#af1b7cb88db5bf93bba7cbcaa503cbd6c", null ], + [ "mutex", "rtx__os_8h.html#a25a01bb859125507013a2fe9737d3c32", null ], + [ "semaphore", "rtx__os_8h.html#ace1bc7755b9332cfacdf8ee58ef2e3c1", null ], + [ "memory_pool", "rtx__os_8h.html#a675214f6d8913a15569ca32f3a505e46", null ], + [ "message_queue", "rtx__os_8h.html#ac8a94d8dcb13e89d5886dabf7cd9945a", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxEventFlags__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxEventFlags__t.js new file mode 100644 index 0000000..aff4d71 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxEventFlags__t.js @@ -0,0 +1,10 @@ +var rtx__os_8h_structosRtxEventFlags__t = +[ + [ "id", "rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "reserved_state", "rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f", null ], + [ "flags", "rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "rtx__os_8h.html#a8afd5feb676df99867375957b0587451", null ], + [ "event_flags", "rtx__os_8h.html#a7044be0679894b5daf72f19f9dd06e03", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t.js new file mode 100644 index 0000000..b4c8119 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t.js @@ -0,0 +1,13 @@ +var rtx__os_8h_structosRtxInfo__t = +[ + [ "os_id", "rtx__os_8h.html#a7b7d02cdf33432995469f29878f7dcda", null ], + [ "version", "rtx__os_8h.html#acd99bb05ca015e7d74448acb1deba7ca", null ], + [ "kernel", "rtx__os_8h.html#a72d4e2550fcee67cc139fca04505a903", null ], + [ "tick_irqn", "rtx__os_8h.html#ad88a39594ffe6ab1016cf59517219e21", null ], + [ "thread", "rtx__os_8h.html#a540b2b79850c654b3f5756c488314b8d", null ], + [ "timer", "rtx__os_8h.html#ad2649f7342615613f26a8603203bba7b", null ], + [ "isr_queue", "rtx__os_8h.html#a534f37c2b021c8242492bedfe48b0338", null ], + [ "post_process", "rtx__os_8h.html#ae64a3e930a8e3d1fb28038db9bc514d9", null ], + [ "mem", "rtx__os_8h.html#a42d7108f7184dcb944cdf73f649ad2dd", null ], + [ "mpi", "rtx__os_8h.html#a13aeb46a18b12ae911abead8e497ffd3", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8isr__queue.js b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8isr__queue.js new file mode 100644 index 0000000..fc98efa --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8isr__queue.js @@ -0,0 +1,8 @@ +var rtx__os_8h_structosRtxInfo__t_8isr__queue = +[ + [ "max", "rtx__os_8h.html#a2ffe4e77325d9a7152f7086ea7aa5114", null ], + [ "cnt", "rtx__os_8h.html#a2817f701d5e1a1181e657251363295fd", null ], + [ "in", "rtx__os_8h.html#a13b5bfe96f3e2fe411c9f66f4a582adf", null ], + [ "out", "rtx__os_8h.html#ac68271a63ddbc431c307beb7d2918275", null ], + [ "data", "rtx__os_8h.html#a8d777f385d3dfec8815d20f7496026dc", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8kernel.js b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8kernel.js new file mode 100644 index 0000000..168f846 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8kernel.js @@ -0,0 +1,8 @@ +var rtx__os_8h_structosRtxInfo__t_8kernel = +[ + [ "state", "rtx__os_8h.html#a9ed39e2ea931586b6a985a6942ef573e", null ], + [ "blocked", "rtx__os_8h.html#a61326117ed4a9ddf3f754e71e119e5b3", null ], + [ "pendSV", "rtx__os_8h.html#adbd8f5195a8c472906488694e50bc57d", null ], + [ "reserved", "rtx__os_8h.html#a7f005c3fa691e77c52d3297cc2699072", null ], + [ "tick", "rtx__os_8h.html#ae5e5c0754f1e26bf915455e21cf2eba5", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8mem.js b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8mem.js new file mode 100644 index 0000000..eb6f9d4 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8mem.js @@ -0,0 +1,7 @@ +var rtx__os_8h_structosRtxInfo__t_8mem = +[ + [ "stack", "rtx__os_8h.html#afac2a47adace059aff113283a03f6760", null ], + [ "mp_data", "rtx__os_8h.html#a121e21e21369e7ccff1b47800c32797e", null ], + [ "mq_data", "rtx__os_8h.html#a0046cd4086246454426394e75d5ae872", null ], + [ "common", "rtx__os_8h.html#a9efab2399c7c560b34de477b9aa0a465", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8mpi.js b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8mpi.js new file mode 100644 index 0000000..ffacd7e --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8mpi.js @@ -0,0 +1,11 @@ +var rtx__os_8h_structosRtxInfo__t_8mpi = +[ + [ "stack", "rtx__os_8h.html#afac2a47adace059aff113283a03f6760", null ], + [ "thread", "rtx__os_8h.html#adc127f5d2483352fd20eaddb38feb6d2", null ], + [ "timer", "rtx__os_8h.html#a2c127bf32ccb4edf2bf22fea5a00e494", null ], + [ "event_flags", "rtx__os_8h.html#af1b7cb88db5bf93bba7cbcaa503cbd6c", null ], + [ "mutex", "rtx__os_8h.html#a25a01bb859125507013a2fe9737d3c32", null ], + [ "semaphore", "rtx__os_8h.html#ace1bc7755b9332cfacdf8ee58ef2e3c1", null ], + [ "memory_pool", "rtx__os_8h.html#a675214f6d8913a15569ca32f3a505e46", null ], + [ "message_queue", "rtx__os_8h.html#ac8a94d8dcb13e89d5886dabf7cd9945a", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread.js b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread.js new file mode 100644 index 0000000..117c99a --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread.js @@ -0,0 +1,10 @@ +var rtx__os_8h_structosRtxInfo__t_8thread = +[ + [ "run", "rtx__os_8h.html#aa53108f7543b75adbb34afc035d4cdf6", null ], + [ "ready", "rtx__os_8h.html#ab2fdab230a2c39f3595a947861863cb7", null ], + [ "idle", "rtx__os_8h.html#aec2f993aec2c27fc750119ab17b16cdb", null ], + [ "delay_list", "rtx__os_8h.html#a11175ec6a8801a32e287f84e82908bfb", null ], + [ "wait_list", "rtx__os_8h.html#ad9cc02dbd824d3b15349daa809bcfee9", null ], + [ "terminate_list", "rtx__os_8h.html#a1effca68f27e85391274c5e2987d693c", null ], + [ "robin", "rtx__os_8h.html#a8ee60a2e00c90d7e00d5069188dc115b", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread_8robin.js b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread_8robin.js new file mode 100644 index 0000000..417403c --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread_8robin.js @@ -0,0 +1,6 @@ +var rtx__os_8h_structosRtxInfo__t_8thread_8robin = +[ + [ "thread", "rtx__os_8h.html#adc127f5d2483352fd20eaddb38feb6d2", null ], + [ "tick", "rtx__os_8h.html#ae5e5c0754f1e26bf915455e21cf2eba5", null ], + [ "timeout", "rtx__os_8h.html#a90272dda245ae1fb3cf197e91a8689dc", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread_8run.js b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread_8run.js new file mode 100644 index 0000000..a4785ba --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8thread_8run.js @@ -0,0 +1,5 @@ +var rtx__os_8h_structosRtxInfo__t_8thread_8run = +[ + [ "curr", "rtx__os_8h.html#a09c2a312ca0311b5e24340fe8f827077", null ], + [ "next", "rtx__os_8h.html#ad0cab90d8d20d57e2f2b9be52f7dd25d", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8timer.js b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8timer.js new file mode 100644 index 0000000..226e12c --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxInfo__t_8timer.js @@ -0,0 +1,6 @@ +var rtx__os_8h_structosRtxInfo__t_8timer = +[ + [ "list", "rtx__os_8h.html#a10ae9fc7d453b0dd525d0edf2ede7961", null ], + [ "thread", "rtx__os_8h.html#adc127f5d2483352fd20eaddb38feb6d2", null ], + [ "mq", "rtx__os_8h.html#a1d8a4975693ef1eb9ca54878098d608f", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxMemoryPool__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxMemoryPool__t.js new file mode 100644 index 0000000..d188709 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxMemoryPool__t.js @@ -0,0 +1,10 @@ +var rtx__os_8h_structosRtxMemoryPool__t = +[ + [ "id", "rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "reserved_state", "rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f", null ], + [ "flags", "rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "rtx__os_8h.html#a8afd5feb676df99867375957b0587451", null ], + [ "mp_info", "rtx__os_8h.html#ac1cf67a8631962a42fa2da46f20a1a39", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxMessageQueue__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxMessageQueue__t.js new file mode 100644 index 0000000..98c95c1 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxMessageQueue__t.js @@ -0,0 +1,14 @@ +var rtx__os_8h_structosRtxMessageQueue__t = +[ + [ "id", "rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "reserved_state", "rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f", null ], + [ "flags", "rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "rtx__os_8h.html#a8afd5feb676df99867375957b0587451", null ], + [ "mp_info", "rtx__os_8h.html#ac1cf67a8631962a42fa2da46f20a1a39", null ], + [ "msg_size", "rtx__os_8h.html#a58873af81b75772a41aa5c1ff788a0c2", null ], + [ "msg_count", "rtx__os_8h.html#a6a019648a53352a413ea79b958a362cd", null ], + [ "msg_first", "rtx__os_8h.html#a13c143cc2f25a550fc3eb7ae68b0c56d", null ], + [ "msg_last", "rtx__os_8h.html#ab386d4a98974f52ca151426c4dde0da4", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxMessage__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxMessage__t.js new file mode 100644 index 0000000..0c9724f --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxMessage__t.js @@ -0,0 +1,9 @@ +var rtx__os_8h_structosRtxMessage__t = +[ + [ "id", "rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "reserved_state", "rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f", null ], + [ "flags", "rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "priority", "rtx__os_8h.html#a0ad043071ccc7a261d79a759dc9c6f0c", null ], + [ "prev", "rtx__os_8h.html#ad2b4e6d37acc8020701610f54c0c8910", null ], + [ "next", "rtx__os_8h.html#a89570e219f9fb794b8353207a7592f95", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxMpInfo__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxMpInfo__t.js new file mode 100644 index 0000000..79fb57c --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxMpInfo__t.js @@ -0,0 +1,9 @@ +var rtx__os_8h_structosRtxMpInfo__t = +[ + [ "max_blocks", "rtx__os_8h.html#addc777bf5285ab03de6787385e6ea053", null ], + [ "used_blocks", "rtx__os_8h.html#a444139ba664bc8c262139a9addddb48c", null ], + [ "block_size", "rtx__os_8h.html#a9e3fb1e50a1c71b2337df296222d9553", null ], + [ "block_base", "rtx__os_8h.html#a4a598d941460a6d8ebfbd9c622e2876a", null ], + [ "block_lim", "rtx__os_8h.html#aba0fcdc6eda7e9f65c1d1904b2fff919", null ], + [ "block_free", "rtx__os_8h.html#aa111194ee30ea4e76b9dfcac8a03a8d9", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxMutex__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxMutex__t.js new file mode 100644 index 0000000..066cc61 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxMutex__t.js @@ -0,0 +1,14 @@ +var rtx__os_8h_structosRtxMutex__t = +[ + [ "id", "rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "reserved_state", "rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f", null ], + [ "flags", "rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "attr", "rtx__os_8h.html#a28478ea2856f6286899bc90b2c6a1ec4", null ], + [ "name", "rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "rtx__os_8h.html#a8afd5feb676df99867375957b0587451", null ], + [ "owner_thread", "rtx__os_8h.html#a987889d464cb2925029e135b76aa0dc9", null ], + [ "owner_prev", "rtx__os_8h.html#a50b315b9b80bafdba54a7a731be1cc30", null ], + [ "owner_next", "rtx__os_8h.html#a54be7ae32f627ee70e1af8c54203ee5a", null ], + [ "lock", "rtx__os_8h.html#a92435efb84d6814afd444fd462802e9c", null ], + [ "padding", "rtx__os_8h.html#a735ef00341a84c02ba561c66de3d20af", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxObjectMemUsage__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxObjectMemUsage__t.js new file mode 100644 index 0000000..0724a94 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxObjectMemUsage__t.js @@ -0,0 +1,6 @@ +var rtx__os_8h_structosRtxObjectMemUsage__t = +[ + [ "cnt_alloc", "rtx__os_8h.html#a6bc379cb485caaa1bd9b63abbc79a4ec", null ], + [ "cnt_free", "rtx__os_8h.html#a5916fa670084fea56a52ba450565da4b", null ], + [ "max_used", "rtx__os_8h.html#a81baadf3fdf0eeff338f997ca3fe5009", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxObject__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxObject__t.js new file mode 100644 index 0000000..c2ca9c1 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxObject__t.js @@ -0,0 +1,9 @@ +var rtx__os_8h_structosRtxObject__t = +[ + [ "id", "rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "rtx__os_8h.html#a8afd5feb676df99867375957b0587451", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxSemaphore__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxSemaphore__t.js new file mode 100644 index 0000000..77fe71b --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxSemaphore__t.js @@ -0,0 +1,11 @@ +var rtx__os_8h_structosRtxSemaphore__t = +[ + [ "id", "rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "reserved_state", "rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f", null ], + [ "flags", "rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "reserved", "rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7", null ], + [ "name", "rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_list", "rtx__os_8h.html#a8afd5feb676df99867375957b0587451", null ], + [ "tokens", "rtx__os_8h.html#a4e2e4e1126848f81d9e943147e07f0e0", null ], + [ "max_tokens", "rtx__os_8h.html#aa793f0e9a46e8b59b6d351535ee18a7d", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxThread__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxThread__t.js new file mode 100644 index 0000000..865de51 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxThread__t.js @@ -0,0 +1,26 @@ +var rtx__os_8h_structosRtxThread__t = +[ + [ "id", "rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "attr", "rtx__os_8h.html#a28478ea2856f6286899bc90b2c6a1ec4", null ], + [ "name", "rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "thread_next", "rtx__os_8h.html#a421971e8ae94fe0bd86b85a90445e71e", null ], + [ "thread_prev", "rtx__os_8h.html#aa230a0d899f6c0750e6d454af3ef9b05", null ], + [ "delay_next", "rtx__os_8h.html#a21a74cedec66715cd5d7422797035868", null ], + [ "delay_prev", "rtx__os_8h.html#adcfea33cc536708db8a3419ba0295551", null ], + [ "thread_join", "rtx__os_8h.html#a83ec0540c50d4e79bed99f1b384bd2b9", null ], + [ "delay", "rtx__os_8h.html#a458421a43d4f6dc515faf427bf579d00", null ], + [ "priority", "rtx__os_8h.html#a81659cc4c01e54e2424022728d9effc7", null ], + [ "priority_base", "rtx__os_8h.html#ac67f8858081fb7a6e5a4ee8d2de3b348", null ], + [ "stack_frame", "rtx__os_8h.html#a1071334ebd46d95b9ab1dcad788b2adc", null ], + [ "flags_options", "rtx__os_8h.html#a87c898585d0aeffdcf67c9e1b3befefe", null ], + [ "wait_flags", "rtx__os_8h.html#a3c7b4f24d9527394f4b5a1135d117691", null ], + [ "thread_flags", "rtx__os_8h.html#ae757685e50b875e953f4aff67ac24b1b", null ], + [ "mutex_list", "rtx__os_8h.html#a70b3153655adaf42687fe250983f6c95", null ], + [ "stack_mem", "rtx__os_8h.html#a447dbb69b4c036e118b3b1b8bd22fe60", null ], + [ "stack_size", "rtx__os_8h.html#ad63716408aae5b50857ca8ce74e3a3ff", null ], + [ "sp", "rtx__os_8h.html#a382a07e24a852d580d7548b8d517384c", null ], + [ "thread_addr", "rtx__os_8h.html#adf2ebf46aa7018845582f1c70de83598", null ], + [ "tz_memory", "rtx__os_8h.html#adaa6c424a231e5f6c788532675f33e16", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxTimerFinfo__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxTimerFinfo__t.js new file mode 100644 index 0000000..7783af3 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxTimerFinfo__t.js @@ -0,0 +1,5 @@ +var rtx__os_8h_structosRtxTimerFinfo__t = +[ + [ "func", "rtx__os_8h.html#aaf8577e5ddcbff356a1d27310baa8a1f", null ], + [ "arg", "rtx__os_8h.html#a9ce2ec4812a92cb6ab39f6e81e9173a9", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8h_structosRtxTimer__t.js b/docs/RTOS2/html/rtx__os_8h_structosRtxTimer__t.js new file mode 100644 index 0000000..a79ad3d --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8h_structosRtxTimer__t.js @@ -0,0 +1,13 @@ +var rtx__os_8h_structosRtxTimer__t = +[ + [ "id", "rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b", null ], + [ "state", "rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830", null ], + [ "flags", "rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe", null ], + [ "type", "rtx__os_8h.html#a1d127017fb298b889f4ba24752d08b8e", null ], + [ "name", "rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb", null ], + [ "prev", "rtx__os_8h.html#ac8953ebf7df8aaf724cb12876ac8fb1a", null ], + [ "next", "rtx__os_8h.html#a8b9ac161a613448926b2c2b2c8dbe259", null ], + [ "tick", "rtx__os_8h.html#a260e06ce96c2e4deebccaedeb059dc0b", null ], + [ "load", "rtx__os_8h.html#aee4a6239f04d660fc90663dd6b39ca95", null ], + [ "finfo", "rtx__os_8h.html#ab415a6615c5ddf5365ed86e58a1e1809", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/rtx__os_8txt.html b/docs/RTOS2/html/rtx__os_8txt.html new file mode 100644 index 0000000..a912eb9 --- /dev/null +++ b/docs/RTOS2/html/rtx__os_8txt.html @@ -0,0 +1,129 @@ + + + + + +rtx_os.txt File Reference +CMSIS-RTOS2: rtx_os.txt File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/docs/RTOS2/html/scheduling.png b/docs/RTOS2/html/scheduling.png new file mode 100644 index 0000000..f6fe4ec Binary files /dev/null and b/docs/RTOS2/html/scheduling.png differ diff --git a/docs/RTOS2/html/search.css b/docs/RTOS2/html/search.css new file mode 100644 index 0000000..1746d13 --- /dev/null +++ b/docs/RTOS2/html/search.css @@ -0,0 +1,240 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#searchli { + float: right; + display: block; + width: 170px; + height: 24px; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 3px; + right: 0px; + width: 170px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:116px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} diff --git a/docs/RTOS2/html/search/all_0.html b/docs/RTOS2/html/search/all_0.html new file mode 100644 index 0000000..17b6da8 --- /dev/null +++ b/docs/RTOS2/html/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_0.js b/docs/RTOS2/html/search/all_0.js new file mode 100644 index 0000000..4e3f0ab --- /dev/null +++ b/docs/RTOS2/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5fno_5freturn',['__NO_RETURN',['../cmsis__os2_8h.html#a153a4a31b276a9758959580538720a51',1,'cmsis_os2.h']]] +]; diff --git a/docs/RTOS2/html/search/all_1.html b/docs/RTOS2/html/search/all_1.html new file mode 100644 index 0000000..e290644 --- /dev/null +++ b/docs/RTOS2/html/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_1.js b/docs/RTOS2/html/search/all_1.js new file mode 100644 index 0000000..b596e5b --- /dev/null +++ b/docs/RTOS2/html/search/all_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['api',['api',['../group__CMSIS__RTOS__KernelCtrl.html#a76a1ef1a4d3d9bd3e70783051f22a6d3',1,'osVersion_t']]], + ['arg',['arg',['../rtx__os_8h.html#a9ce2ec4812a92cb6ab39f6e81e9173a9',1,'osRtxTimerFinfo_t']]], + ['attr',['attr',['../rtx__os_8h.html#a28478ea2856f6286899bc90b2c6a1ec4',1,'osRtxThread_t::attr()'],['../rtx__os_8h.html#a28478ea2856f6286899bc90b2c6a1ec4',1,'osRtxMutex_t::attr()']]], + ['attr_5fbits',['attr_bits',['../group__CMSIS__RTOS__ThreadMgmt.html#a6e93b49cb79c12f768d72580c7731f30',1,'osThreadAttr_t::attr_bits()'],['../group__CMSIS__RTOS__TimerMgmt.html#a6e93b49cb79c12f768d72580c7731f30',1,'osTimerAttr_t::attr_bits()'],['../group__CMSIS__RTOS__EventFlags.html#a6e93b49cb79c12f768d72580c7731f30',1,'osEventFlagsAttr_t::attr_bits()'],['../group__CMSIS__RTOS__MutexMgmt.html#a6e93b49cb79c12f768d72580c7731f30',1,'osMutexAttr_t::attr_bits()'],['../group__CMSIS__RTOS__SemaphoreMgmt.html#a6e93b49cb79c12f768d72580c7731f30',1,'osSemaphoreAttr_t::attr_bits()'],['../group__CMSIS__RTOS__PoolMgmt.html#a6e93b49cb79c12f768d72580c7731f30',1,'osMemoryPoolAttr_t::attr_bits()'],['../group__CMSIS__RTOS__Message.html#a6e93b49cb79c12f768d72580c7731f30',1,'osMessageQueueAttr_t::attr_bits()']]] +]; diff --git a/docs/RTOS2/html/search/all_10.html b/docs/RTOS2/html/search/all_10.html new file mode 100644 index 0000000..c55c836 --- /dev/null +++ b/docs/RTOS2/html/search/all_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_10.js b/docs/RTOS2/html/search/all_10.js new file mode 100644 index 0000000..35b2f26 --- /dev/null +++ b/docs/RTOS2/html/search/all_10.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['rtx_20migration_20guide',['RTX Migration Guide',['../os2MigrationGuide.html',1,'os2Migration']]], + ['reserved',['reserved',['../group__CMSIS__RTOS__ThreadMgmt.html#a66f538babc389986738ec70104e0562b',1,'osThreadAttr_t::reserved()'],['../rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7',1,'osRtxEventFlags_t::reserved()'],['../rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7',1,'osRtxSemaphore_t::reserved()'],['../rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7',1,'osRtxMemoryPool_t::reserved()'],['../rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7',1,'osRtxMessageQueue_t::reserved()'],['../rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7',1,'osRtxObject_t::reserved()']]], + ['reserved_5fstate',['reserved_state',['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxEventFlags_t::reserved_state()'],['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxMutex_t::reserved_state()'],['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxSemaphore_t::reserved_state()'],['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxMemoryPool_t::reserved_state()'],['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxMessage_t::reserved_state()'],['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxMessageQueue_t::reserved_state()']]], + ['robin_5ftimeout',['robin_timeout',['../rtx__os_8h.html#a6b4c66676a5bc985c28b71ac4ac79159',1,'osRtxConfig_t']]], + ['revision_20history',['Revision History',['../rtos_revisionHistory.html',1,'index']]], + ['rtos_20validation',['RTOS Validation',['../rtosValidation.html',1,'index']]], + ['rtx_20v5_20implementation',['RTX v5 Implementation',['../rtx5_impl.html',1,'index']]], + ['rtx_20v5_20specific_20api',['RTX v5 Specific API',['../group__rtx5__specific.html',1,'']]], + ['rtx_5fevr_2eh',['rtx_evr.h',['../rtx__evr_8h.html',1,'']]], + ['rtx_5fevr_2etxt',['rtx_evr.txt',['../rtx__evr_8txt.html',1,'']]], + ['rtx_5fos_2eh',['rtx_os.h',['../rtx__os_8h.html',1,'']]], + ['rtx_5fos_2etxt',['rtx_os.txt',['../rtx__os_8txt.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/all_11.html b/docs/RTOS2/html/search/all_11.html new file mode 100644 index 0000000..6f3943a --- /dev/null +++ b/docs/RTOS2/html/search/all_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_11.js b/docs/RTOS2/html/search/all_11.js new file mode 100644 index 0000000..82b4018 --- /dev/null +++ b/docs/RTOS2/html/search/all_11.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['semaphores',['Semaphores',['../group__CMSIS__RTOS__SemaphoreMgmt.html',1,'']]], + ['supported_20toolchains',['Supported Toolchains',['../pToolchains.html',1,'technicalData5']]], + ['semaphore_20functions',['Semaphore Functions',['../group__rtx__evr__semaphore.html',1,'']]], + ['sp',['sp',['../rtx__os_8h.html#a382a07e24a852d580d7548b8d517384c',1,'osRtxThread_t']]], + ['stack_5fframe',['stack_frame',['../rtx__os_8h.html#a1071334ebd46d95b9ab1dcad788b2adc',1,'osRtxThread_t']]], + ['stack_5fmem',['stack_mem',['../group__CMSIS__RTOS__ThreadMgmt.html#ad7c9b42355a4c8b9467130ab3fb19e43',1,'osThreadAttr_t::stack_mem()'],['../rtx__os_8h.html#a447dbb69b4c036e118b3b1b8bd22fe60',1,'osRtxThread_t::stack_mem()']]], + ['stack_5fsize',['stack_size',['../group__CMSIS__RTOS__ThreadMgmt.html#aacbc9a219f2d6870e9ce89bb93f975c9',1,'osThreadAttr_t::stack_size()'],['../rtx__os_8h.html#ad63716408aae5b50857ca8ce74e3a3ff',1,'osRtxThread_t::stack_size()']]], + ['state',['state',['../rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830',1,'osRtxThread_t::state()'],['../rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830',1,'osRtxTimer_t::state()'],['../rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830',1,'osRtxObject_t::state()']]], + ['svc_5fhandler',['SVC_Handler',['../rtx__os_8h.html#a3e5ddb3df0d62f2dc357e64a3f04a6ce',1,'rtx_os.h']]], + ['systick_5fhandler',['SysTick_Handler',['../rtx__os_8h.html#ab5e09814056d617c521549e542639b7e',1,'rtx_os.h']]] +]; diff --git a/docs/RTOS2/html/search/all_12.html b/docs/RTOS2/html/search/all_12.html new file mode 100644 index 0000000..3c7c89e --- /dev/null +++ b/docs/RTOS2/html/search/all_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_12.js b/docs/RTOS2/html/search/all_12.js new file mode 100644 index 0000000..d4d22a6 --- /dev/null +++ b/docs/RTOS2/html/search/all_12.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['thread_20flags',['Thread Flags',['../group__CMSIS__RTOS__ThreadFlagsMgmt.html',1,'']]], + ['thread_20management',['Thread Management',['../group__CMSIS__RTOS__ThreadMgmt.html',1,'']]], + ['timer_20management',['Timer Management',['../group__CMSIS__RTOS__TimerMgmt.html',1,'']]], + ['thread_20functions',['Thread Functions',['../group__rtx__evr__thread.html',1,'']]], + ['timer_20functions',['Timer Functions',['../group__rtx__evr__timer.html',1,'']]], + ['technical_20data',['Technical Data',['../technicalData5.html',1,'rtx5_impl']]], + ['theory_20of_20operation',['Theory of Operation',['../theory_of_operation.html',1,'rtx5_impl']]], + ['thread',['thread',['../rtx__os_8h.html#a540b2b79850c654b3f5756c488314b8d',1,'osRtxInfo_t']]], + ['thread_5faddr',['thread_addr',['../rtx__os_8h.html#adf2ebf46aa7018845582f1c70de83598',1,'osRtxThread_t']]], + ['thread_5fflags',['thread_flags',['../rtx__os_8h.html#ae757685e50b875e953f4aff67ac24b1b',1,'osRtxThread_t']]], + ['thread_5fjoin',['thread_join',['../rtx__os_8h.html#a83ec0540c50d4e79bed99f1b384bd2b9',1,'osRtxThread_t']]], + ['thread_5flist',['thread_list',['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxEventFlags_t::thread_list()'],['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxMutex_t::thread_list()'],['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxSemaphore_t::thread_list()'],['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxMemoryPool_t::thread_list()'],['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxMessageQueue_t::thread_list()'],['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxObject_t::thread_list()']]], + ['thread_5fnext',['thread_next',['../rtx__os_8h.html#a421971e8ae94fe0bd86b85a90445e71e',1,'osRtxThread_t']]], + ['thread_5fprev',['thread_prev',['../rtx__os_8h.html#aa230a0d899f6c0750e6d454af3ef9b05',1,'osRtxThread_t']]], + ['thread_5fstack_5fsize',['thread_stack_size',['../rtx__os_8h.html#a6aa2c0bcb2024f1e4c38f9e8f6769c09',1,'osRtxConfig_t']]], + ['tick',['tick',['../rtx__os_8h.html#a260e06ce96c2e4deebccaedeb059dc0b',1,'osRtxTimer_t']]], + ['tick_5ffreq',['tick_freq',['../rtx__os_8h.html#a5973e7102782a9936a5e0d1417863675',1,'osRtxConfig_t']]], + ['tick_5firqn',['tick_irqn',['../rtx__os_8h.html#ad88a39594ffe6ab1016cf59517219e21',1,'osRtxInfo_t']]], + ['timer',['timer',['../rtx__os_8h.html#ad2649f7342615613f26a8603203bba7b',1,'osRtxInfo_t']]], + ['timer_5fmq_5fattr',['timer_mq_attr',['../rtx__os_8h.html#a3e07bcf21ce5250f3dc0f1ec4ebc938d',1,'osRtxConfig_t']]], + ['timer_5fmq_5fmcnt',['timer_mq_mcnt',['../rtx__os_8h.html#a3d6d4ee231cd6db41ee358a5676b1a9d',1,'osRtxConfig_t']]], + ['timer_5fthread_5fattr',['timer_thread_attr',['../rtx__os_8h.html#a310b3e01cc8e274529353210db5a78c3',1,'osRtxConfig_t']]], + ['tokens',['tokens',['../rtx__os_8h.html#a4e2e4e1126848f81d9e943147e07f0e0',1,'osRtxSemaphore_t']]], + ['type',['type',['../rtx__os_8h.html#a1d127017fb298b889f4ba24752d08b8e',1,'osRtxTimer_t']]], + ['tz_5fmemory',['tz_memory',['../rtx__os_8h.html#adaa6c424a231e5f6c788532675f33e16',1,'osRtxThread_t']]], + ['tz_5fmodule',['tz_module',['../group__CMSIS__RTOS__ThreadMgmt.html#a697f2aad6119d655d212ea10245ae394',1,'osThreadAttr_t']]], + ['tz_5fmoduleid_5ft',['TZ_MODULEID_T',['../cmsis__os2_8h.html#a78775dae56f0c9698cdab6e1ca74503f',1,'TZ_MODULEID_T(): cmsis_os2.h'],['../cmsis__os2_8h.html#ad5ef21485fe5f60263bc0b48006202cb',1,'TZ_ModuleId_t(): cmsis_os2.h']]] +]; diff --git a/docs/RTOS2/html/search/all_13.html b/docs/RTOS2/html/search/all_13.html new file mode 100644 index 0000000..0bd629b --- /dev/null +++ b/docs/RTOS2/html/search/all_13.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_13.js b/docs/RTOS2/html/search/all_13.js new file mode 100644 index 0000000..921e760 --- /dev/null +++ b/docs/RTOS2/html/search/all_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['used_5fblocks',['used_blocks',['../rtx__os_8h.html#a444139ba664bc8c262139a9addddb48c',1,'osRtxMpInfo_t']]] +]; diff --git a/docs/RTOS2/html/search/all_14.html b/docs/RTOS2/html/search/all_14.html new file mode 100644 index 0000000..2ad638b --- /dev/null +++ b/docs/RTOS2/html/search/all_14.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_14.js b/docs/RTOS2/html/search/all_14.js new file mode 100644 index 0000000..75625e1 --- /dev/null +++ b/docs/RTOS2/html/search/all_14.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['validation_2etxt',['validation.txt',['../validation_8txt.html',1,'']]], + ['version',['version',['../rtx__os_8h.html#acd99bb05ca015e7d74448acb1deba7ca',1,'osRtxInfo_t']]] +]; diff --git a/docs/RTOS2/html/search/all_15.html b/docs/RTOS2/html/search/all_15.html new file mode 100644 index 0000000..d3b5274 --- /dev/null +++ b/docs/RTOS2/html/search/all_15.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_15.js b/docs/RTOS2/html/search/all_15.js new file mode 100644 index 0000000..e1698ec --- /dev/null +++ b/docs/RTOS2/html/search/all_15.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wait_5fflags',['wait_flags',['../rtx__os_8h.html#a3c7b4f24d9527394f4b5a1135d117691',1,'osRtxThread_t']]] +]; diff --git a/docs/RTOS2/html/search/all_2.html b/docs/RTOS2/html/search/all_2.html new file mode 100644 index 0000000..95ded12 --- /dev/null +++ b/docs/RTOS2/html/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_2.js b/docs/RTOS2/html/search/all_2.js new file mode 100644 index 0000000..b685507 --- /dev/null +++ b/docs/RTOS2/html/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['block_5fbase',['block_base',['../rtx__os_8h.html#a4a598d941460a6d8ebfbd9c622e2876a',1,'osRtxMpInfo_t']]], + ['block_5ffree',['block_free',['../rtx__os_8h.html#aa111194ee30ea4e76b9dfcac8a03a8d9',1,'osRtxMpInfo_t']]], + ['block_5flim',['block_lim',['../rtx__os_8h.html#aba0fcdc6eda7e9f65c1d1904b2fff919',1,'osRtxMpInfo_t']]], + ['block_5fsize',['block_size',['../rtx__os_8h.html#a9e3fb1e50a1c71b2337df296222d9553',1,'osRtxMpInfo_t']]], + ['building_20the_20rtx5_20library',['Building the RTX5 Library',['../creating_RTX5_LIB.html',1,'rtx5_impl']]] +]; diff --git a/docs/RTOS2/html/search/all_3.html b/docs/RTOS2/html/search/all_3.html new file mode 100644 index 0000000..4d312d0 --- /dev/null +++ b/docs/RTOS2/html/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_3.js b/docs/RTOS2/html/search/all_3.js new file mode 100644 index 0000000..55e5a7a --- /dev/null +++ b/docs/RTOS2/html/search/all_3.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['cb_5fmem',['cb_mem',['../group__CMSIS__RTOS__ThreadMgmt.html#a1e100dc33d403841ed3c344e3397868e',1,'osThreadAttr_t::cb_mem()'],['../group__CMSIS__RTOS__TimerMgmt.html#a1e100dc33d403841ed3c344e3397868e',1,'osTimerAttr_t::cb_mem()'],['../group__CMSIS__RTOS__EventFlags.html#a1e100dc33d403841ed3c344e3397868e',1,'osEventFlagsAttr_t::cb_mem()'],['../group__CMSIS__RTOS__MutexMgmt.html#a1e100dc33d403841ed3c344e3397868e',1,'osMutexAttr_t::cb_mem()'],['../group__CMSIS__RTOS__SemaphoreMgmt.html#a1e100dc33d403841ed3c344e3397868e',1,'osSemaphoreAttr_t::cb_mem()'],['../group__CMSIS__RTOS__PoolMgmt.html#a1e100dc33d403841ed3c344e3397868e',1,'osMemoryPoolAttr_t::cb_mem()'],['../group__CMSIS__RTOS__Message.html#a1e100dc33d403841ed3c344e3397868e',1,'osMessageQueueAttr_t::cb_mem()']]], + ['cb_5fsize',['cb_size',['../group__CMSIS__RTOS__ThreadMgmt.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osThreadAttr_t::cb_size()'],['../group__CMSIS__RTOS__TimerMgmt.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osTimerAttr_t::cb_size()'],['../group__CMSIS__RTOS__EventFlags.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osEventFlagsAttr_t::cb_size()'],['../group__CMSIS__RTOS__MutexMgmt.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osMutexAttr_t::cb_size()'],['../group__CMSIS__RTOS__SemaphoreMgmt.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osSemaphoreAttr_t::cb_size()'],['../group__CMSIS__RTOS__PoolMgmt.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osMemoryPoolAttr_t::cb_size()'],['../group__CMSIS__RTOS__Message.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osMessageQueueAttr_t::cb_size()']]], + ['cmsis_5fos2_2eh',['cmsis_os2.h',['../cmsis__os2_8h.html',1,'']]], + ['cmsis_5fos2_2etxt',['cmsis_os2.txt',['../cmsis__os2_8txt.html',1,'']]], + ['cmsis_5fos2_5fevent_2etxt',['cmsis_os2_Event.txt',['../cmsis__os2__Event_8txt.html',1,'']]], + ['cmsis_5fos2_5fkernel_2etxt',['cmsis_os2_Kernel.txt',['../cmsis__os2__Kernel_8txt.html',1,'']]], + ['cmsis_5fos2_5fmempool_2etxt',['cmsis_os2_MemPool.txt',['../cmsis__os2__MemPool_8txt.html',1,'']]], + ['cmsis_5fos2_5fmessage_2etxt',['cmsis_os2_Message.txt',['../cmsis__os2__Message_8txt.html',1,'']]], + ['cmsis_5fos2_5fmigration_2etxt',['cmsis_os2_Migration.txt',['../cmsis__os2__Migration_8txt.html',1,'']]], + ['cmsis_5fos2_5fmigrationguide_2etxt',['cmsis_os2_MigrationGuide.txt',['../cmsis__os2__MigrationGuide_8txt.html',1,'']]], + ['cmsis_5fos2_5fmutex_2etxt',['cmsis_os2_Mutex.txt',['../cmsis__os2__Mutex_8txt.html',1,'']]], + ['cmsis_5fos2_5fsema_2etxt',['cmsis_os2_Sema.txt',['../cmsis__os2__Sema_8txt.html',1,'']]], + ['cmsis_5fos2_5fstatus_2etxt',['cmsis_os2_Status.txt',['../cmsis__os2__Status_8txt.html',1,'']]], + ['cmsis_5fos2_5fthread_2etxt',['cmsis_os2_Thread.txt',['../cmsis__os2__Thread_8txt.html',1,'']]], + ['cmsis_5fos2_5fthreadflags_2etxt',['cmsis_os2_ThreadFlags.txt',['../cmsis__os2__ThreadFlags_8txt.html',1,'']]], + ['cmsis_5fos2_5ftick_2etxt',['cmsis_os2_tick.txt',['../cmsis__os2__tick_8txt.html',1,'']]], + ['cmsis_5fos2_5ftimer_2etxt',['cmsis_os2_Timer.txt',['../cmsis__os2__Timer_8txt.html',1,'']]], + ['cmsis_5fos2_5fwait_2etxt',['cmsis_os2_Wait.txt',['../cmsis__os2__Wait_8txt.html',1,'']]], + ['cmsis_2drtos_20api_20v2',['CMSIS-RTOS API v2',['../group__CMSIS__RTOS.html',1,'']]], + ['cnt_5falloc',['cnt_alloc',['../rtx__os_8h.html#a6bc379cb485caaa1bd9b63abbc79a4ec',1,'osRtxObjectMemUsage_t']]], + ['cnt_5ffree',['cnt_free',['../rtx__os_8h.html#a5916fa670084fea56a52ba450565da4b',1,'osRtxObjectMemUsage_t']]], + ['coding_20rules',['Coding Rules',['../CodingRules.html',1,'']]], + ['configure_20rtx_20v5',['Configure RTX v5',['../config_rtx5.html',1,'rtx5_impl']]], + ['create_20an_20rtx5_20project',['Create an RTX5 Project',['../cre_rtx_proj.html',1,'rtx5_impl']]], + ['control_20block_20sizes',['Control Block Sizes',['../pControlBlockSizes.html',1,'technicalData5']]], + ['cmsis_2drtos_20c_20api_20v2',['CMSIS-RTOS C API v2',['../rtos_api2.html',1,'functionOverview']]], + ['cmsis_2drtos_20c_2b_2b_20api',['CMSIS-RTOS C++ API',['../rtos_apicpp.html',1,'functionOverview']]] +]; diff --git a/docs/RTOS2/html/search/all_4.html b/docs/RTOS2/html/search/all_4.html new file mode 100644 index 0000000..d72a910 --- /dev/null +++ b/docs/RTOS2/html/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_4.js b/docs/RTOS2/html/search/all_4.js new file mode 100644 index 0000000..1510cb7 --- /dev/null +++ b/docs/RTOS2/html/search/all_4.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['definitions',['Definitions',['../group__CMSIS__RTOS__Definitions.html',1,'']]], + ['delay',['delay',['../rtx__os_8h.html#a458421a43d4f6dc515faf427bf579d00',1,'osRtxThread_t']]], + ['delay_5fnext',['delay_next',['../rtx__os_8h.html#a21a74cedec66715cd5d7422797035868',1,'osRtxThread_t']]], + ['delay_5fprev',['delay_prev',['../rtx__os_8h.html#adcfea33cc536708db8a3419ba0295551',1,'osRtxThread_t']]], + ['detailed_20api_20function_20differences',['Detailed API Function Differences',['../os2MigrationFunctions.html',1,'os2Migration']]], + ['directory_20structure_20and_20file_20overview',['Directory Structure and File Overview',['../pDirectory_Files.html',1,'technicalData5']]] +]; diff --git a/docs/RTOS2/html/search/all_5.html b/docs/RTOS2/html/search/all_5.html new file mode 100644 index 0000000..99ef726 --- /dev/null +++ b/docs/RTOS2/html/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_5.js b/docs/RTOS2/html/search/all_5.js new file mode 100644 index 0000000..f5d2dd5 --- /dev/null +++ b/docs/RTOS2/html/search/all_5.js @@ -0,0 +1,174 @@ +var searchData= +[ + ['event_20flags',['Event Flags',['../group__CMSIS__RTOS__EventFlags.html',1,'']]], + ['event_5fflags',['event_flags',['../rtx__os_8h.html#a7044be0679894b5daf72f19f9dd06e03',1,'osRtxEventFlags_t']]], + ['evrrtxeventflagsclear',['EvrRtxEventFlagsClear',['../rtx__evr_8h.html#ab31f9da565b0170d8e89edf0e848f28b',1,'rtx_evr.h']]], + ['evrrtxeventflagscleardone',['EvrRtxEventFlagsClearDone',['../rtx__evr_8h.html#a9e4c4e5d45bc721439c1919621a49d5a',1,'rtx_evr.h']]], + ['evrrtxeventflagscreated',['EvrRtxEventFlagsCreated',['../group__rtx__evr__event__flasg.html#gaa1f48b9787e3a7d4f56449ed1dd12f26',1,'rtx_evr.h']]], + ['evrrtxeventflagsdelete',['EvrRtxEventFlagsDelete',['../group__rtx__evr__event__flasg.html#ga10e98e35999350e9e337c716ba4dc079',1,'rtx_evr.h']]], + ['evrrtxeventflagsdestroyed',['EvrRtxEventFlagsDestroyed',['../group__rtx__evr__event__flasg.html#ga2ef153a6ee7a8d72375f81128454ede9',1,'rtx_evr.h']]], + ['evrrtxeventflagserror',['EvrRtxEventFlagsError',['../group__rtx__evr__event__flasg.html#gaa281b7380c0fa725faa722badbeb2e5f',1,'rtx_evr.h']]], + ['evrrtxeventflagsget',['EvrRtxEventFlagsGet',['../rtx__evr_8h.html#a113c32ff195c612ec2fb6a9dd5740184',1,'rtx_evr.h']]], + ['evrrtxeventflagsgetname',['EvrRtxEventFlagsGetName',['../group__rtx__evr__event__flasg.html#gae9ebcbc09a1c15c719d95fe7b8c2ee18',1,'rtx_evr.h']]], + ['evrrtxeventflagsnew',['EvrRtxEventFlagsNew',['../group__rtx__evr__event__flasg.html#gae798cdc4cb10ada732e592318037cba7',1,'rtx_evr.h']]], + ['evrrtxeventflagsset',['EvrRtxEventFlagsSet',['../rtx__evr_8h.html#a5e5c9bd8a0522fc9301782edd6e5ec1f',1,'rtx_evr.h']]], + ['evrrtxeventflagssetdone',['EvrRtxEventFlagsSetDone',['../rtx__evr_8h.html#a5b1b471923918ad294d16255d43ab306',1,'rtx_evr.h']]], + ['evrrtxeventflagswait',['EvrRtxEventFlagsWait',['../rtx__evr_8h.html#ac8361874ffdd854e3778f21d070fed24',1,'rtx_evr.h']]], + ['evrrtxeventflagswaitcompleted',['EvrRtxEventFlagsWaitCompleted',['../rtx__evr_8h.html#a7b446f241c971db432ebac5d176bd9de',1,'rtx_evr.h']]], + ['evrrtxeventflagswaitnotcompleted',['EvrRtxEventFlagsWaitNotCompleted',['../rtx__evr_8h.html#a66f32e4dddc68cdfd56c32b88b7f13ff',1,'rtx_evr.h']]], + ['evrrtxeventflagswaitpending',['EvrRtxEventFlagsWaitPending',['../rtx__evr_8h.html#afd598e0b02a31083fb41626d68fa489e',1,'rtx_evr.h']]], + ['evrrtxeventflagswaittimeout',['EvrRtxEventFlagsWaitTimeout',['../group__rtx__evr__event__flasg.html#ga877235cbe04188b831b70a3c2237c827',1,'rtx_evr.h']]], + ['evrrtxkernelerror',['EvrRtxKernelError',['../group__rtx__evr__kernel.html#ga2a38154886e6293e127bafcfb6f7d609',1,'rtx_evr.h']]], + ['evrrtxkernelgetinfo',['EvrRtxKernelGetInfo',['../group__rtx__evr__kernel.html#ga4c2a175b79d39d70a4a5112e270d03f2',1,'rtx_evr.h']]], + ['evrrtxkernelgetstate',['EvrRtxKernelGetState',['../group__rtx__evr__kernel.html#gad6407e9ff0910629b041866bd801075a',1,'rtx_evr.h']]], + ['evrrtxkernelgetsystimercount',['EvrRtxKernelGetSysTimerCount',['../group__rtx__evr__kernel.html#gafb6530be8201b119015a3f45d66c2f09',1,'rtx_evr.h']]], + ['evrrtxkernelgetsystimerfreq',['EvrRtxKernelGetSysTimerFreq',['../group__rtx__evr__kernel.html#gaf2bdfcb7b099295c7b0123abe88e10a3',1,'rtx_evr.h']]], + ['evrrtxkernelgettickcount',['EvrRtxKernelGetTickCount',['../group__rtx__evr__kernel.html#ga64431a63437506a6f7fe22637d4891c5',1,'rtx_evr.h']]], + ['evrrtxkernelgettickfreq',['EvrRtxKernelGetTickFreq',['../group__rtx__evr__kernel.html#ga7404f3a22af84ad4091c24811fc1bf87',1,'rtx_evr.h']]], + ['evrrtxkernelinforetrieved',['EvrRtxKernelInfoRetrieved',['../group__rtx__evr__kernel.html#gaf09b8cd94ad2384e3ab518f0df94a651',1,'rtx_evr.h']]], + ['evrrtxkernelinitialize',['EvrRtxKernelInitialize',['../group__rtx__evr__kernel.html#ga7e84d337b452f647c3a3d6937abd6292',1,'rtx_evr.h']]], + ['evrrtxkernelinitialized',['EvrRtxKernelInitialized',['../group__rtx__evr__kernel.html#ga5db8d306617656bfec12638e17584d66',1,'rtx_evr.h']]], + ['evrrtxkernellock',['EvrRtxKernelLock',['../group__rtx__evr__kernel.html#ga1d0340812c29274c6150fa72288e0612',1,'rtx_evr.h']]], + ['evrrtxkernellocked',['EvrRtxKernelLocked',['../group__rtx__evr__kernel.html#gac18ea91ffcae01e893304609a3c6cdc3',1,'rtx_evr.h']]], + ['evrrtxkernellockrestored',['EvrRtxKernelLockRestored',['../group__rtx__evr__kernel.html#gaf7be1022a33c13fb44f4059f5636b75a',1,'rtx_evr.h']]], + ['evrrtxkernelrestorelock',['EvrRtxKernelRestoreLock',['../group__rtx__evr__kernel.html#ga812fdd14d6c40072cc40aec742d4869e',1,'rtx_evr.h']]], + ['evrrtxkernelresume',['EvrRtxKernelResume',['../group__rtx__evr__kernel.html#ga9a8cac0fed8d3cf06f7301c944ad26d1',1,'rtx_evr.h']]], + ['evrrtxkernelresumed',['EvrRtxKernelResumed',['../group__rtx__evr__kernel.html#ga26e0a22f49576824d853fb434cf6b079',1,'rtx_evr.h']]], + ['evrrtxkernelstart',['EvrRtxKernelStart',['../group__rtx__evr__kernel.html#ga75937a761dd488600d2525a532808d2b',1,'rtx_evr.h']]], + ['evrrtxkernelstarted',['EvrRtxKernelStarted',['../group__rtx__evr__kernel.html#ga28043ffc76fec09e6c8763a9a71b7f2a',1,'rtx_evr.h']]], + ['evrrtxkernelsuspend',['EvrRtxKernelSuspend',['../group__rtx__evr__kernel.html#gac3abd78a9d3f3a6adc698e2929e1c32c',1,'rtx_evr.h']]], + ['evrrtxkernelsuspended',['EvrRtxKernelSuspended',['../group__rtx__evr__kernel.html#gabdaa26d7774111af4913b5d6669d0f85',1,'rtx_evr.h']]], + ['evrrtxkernelunlock',['EvrRtxKernelUnlock',['../group__rtx__evr__kernel.html#gabe14acf14ed2611a3ba1f3b280fbfd8c',1,'rtx_evr.h']]], + ['evrrtxkernelunlocked',['EvrRtxKernelUnlocked',['../group__rtx__evr__kernel.html#ga5cc909465e8df09c9231782e0c45e374',1,'rtx_evr.h']]], + ['evrrtxmemoryalloc',['EvrRtxMemoryAlloc',['../group__rtx__evr__memory.html#gae1818917a5e085f92a03039ffaf2bad4',1,'rtx_evr.h']]], + ['evrrtxmemoryblockalloc',['EvrRtxMemoryBlockAlloc',['../group__rtx__evr__memory.html#ga71c0df6f932436b54d7d641a440586db',1,'rtx_evr.h']]], + ['evrrtxmemoryblockfree',['EvrRtxMemoryBlockFree',['../group__rtx__evr__memory.html#ga69c2139620def7c5e59f6b1249857949',1,'rtx_evr.h']]], + ['evrrtxmemoryblockinit',['EvrRtxMemoryBlockInit',['../group__rtx__evr__memory.html#gac71421bbf537f2f8c9255f9f51cf7d54',1,'rtx_evr.h']]], + ['evrrtxmemoryfree',['EvrRtxMemoryFree',['../group__rtx__evr__memory.html#ga9227b18f5ea44d7caa8fadd4d539af9c',1,'rtx_evr.h']]], + ['evrrtxmemoryinit',['EvrRtxMemoryInit',['../group__rtx__evr__memory.html#ga15078f1251744140d90761e05c0fe1f2',1,'rtx_evr.h']]], + ['evrrtxmemorypoolalloc',['EvrRtxMemoryPoolAlloc',['../group__rtx__evr__memory__pool.html#ga425c8a0e13c6fb13262d99a4dcabd507',1,'rtx_evr.h']]], + ['evrrtxmemorypoolallocated',['EvrRtxMemoryPoolAllocated',['../group__rtx__evr__memory__pool.html#gad05246ee7e1f95e7f9496716515daeed',1,'rtx_evr.h']]], + ['evrrtxmemorypoolallocfailed',['EvrRtxMemoryPoolAllocFailed',['../group__rtx__evr__memory__pool.html#gaf511fce5389dde6fd3277e3469c72fd9',1,'rtx_evr.h']]], + ['evrrtxmemorypoolallocpending',['EvrRtxMemoryPoolAllocPending',['../group__rtx__evr__memory__pool.html#ga2fbd33e3d84b4f37e9f9b80576b26907',1,'rtx_evr.h']]], + ['evrrtxmemorypoolalloctimeout',['EvrRtxMemoryPoolAllocTimeout',['../group__rtx__evr__memory__pool.html#ga0e144530d45959126018ad74bae7a6ed',1,'rtx_evr.h']]], + ['evrrtxmemorypoolcreated',['EvrRtxMemoryPoolCreated',['../group__rtx__evr__memory__pool.html#gadad71c7b04493c03647ca0929ea087b1',1,'rtx_evr.h']]], + ['evrrtxmemorypooldeallocated',['EvrRtxMemoryPoolDeallocated',['../group__rtx__evr__memory__pool.html#ga3e8e700baea20b88c3d13678fe7a7fb4',1,'rtx_evr.h']]], + ['evrrtxmemorypooldelete',['EvrRtxMemoryPoolDelete',['../group__rtx__evr__memory__pool.html#ga64ae703ad556f25b105e3eae85b582b8',1,'rtx_evr.h']]], + ['evrrtxmemorypooldestroyed',['EvrRtxMemoryPoolDestroyed',['../group__rtx__evr__memory__pool.html#ga853e1867a4b65aff3f12f7be1aee5ce4',1,'rtx_evr.h']]], + ['evrrtxmemorypoolerror',['EvrRtxMemoryPoolError',['../group__rtx__evr__memory__pool.html#ga7e1a37b0c5dd0a97507c025ab1a62ec8',1,'rtx_evr.h']]], + ['evrrtxmemorypoolfree',['EvrRtxMemoryPoolFree',['../group__rtx__evr__memory__pool.html#ga46bc3ef3b1ca2e4cfb914f58d0efe92e',1,'rtx_evr.h']]], + ['evrrtxmemorypoolfreefailed',['EvrRtxMemoryPoolFreeFailed',['../group__rtx__evr__memory__pool.html#gad75c377c00ae23caf7b4c3b77a0b46d1',1,'rtx_evr.h']]], + ['evrrtxmemorypoolgetblocksize',['EvrRtxMemoryPoolGetBlockSize',['../group__rtx__evr__memory__pool.html#gaf79f0e1eb41d42566ba9023be7e442c5',1,'rtx_evr.h']]], + ['evrrtxmemorypoolgetcapacity',['EvrRtxMemoryPoolGetCapacity',['../group__rtx__evr__memory__pool.html#gaed36f26a548d40e2a3d5b81c8695f287',1,'rtx_evr.h']]], + ['evrrtxmemorypoolgetcount',['EvrRtxMemoryPoolGetCount',['../group__rtx__evr__memory__pool.html#ga668bc3e627d9b74b6e8259a667e05846',1,'rtx_evr.h']]], + ['evrrtxmemorypoolgetname',['EvrRtxMemoryPoolGetName',['../group__rtx__evr__memory__pool.html#gaeface1ee4957cdb59292e13c38a672d7',1,'rtx_evr.h']]], + ['evrrtxmemorypoolgetspace',['EvrRtxMemoryPoolGetSpace',['../group__rtx__evr__memory__pool.html#ga4bee4e3e41bdef94046dc059f16ca7ce',1,'rtx_evr.h']]], + ['evrrtxmemorypoolnew',['EvrRtxMemoryPoolNew',['../group__rtx__evr__memory__pool.html#gaf2fd4c91acf1379e93cd9886c515b9c5',1,'rtx_evr.h']]], + ['evrrtxmessagequeuecreated',['EvrRtxMessageQueueCreated',['../group__rtx__evr__message__queue.html#ga36d6982377c1f54a227ba6fbb9458b79',1,'rtx_evr.h']]], + ['evrrtxmessagequeuedelete',['EvrRtxMessageQueueDelete',['../group__rtx__evr__message__queue.html#gad11606ef82f5b82f291bf64adfc805e4',1,'rtx_evr.h']]], + ['evrrtxmessagequeuedestroyed',['EvrRtxMessageQueueDestroyed',['../group__rtx__evr__message__queue.html#ga3bbf02128c31e5cc7ef4c78cdbec508c',1,'rtx_evr.h']]], + ['evrrtxmessagequeueerror',['EvrRtxMessageQueueError',['../group__rtx__evr__message__queue.html#ga8ded1d43703e0885a81e65251c6df405',1,'rtx_evr.h']]], + ['evrrtxmessagequeueget',['EvrRtxMessageQueueGet',['../group__rtx__evr__message__queue.html#ga0826c1d05d3a99afb8682f0ca3f7fd62',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetcapacity',['EvrRtxMessageQueueGetCapacity',['../group__rtx__evr__message__queue.html#gad423a0be13d65e98d9ae08de9c399615',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetcount',['EvrRtxMessageQueueGetCount',['../group__rtx__evr__message__queue.html#ga145f0c464382dc71ff3b1c624b8bd570',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetmsgsize',['EvrRtxMessageQueueGetMsgSize',['../group__rtx__evr__message__queue.html#ga3d6348bed3937de29765ed4d7d07fac8',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetname',['EvrRtxMessageQueueGetName',['../group__rtx__evr__message__queue.html#gad0ef8ee59d2ec189351c5884f5f8e945',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetpending',['EvrRtxMessageQueueGetPending',['../group__rtx__evr__message__queue.html#ga11e3df32a66d5240b277375cbb5d3c83',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetspace',['EvrRtxMessageQueueGetSpace',['../group__rtx__evr__message__queue.html#ga6cfce7336f58505a2379a8a71f477d2f',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegettimeout',['EvrRtxMessageQueueGetTimeout',['../group__rtx__evr__message__queue.html#ga5e699de7401c46fd0e8bc19e398dc5a8',1,'rtx_evr.h']]], + ['evrrtxmessagequeueinserted',['EvrRtxMessageQueueInserted',['../group__rtx__evr__message__queue.html#gaa30c5b375d4050ad7d99ba094821bf52',1,'rtx_evr.h']]], + ['evrrtxmessagequeueinsertpending',['EvrRtxMessageQueueInsertPending',['../group__rtx__evr__message__queue.html#ga8440223b9d48145df5505489e7c6f7d9',1,'rtx_evr.h']]], + ['evrrtxmessagequeuenew',['EvrRtxMessageQueueNew',['../group__rtx__evr__message__queue.html#gaa7b18f18f3f53d6afb39ac1abe257000',1,'rtx_evr.h']]], + ['evrrtxmessagequeuenotinserted',['EvrRtxMessageQueueNotInserted',['../group__rtx__evr__message__queue.html#ga2922125d8ac63fd800dc3b7888fd3f3c',1,'rtx_evr.h']]], + ['evrrtxmessagequeuenotretrieved',['EvrRtxMessageQueueNotRetrieved',['../group__rtx__evr__message__queue.html#ga22bfb7d1c2f6e3e9fea9d3267b2d6988',1,'rtx_evr.h']]], + ['evrrtxmessagequeueput',['EvrRtxMessageQueuePut',['../group__rtx__evr__message__queue.html#ga401536a603e5a805cc6089b4de11d3d3',1,'rtx_evr.h']]], + ['evrrtxmessagequeueputpending',['EvrRtxMessageQueuePutPending',['../group__rtx__evr__message__queue.html#ga4b1b6191c6ca87dff4714e25b5845828',1,'rtx_evr.h']]], + ['evrrtxmessagequeueputtimeout',['EvrRtxMessageQueuePutTimeout',['../group__rtx__evr__message__queue.html#ga7394ca2d88255470f7ba0bb2bff12e99',1,'rtx_evr.h']]], + ['evrrtxmessagequeuereset',['EvrRtxMessageQueueReset',['../group__rtx__evr__message__queue.html#ga91b8c8630c7d89b6b6dbb74d4fc81ba4',1,'rtx_evr.h']]], + ['evrrtxmessagequeueresetdone',['EvrRtxMessageQueueResetDone',['../group__rtx__evr__message__queue.html#ga3947d4a7ac86ee7a50052c9eb4cd5432',1,'rtx_evr.h']]], + ['evrrtxmessagequeueretrieved',['EvrRtxMessageQueueRetrieved',['../group__rtx__evr__message__queue.html#gab340b38df5d8bf2a1182fd18f2d3a6c4',1,'rtx_evr.h']]], + ['evrrtxmutexacquire',['EvrRtxMutexAcquire',['../group__rtx__evr__mutex.html#ga913c46223d91000fedab624d0f4e53f8',1,'rtx_evr.h']]], + ['evrrtxmutexacquired',['EvrRtxMutexAcquired',['../group__rtx__evr__mutex.html#ga697ec95e014a30a3676690a8d217f546',1,'rtx_evr.h']]], + ['evrrtxmutexacquirepending',['EvrRtxMutexAcquirePending',['../group__rtx__evr__mutex.html#gaddc9bb3c619b92a786ee5255ec65eaca',1,'rtx_evr.h']]], + ['evrrtxmutexacquiretimeout',['EvrRtxMutexAcquireTimeout',['../group__rtx__evr__mutex.html#ga4c4780cf766e9d2c6e8c26f206fba607',1,'rtx_evr.h']]], + ['evrrtxmutexcreated',['EvrRtxMutexCreated',['../group__rtx__evr__mutex.html#ga712b32609cfb3ceded746ee6a86d2442',1,'rtx_evr.h']]], + ['evrrtxmutexdelete',['EvrRtxMutexDelete',['../group__rtx__evr__mutex.html#gaaadf1b9cf9a62f4e61742069b95daf68',1,'rtx_evr.h']]], + ['evrrtxmutexdestroyed',['EvrRtxMutexDestroyed',['../group__rtx__evr__mutex.html#gaa3feba455090d50295cbf4b1447f3f87',1,'rtx_evr.h']]], + ['evrrtxmutexerror',['EvrRtxMutexError',['../group__rtx__evr__mutex.html#ga47388f06c025938facfddd95851d666f',1,'rtx_evr.h']]], + ['evrrtxmutexgetname',['EvrRtxMutexGetName',['../group__rtx__evr__mutex.html#ga457302507cedf0ea969cbb110af606b8',1,'rtx_evr.h']]], + ['evrrtxmutexgetowner',['EvrRtxMutexGetOwner',['../group__rtx__evr__mutex.html#ga89284c1927aa646535ff804f1aeda720',1,'rtx_evr.h']]], + ['evrrtxmutexnew',['EvrRtxMutexNew',['../group__rtx__evr__mutex.html#ga51f59bf99b315f016ca752eddd1911d5',1,'rtx_evr.h']]], + ['evrrtxmutexnotacquired',['EvrRtxMutexNotAcquired',['../group__rtx__evr__mutex.html#ga5d2b957c02fcdcc0617479b93a56f6af',1,'rtx_evr.h']]], + ['evrrtxmutexrelease',['EvrRtxMutexRelease',['../group__rtx__evr__mutex.html#ga3fe98bfc9cbea52f578aa5a202305442',1,'rtx_evr.h']]], + ['evrrtxmutexreleased',['EvrRtxMutexReleased',['../group__rtx__evr__mutex.html#ga561c8898b912ea8eace4e6ba606210e5',1,'rtx_evr.h']]], + ['evrrtxsemaphoreacquire',['EvrRtxSemaphoreAcquire',['../group__rtx__evr__semaphore.html#gafd91c9bb268a48b394571a9fc1809019',1,'rtx_evr.h']]], + ['evrrtxsemaphoreacquired',['EvrRtxSemaphoreAcquired',['../group__rtx__evr__semaphore.html#ga4d1f85595cc0802cf8cac89fd8f88b5d',1,'rtx_evr.h']]], + ['evrrtxsemaphoreacquirepending',['EvrRtxSemaphoreAcquirePending',['../group__rtx__evr__semaphore.html#gabbaaf85deaf4645414987fc1c3289343',1,'rtx_evr.h']]], + ['evrrtxsemaphoreacquiretimeout',['EvrRtxSemaphoreAcquireTimeout',['../group__rtx__evr__semaphore.html#ga852798d5e14cda14484564ac4d7f5a4b',1,'rtx_evr.h']]], + ['evrrtxsemaphorecreated',['EvrRtxSemaphoreCreated',['../group__rtx__evr__semaphore.html#ga31f9d55abcc5f398ea3810177cbf2bf3',1,'rtx_evr.h']]], + ['evrrtxsemaphoredelete',['EvrRtxSemaphoreDelete',['../group__rtx__evr__semaphore.html#gaeb0605679ad9f686dd0f40610c8af772',1,'rtx_evr.h']]], + ['evrrtxsemaphoredestroyed',['EvrRtxSemaphoreDestroyed',['../group__rtx__evr__semaphore.html#gaad8d8a2844e948b00f02e8620c431c9c',1,'rtx_evr.h']]], + ['evrrtxsemaphoreerror',['EvrRtxSemaphoreError',['../group__rtx__evr__semaphore.html#ga96a0209384296a283c7b1d23a3395fa1',1,'rtx_evr.h']]], + ['evrrtxsemaphoregetcount',['EvrRtxSemaphoreGetCount',['../group__rtx__evr__semaphore.html#ga17f21ffa4ec39c50ce203e6985dd0deb',1,'rtx_evr.h']]], + ['evrrtxsemaphoregetname',['EvrRtxSemaphoreGetName',['../group__rtx__evr__semaphore.html#ga17d8aa861b6e669cc68c3c41e3e12332',1,'rtx_evr.h']]], + ['evrrtxsemaphorenew',['EvrRtxSemaphoreNew',['../group__rtx__evr__semaphore.html#ga5639f03e935ab79844777664a518c2ec',1,'rtx_evr.h']]], + ['evrrtxsemaphorenotacquired',['EvrRtxSemaphoreNotAcquired',['../group__rtx__evr__semaphore.html#ga53eb40f5251e9464b46cc153fe8b26d8',1,'rtx_evr.h']]], + ['evrrtxsemaphorerelease',['EvrRtxSemaphoreRelease',['../group__rtx__evr__semaphore.html#ga0a9f3c7dbf89d3f155a96524e7195630',1,'rtx_evr.h']]], + ['evrrtxsemaphorereleased',['EvrRtxSemaphoreReleased',['../group__rtx__evr__semaphore.html#ga814dc5c7d95e7d1bfb30ce0f472ae420',1,'rtx_evr.h']]], + ['evrrtxthreadblocked',['EvrRtxThreadBlocked',['../group__rtx__evr__thread.html#gab9efd66ed2edb439c5081806c9b63cf9',1,'rtx_evr.h']]], + ['evrrtxthreadcreated',['EvrRtxThreadCreated',['../group__rtx__evr__thread.html#ga5bfa3bc241aea59ebe9bc1edcf6b78d8',1,'rtx_evr.h']]], + ['evrrtxthreaddelay',['EvrRtxThreadDelay',['../group__rtx__evr__thread.html#gadd45d32305aa45668a36f2c9f0f4c758',1,'rtx_evr.h']]], + ['evrrtxthreaddelaycompleted',['EvrRtxThreadDelayCompleted',['../group__rtx__evr__thread.html#gab46562848142ce5ea806d629fd000168',1,'rtx_evr.h']]], + ['evrrtxthreaddelayuntil',['EvrRtxThreadDelayUntil',['../group__rtx__evr__thread.html#gaf59defd6c171d2c3d3508e7136278db2',1,'rtx_evr.h']]], + ['evrrtxthreaddestroyed',['EvrRtxThreadDestroyed',['../group__rtx__evr__thread.html#gaa5aa707fc2d6b44bfcb86bce2e2e90f3',1,'rtx_evr.h']]], + ['evrrtxthreaddetach',['EvrRtxThreadDetach',['../group__rtx__evr__thread.html#ga02088c2d38cbc31a46675334f63f37f5',1,'rtx_evr.h']]], + ['evrrtxthreaddetached',['EvrRtxThreadDetached',['../group__rtx__evr__thread.html#gac60670562ed1efbfbc61036d881c8af9',1,'rtx_evr.h']]], + ['evrrtxthreadenumerate',['EvrRtxThreadEnumerate',['../group__rtx__evr__thread.html#ga1999d77992b03347abdca7ec17f91cca',1,'rtx_evr.h']]], + ['evrrtxthreaderror',['EvrRtxThreadError',['../group__rtx__evr__thread.html#ga4a2879b06201a29d8c223253d41cca43',1,'rtx_evr.h']]], + ['evrrtxthreadexit',['EvrRtxThreadExit',['../group__rtx__evr__thread.html#gaa557f9732a8a2120f08cfb2694aa26fb',1,'rtx_evr.h']]], + ['evrrtxthreadflagsclear',['EvrRtxThreadFlagsClear',['../rtx__evr_8h.html#ac8ddc747c72f7fc5cfa58edcee56b82d',1,'rtx_evr.h']]], + ['evrrtxthreadflagscleardone',['EvrRtxThreadFlagsClearDone',['../rtx__evr_8h.html#aad13b17507cc07a4a1e37a5653489943',1,'rtx_evr.h']]], + ['evrrtxthreadflagsget',['EvrRtxThreadFlagsGet',['../rtx__evr_8h.html#aab1a30a0ac3dfa588ededbfad52bae30',1,'rtx_evr.h']]], + ['evrrtxthreadflagsset',['EvrRtxThreadFlagsSet',['../rtx__evr_8h.html#ac356c777af86c2d8d9250cbffc516e1d',1,'rtx_evr.h']]], + ['evrrtxthreadflagssetdone',['EvrRtxThreadFlagsSetDone',['../rtx__evr_8h.html#abd447773c02e235a8d0bb96dd9bb1c4f',1,'rtx_evr.h']]], + ['evrrtxthreadflagswait',['EvrRtxThreadFlagsWait',['../rtx__evr_8h.html#aad860c571b9b083ff2889fb76fb619f1',1,'rtx_evr.h']]], + ['evrrtxthreadflagswaitcompleted',['EvrRtxThreadFlagsWaitCompleted',['../rtx__evr_8h.html#a01396074495b21270c75185f63c497d7',1,'rtx_evr.h']]], + ['evrrtxthreadflagswaitnotcompleted',['EvrRtxThreadFlagsWaitNotCompleted',['../rtx__evr_8h.html#adf6b9f4882f62a65b4e06e1b3e5c9c5b',1,'rtx_evr.h']]], + ['evrrtxthreadflagswaitpending',['EvrRtxThreadFlagsWaitPending',['../rtx__evr_8h.html#ad09ec9317a4440e5228870b750e9860e',1,'rtx_evr.h']]], + ['evrrtxthreadflagswaittimeout',['EvrRtxThreadFlagsWaitTimeout',['../group__rtx__evr__thread.html#gadbbee398f4fab418c9b8115fc7392ff8',1,'rtx_evr.h']]], + ['evrrtxthreadgetcount',['EvrRtxThreadGetCount',['../group__rtx__evr__thread.html#ga6d5932965736e0f2f35fe2d87bd622e7',1,'rtx_evr.h']]], + ['evrrtxthreadgetid',['EvrRtxThreadGetId',['../group__rtx__evr__thread.html#ga40c0d21a5c0d128f09966aeeca37ecba',1,'rtx_evr.h']]], + ['evrrtxthreadgetname',['EvrRtxThreadGetName',['../group__rtx__evr__thread.html#ga4f849a33d2c95754b11a499d77503b5c',1,'rtx_evr.h']]], + ['evrrtxthreadgetpriority',['EvrRtxThreadGetPriority',['../group__rtx__evr__thread.html#gada73306deca99987b104aa9840fdd4e2',1,'rtx_evr.h']]], + ['evrrtxthreadgetstacksize',['EvrRtxThreadGetStackSize',['../group__rtx__evr__thread.html#ga1200f51e9152810e76386e241904427c',1,'rtx_evr.h']]], + ['evrrtxthreadgetstackspace',['EvrRtxThreadGetStackSpace',['../group__rtx__evr__thread.html#ga4fd48ef48eefb01a6252cfc02ea169ab',1,'rtx_evr.h']]], + ['evrrtxthreadgetstate',['EvrRtxThreadGetState',['../group__rtx__evr__thread.html#ga1c3120fb155ca19ea5c9089a446ef19d',1,'rtx_evr.h']]], + ['evrrtxthreadjoin',['EvrRtxThreadJoin',['../group__rtx__evr__thread.html#ga392bb7a8dcd6d126a5e424ab01aa8a80',1,'rtx_evr.h']]], + ['evrrtxthreadjoined',['EvrRtxThreadJoined',['../group__rtx__evr__thread.html#ga86ac910ac88d8fe54206a12d7ed69a27',1,'rtx_evr.h']]], + ['evrrtxthreadjoinpending',['EvrRtxThreadJoinPending',['../group__rtx__evr__thread.html#ga47b64cfdc5c5410dde2c5d9145c7d79b',1,'rtx_evr.h']]], + ['evrrtxthreadnew',['EvrRtxThreadNew',['../group__rtx__evr__thread.html#ga396ce41f68401a885f0ae46a54e8dd1f',1,'rtx_evr.h']]], + ['evrrtxthreadpreempted',['EvrRtxThreadPreempted',['../group__rtx__evr__thread.html#gabe470d5bb1373c59c51470fd20b55bcb',1,'rtx_evr.h']]], + ['evrrtxthreadresume',['EvrRtxThreadResume',['../group__rtx__evr__thread.html#gaf41ff549329cf2feb4a1efe49c518e30',1,'rtx_evr.h']]], + ['evrrtxthreadresumed',['EvrRtxThreadResumed',['../group__rtx__evr__thread.html#ga8b25f2548a9f3c069431131169d170ac',1,'rtx_evr.h']]], + ['evrrtxthreadsetpriority',['EvrRtxThreadSetPriority',['../group__rtx__evr__thread.html#gabf4a015bd3fb2a33c0d105a871aaba72',1,'rtx_evr.h']]], + ['evrrtxthreadsuspend',['EvrRtxThreadSuspend',['../group__rtx__evr__thread.html#gaa268fe19f933b8d2a830063560694561',1,'rtx_evr.h']]], + ['evrrtxthreadsuspended',['EvrRtxThreadSuspended',['../group__rtx__evr__thread.html#gab0d959bc625cb3e7ddd6bf7c302f631e',1,'rtx_evr.h']]], + ['evrrtxthreadswitched',['EvrRtxThreadSwitched',['../group__rtx__evr__thread.html#gae3bc50d5f154463c7f6647544bb5ecab',1,'rtx_evr.h']]], + ['evrrtxthreadterminate',['EvrRtxThreadTerminate',['../group__rtx__evr__thread.html#ga6abe7d167bd5bb91c3d6bf6d2bb417aa',1,'rtx_evr.h']]], + ['evrrtxthreadunblocked',['EvrRtxThreadUnblocked',['../group__rtx__evr__thread.html#ga3faae4d941ddecfe773ef9f3efe8b901',1,'rtx_evr.h']]], + ['evrrtxthreadyield',['EvrRtxThreadYield',['../group__rtx__evr__thread.html#gafed41f1b6bcdde658ca306f8a6d7ac7e',1,'rtx_evr.h']]], + ['evrrtxtimercallback',['EvrRtxTimerCallback',['../group__rtx__evr__timer.html#gacd46f9d31d256c27c72e47d5be5e9d09',1,'rtx_evr.h']]], + ['evrrtxtimercreated',['EvrRtxTimerCreated',['../group__rtx__evr__timer.html#ga71dd40a818f1098052915bbfb6c17e88',1,'rtx_evr.h']]], + ['evrrtxtimerdelete',['EvrRtxTimerDelete',['../group__rtx__evr__timer.html#gaea5811cc74861117eccbcbb997d36133',1,'rtx_evr.h']]], + ['evrrtxtimerdestroyed',['EvrRtxTimerDestroyed',['../group__rtx__evr__timer.html#ga474f3bd3ed38945b087f37fd709560b7',1,'rtx_evr.h']]], + ['evrrtxtimererror',['EvrRtxTimerError',['../group__rtx__evr__timer.html#gaf1b516bf697288e67fe797662b1873b0',1,'rtx_evr.h']]], + ['evrrtxtimergetname',['EvrRtxTimerGetName',['../group__rtx__evr__timer.html#ga601e3617903900524062c4f9069d052f',1,'rtx_evr.h']]], + ['evrrtxtimerisrunning',['EvrRtxTimerIsRunning',['../group__rtx__evr__timer.html#ga6fa5a23f241d765ae22ff1862c6f3b3f',1,'rtx_evr.h']]], + ['evrrtxtimernew',['EvrRtxTimerNew',['../group__rtx__evr__timer.html#ga6387808c22d6e186057ed744618d2487',1,'rtx_evr.h']]], + ['evrrtxtimerstart',['EvrRtxTimerStart',['../group__rtx__evr__timer.html#ga453d82bfa65dfbbaffbd5b4ff4f050b2',1,'rtx_evr.h']]], + ['evrrtxtimerstarted',['EvrRtxTimerStarted',['../group__rtx__evr__timer.html#gab0dbdf460fc26b25f3987c44fb0ebdeb',1,'rtx_evr.h']]], + ['evrrtxtimerstop',['EvrRtxTimerStop',['../group__rtx__evr__timer.html#ga27cf05adc61d30a0e68f380c96ea5f93',1,'rtx_evr.h']]], + ['evrrtxtimerstopped',['EvrRtxTimerStopped',['../group__rtx__evr__timer.html#gaccd59c7ae2351e0a1bf96cdb749c049f',1,'rtx_evr.h']]], + ['event_20functions',['Event functions',['../group__rtx__evr.html',1,'']]], + ['event_20flags_20functions',['Event Flags Functions',['../group__rtx__evr__event__flasg.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/all_6.html b/docs/RTOS2/html/search/all_6.html new file mode 100644 index 0000000..6133ab3 --- /dev/null +++ b/docs/RTOS2/html/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_6.js b/docs/RTOS2/html/search/all_6.js new file mode 100644 index 0000000..452ae44 --- /dev/null +++ b/docs/RTOS2/html/search/all_6.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['finfo',['finfo',['../rtx__os_8h.html#ab415a6615c5ddf5365ed86e58a1e1809',1,'osRtxTimer_t']]], + ['flags',['flags',['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxThread_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxTimer_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxEventFlags_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxMutex_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxSemaphore_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxMemoryPool_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxMessage_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxMessageQueue_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxObject_t::flags()'],['../rtx__os_8h.html#a773b39d480759f67926cb18ae2219281',1,'osRtxConfig_t::flags()']]], + ['flags_20functions_20error_20codes',['Flags Functions Error Codes',['../group__flags__error__codes.html',1,'']]], + ['flags_5foptions',['flags_options',['../rtx__os_8h.html#a87c898585d0aeffdcf67c9e1b3befefe',1,'osRtxThread_t']]], + ['func',['func',['../rtx__os_8h.html#aaf8577e5ddcbff356a1d27310baa8a1f',1,'osRtxTimerFinfo_t']]], + ['function_20overview',['Function Overview',['../functionOverview.html',1,'index']]], + ['functions',['Functions',['../group__rtx5__specific__functions.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/all_7.html b/docs/RTOS2/html/search/all_7.html new file mode 100644 index 0000000..5748125 --- /dev/null +++ b/docs/RTOS2/html/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_7.js b/docs/RTOS2/html/search/all_7.js new file mode 100644 index 0000000..2556a86 --- /dev/null +++ b/docs/RTOS2/html/search/all_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['generic_20wait_20functions',['Generic Wait Functions',['../group__CMSIS__RTOS__Wait.html',1,'']]], + ['generic_20rtos_20interface',['Generic RTOS Interface',['../genRTOS2IF.html',1,'index']]] +]; diff --git a/docs/RTOS2/html/search/all_8.html b/docs/RTOS2/html/search/all_8.html new file mode 100644 index 0000000..0179bdd --- /dev/null +++ b/docs/RTOS2/html/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_8.js b/docs/RTOS2/html/search/all_8.js new file mode 100644 index 0000000..3d78d75 --- /dev/null +++ b/docs/RTOS2/html/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['history_2etxt',['history.txt',['../history_8txt.html',1,'']]], + ['hardware_20requirements',['Hardware Requirements',['../pHardwareRequirements.html',1,'technicalData5']]] +]; diff --git a/docs/RTOS2/html/search/all_9.html b/docs/RTOS2/html/search/all_9.html new file mode 100644 index 0000000..cd46d44 --- /dev/null +++ b/docs/RTOS2/html/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_9.js b/docs/RTOS2/html/search/all_9.js new file mode 100644 index 0000000..9d22c06 --- /dev/null +++ b/docs/RTOS2/html/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['id',['id',['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxThread_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxTimer_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxEventFlags_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxMutex_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxSemaphore_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxMemoryPool_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxMessage_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxMessageQueue_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxObject_t::id()']]], + ['idle_5fthread_5fattr',['idle_thread_attr',['../rtx__os_8h.html#a694e5f79185db270e087e94719177ca0',1,'osRtxConfig_t']]], + ['irqhandler_5ft',['IRQHANDLER_T',['../os__tick_8h.html#aed032df21f11e8715f5c4deeeb56cc36',1,'IRQHANDLER_T(): os_tick.h'],['../os__tick_8h.html#afbfa2180a9b6208f34891d539e9e2d52',1,'IRQHandler_t(): os_tick.h']]], + ['isr_5fqueue',['isr_queue',['../rtx__os_8h.html#a534f37c2b021c8242492bedfe48b0338',1,'osRtxInfo_t::isr_queue()'],['../rtx__os_8h.html#a0354dd9f726694843f2a01df98c5641c',1,'osRtxConfig_t::isr_queue()']]] +]; diff --git a/docs/RTOS2/html/search/all_a.html b/docs/RTOS2/html/search/all_a.html new file mode 100644 index 0000000..eab6553 --- /dev/null +++ b/docs/RTOS2/html/search/all_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_a.js b/docs/RTOS2/html/search/all_a.js new file mode 100644 index 0000000..d5d4087 --- /dev/null +++ b/docs/RTOS2/html/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['kernel_20information_20and_20control',['Kernel Information and Control',['../group__CMSIS__RTOS__KernelCtrl.html',1,'']]], + ['kernel',['kernel',['../group__CMSIS__RTOS__KernelCtrl.html#ad8075d3f42141346ae2c56389358f9e7',1,'osVersion_t::kernel()'],['../rtx__os_8h.html#a72d4e2550fcee67cc139fca04505a903',1,'osRtxInfo_t::kernel()']]], + ['kernel_20functions',['Kernel Functions',['../group__rtx__evr__kernel.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/all_b.html b/docs/RTOS2/html/search/all_b.html new file mode 100644 index 0000000..a2c161e --- /dev/null +++ b/docs/RTOS2/html/search/all_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_b.js b/docs/RTOS2/html/search/all_b.js new file mode 100644 index 0000000..90ce3a0 --- /dev/null +++ b/docs/RTOS2/html/search/all_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['load',['load',['../rtx__os_8h.html#aee4a6239f04d660fc90663dd6b39ca95',1,'osRtxTimer_t']]], + ['lock',['lock',['../rtx__os_8h.html#a92435efb84d6814afd444fd462802e9c',1,'osRtxMutex_t']]] +]; diff --git a/docs/RTOS2/html/search/all_c.html b/docs/RTOS2/html/search/all_c.html new file mode 100644 index 0000000..bdd3ee2 --- /dev/null +++ b/docs/RTOS2/html/search/all_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_c.js b/docs/RTOS2/html/search/all_c.js new file mode 100644 index 0000000..ef5160e --- /dev/null +++ b/docs/RTOS2/html/search/all_c.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['memory_20management',['Memory Management',['../group__CMSIS__RTOS__MemoryMgmt.html',1,'']]], + ['message_20queue',['Message Queue',['../group__CMSIS__RTOS__Message.html',1,'']]], + ['mutex_20management',['Mutex Management',['../group__CMSIS__RTOS__MutexMgmt.html',1,'']]], + ['memory_20pool',['Memory Pool',['../group__CMSIS__RTOS__PoolMgmt.html',1,'']]], + ['mainpage_2etxt',['mainpage.txt',['../mainpage_8txt.html',1,'']]], + ['max_5fblocks',['max_blocks',['../rtx__os_8h.html#addc777bf5285ab03de6787385e6ea053',1,'osRtxMpInfo_t']]], + ['max_5ftokens',['max_tokens',['../rtx__os_8h.html#aa793f0e9a46e8b59b6d351535ee18a7d',1,'osRtxSemaphore_t']]], + ['max_5fused',['max_used',['../rtx__os_8h.html#a81baadf3fdf0eeff338f997ca3fe5009',1,'osRtxObjectMemUsage_t']]], + ['mem',['mem',['../rtx__os_8h.html#a42d7108f7184dcb944cdf73f649ad2dd',1,'osRtxInfo_t::mem()'],['../rtx__os_8h.html#aa30bb7d2484db1812c1aaf77a23cd11e',1,'osRtxConfig_t::mem()']]], + ['misra_20c_3a2012_20compliance',['MISRA C:2012 Compliance',['../misraCompliance5.html',1,'rtx5_impl']]], + ['mp_5finfo',['mp_info',['../rtx__os_8h.html#ac1cf67a8631962a42fa2da46f20a1a39',1,'osRtxMemoryPool_t::mp_info()'],['../rtx__os_8h.html#ac1cf67a8631962a42fa2da46f20a1a39',1,'osRtxMessageQueue_t::mp_info()']]], + ['mp_5fmem',['mp_mem',['../group__CMSIS__RTOS__PoolMgmt.html#a5799465cca9c71c5587ceb0986f5b06a',1,'osMemoryPoolAttr_t']]], + ['mp_5fsize',['mp_size',['../group__CMSIS__RTOS__PoolMgmt.html#a66c26015c0ac8e88a4ad907c120aee4f',1,'osMemoryPoolAttr_t']]], + ['mpi',['mpi',['../rtx__os_8h.html#a13aeb46a18b12ae911abead8e497ffd3',1,'osRtxInfo_t::mpi()'],['../rtx__os_8h.html#ac013bca5f28bebf36a3372da78107e97',1,'osRtxConfig_t::mpi()']]], + ['mq_5fmem',['mq_mem',['../group__CMSIS__RTOS__Message.html#a4e208dc0fb049b42c4b90cbd2791c5ad',1,'osMessageQueueAttr_t']]], + ['mq_5fsize',['mq_size',['../group__CMSIS__RTOS__Message.html#ac1cc09f875e20c926920b57bb83c70ee',1,'osMessageQueueAttr_t']]], + ['msg_5fcount',['msg_count',['../rtx__os_8h.html#a6a019648a53352a413ea79b958a362cd',1,'osRtxMessageQueue_t']]], + ['msg_5ffirst',['msg_first',['../rtx__os_8h.html#a13c143cc2f25a550fc3eb7ae68b0c56d',1,'osRtxMessageQueue_t']]], + ['msg_5flast',['msg_last',['../rtx__os_8h.html#ab386d4a98974f52ca151426c4dde0da4',1,'osRtxMessageQueue_t']]], + ['msg_5fsize',['msg_size',['../rtx__os_8h.html#a58873af81b75772a41aa5c1ff788a0c2',1,'osRtxMessageQueue_t']]], + ['mutex_5flist',['mutex_list',['../rtx__os_8h.html#a70b3153655adaf42687fe250983f6c95',1,'osRtxThread_t']]], + ['migration_20from_20api_20v1_20to_20api_20v2',['Migration from API v1 to API v2',['../os2Migration.html',1,'index']]], + ['macros',['Macros',['../group__rtx5__specific__defines.html',1,'']]], + ['memory_20functions',['Memory Functions',['../group__rtx__evr__memory.html',1,'']]], + ['memory_20pool_20functions',['Memory Pool Functions',['../group__rtx__evr__memory__pool.html',1,'']]], + ['message_20queue_20functions',['Message Queue Functions',['../group__rtx__evr__message__queue.html',1,'']]], + ['mutex_20functions',['Mutex Functions',['../group__rtx__evr__mutex.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/all_d.html b/docs/RTOS2/html/search/all_d.html new file mode 100644 index 0000000..d510933 --- /dev/null +++ b/docs/RTOS2/html/search/all_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_d.js b/docs/RTOS2/html/search/all_d.js new file mode 100644 index 0000000..44cd77b --- /dev/null +++ b/docs/RTOS2/html/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['name',['name',['../group__CMSIS__RTOS__ThreadMgmt.html#ab74e6bf80237ddc4109968cedc58c151',1,'osThreadAttr_t::name()'],['../group__CMSIS__RTOS__TimerMgmt.html#ab74e6bf80237ddc4109968cedc58c151',1,'osTimerAttr_t::name()'],['../group__CMSIS__RTOS__EventFlags.html#ab74e6bf80237ddc4109968cedc58c151',1,'osEventFlagsAttr_t::name()'],['../group__CMSIS__RTOS__MutexMgmt.html#ab74e6bf80237ddc4109968cedc58c151',1,'osMutexAttr_t::name()'],['../group__CMSIS__RTOS__SemaphoreMgmt.html#ab74e6bf80237ddc4109968cedc58c151',1,'osSemaphoreAttr_t::name()'],['../group__CMSIS__RTOS__PoolMgmt.html#ab74e6bf80237ddc4109968cedc58c151',1,'osMemoryPoolAttr_t::name()'],['../group__CMSIS__RTOS__Message.html#ab74e6bf80237ddc4109968cedc58c151',1,'osMessageQueueAttr_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxThread_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxTimer_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxEventFlags_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxMutex_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxSemaphore_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxMemoryPool_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxMessageQueue_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxObject_t::name()']]], + ['next',['next',['../rtx__os_8h.html#a8b9ac161a613448926b2c2b2c8dbe259',1,'osRtxTimer_t::next()'],['../rtx__os_8h.html#a89570e219f9fb794b8353207a7592f95',1,'osRtxMessage_t::next()']]] +]; diff --git a/docs/RTOS2/html/search/all_e.html b/docs/RTOS2/html/search/all_e.html new file mode 100644 index 0000000..3cda017 --- /dev/null +++ b/docs/RTOS2/html/search/all_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_e.js b/docs/RTOS2/html/search/all_e.js new file mode 100644 index 0000000..7f8b4dd --- /dev/null +++ b/docs/RTOS2/html/search/all_e.js @@ -0,0 +1,328 @@ +var searchData= +[ + ['os_20tick_20api',['OS Tick API',['../group__CMSIS__RTOS__TickAPI.html',1,'']]], + ['os_5fid',['os_id',['../rtx__os_8h.html#a7b7d02cdf33432995469f29878f7dcda',1,'osRtxInfo_t']]], + ['os_5ftick_2eh',['os_tick.h',['../os__tick_8h.html',1,'']]], + ['os_5ftick_5facknowledgeirq',['OS_Tick_AcknowledgeIRQ',['../group__CMSIS__RTOS__TickAPI.html#ga57065ec4b281504ad4de13a419870b4f',1,'os_tick.h']]], + ['os_5ftick_5fdisable',['OS_Tick_Disable',['../group__CMSIS__RTOS__TickAPI.html#ga5e325c304fef5003b1dc31906f6a3056',1,'os_tick.h']]], + ['os_5ftick_5fenable',['OS_Tick_Enable',['../group__CMSIS__RTOS__TickAPI.html#ga3e47971bf3a02599d9ecb32208adafec',1,'os_tick.h']]], + ['os_5ftick_5fgetclock',['OS_Tick_GetClock',['../group__CMSIS__RTOS__TickAPI.html#ga936217ea28236fb57648973e0d8f627a',1,'os_tick.h']]], + ['os_5ftick_5fgetcount',['OS_Tick_GetCount',['../group__CMSIS__RTOS__TickAPI.html#gaa64a145a554f1e5077848938d7f39c92',1,'os_tick.h']]], + ['os_5ftick_5fgetinterval',['OS_Tick_GetInterval',['../group__CMSIS__RTOS__TickAPI.html#ga123151dc19d5a94a68f12cdbf61a9bb5',1,'os_tick.h']]], + ['os_5ftick_5fgetirqn',['OS_Tick_GetIRQn',['../group__CMSIS__RTOS__TickAPI.html#gaa8b4eca23e3ffe2df403291958cdc905',1,'os_tick.h']]], + ['os_5ftick_5fgetoverflow',['OS_Tick_GetOverflow',['../group__CMSIS__RTOS__TickAPI.html#ga1f9a593126b7f0b66fc526c2cebd6192',1,'os_tick.h']]], + ['os_5ftick_5fsetup',['OS_Tick_Setup',['../group__CMSIS__RTOS__TickAPI.html#ga5eeffb4d9dc6c6802fee8898096d9a59',1,'os_tick.h']]], + ['osdelay',['osDelay',['../group__CMSIS__RTOS__Wait.html#gaf6055a51390ef65b6b6edc28bf47322e',1,'cmsis_os2.h']]], + ['osdelayuntil',['osDelayUntil',['../group__CMSIS__RTOS__Wait.html#ga3c807924c2d6d43bc2ffb49da3f7f3a1',1,'cmsis_os2.h']]], + ['oserror',['osError',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eabb7b2d2c4efa66df42f1c10635467b09',1,'cmsis_os2.h']]], + ['oserrorisr',['osErrorISR',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea21635bdc492d3094fe83027fa4a30e2f',1,'cmsis_os2.h']]], + ['oserrornomemory',['osErrorNoMemory',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eaf1fac0240218e51eb30a13da2f8aae81',1,'cmsis_os2.h']]], + ['oserrorparameter',['osErrorParameter',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eac24adca6a5d072c9f01c32178ba0d109',1,'cmsis_os2.h']]], + ['oserrorresource',['osErrorResource',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea8fc5801e8b0482bdf22ad63a77f0155d',1,'cmsis_os2.h']]], + ['oserrortimeout',['osErrorTimeout',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea913eb5df15ad85f8557eb3a456b56879',1,'cmsis_os2.h']]], + ['oseventflagsattr_5ft',['osEventFlagsAttr_t',['../group__CMSIS__RTOS__EventFlags.html#structosEventFlagsAttr__t',1,'']]], + ['oseventflagsclear',['osEventFlagsClear',['../group__CMSIS__RTOS__EventFlags.html#ga93bf258ca0007c6641fbe8e4f2b8a1e5',1,'cmsis_os2.h']]], + ['oseventflagsdelete',['osEventFlagsDelete',['../group__CMSIS__RTOS__EventFlags.html#ga7c4acf2fb0d506ec82905dee53fb5435',1,'cmsis_os2.h']]], + ['oseventflagsget',['osEventFlagsGet',['../group__CMSIS__RTOS__EventFlags.html#ga8bda3185f46bfd278cea8a6cf357677d',1,'cmsis_os2.h']]], + ['oseventflagsgetname',['osEventFlagsGetName',['../group__CMSIS__RTOS__EventFlags.html#ga59f4ddf0ee8c395b1672bb978d1cfc88',1,'cmsis_os2.h']]], + ['oseventflagsid_5ft',['osEventFlagsId_t',['../group__CMSIS__RTOS__EventFlags.html#gafdbab933146d6d81d7cca7287e267a50',1,'cmsis_os2.h']]], + ['oseventflagsnew',['osEventFlagsNew',['../group__CMSIS__RTOS__EventFlags.html#gab14b1caeb12ffa42cce1bfe889cd07df',1,'cmsis_os2.h']]], + ['oseventflagsset',['osEventFlagsSet',['../group__CMSIS__RTOS__EventFlags.html#ga33b71d14cecf90b4e72639dd19f23a5e',1,'cmsis_os2.h']]], + ['oseventflagswait',['osEventFlagsWait',['../group__CMSIS__RTOS__EventFlags.html#ga52acb34a8322e58020227344fe662b4e',1,'cmsis_os2.h']]], + ['osflagserror',['osFlagsError',['../cmsis__os2_8h.html#a01c1359c3a5640bff6e08f09bf94ce3a',1,'cmsis_os2.h']]], + ['osflagserrorisr',['osFlagsErrorISR',['../group__flags__error__codes.html#gaea3abd186643f539877e894b62b63448',1,'cmsis_os2.h']]], + ['osflagserrorparameter',['osFlagsErrorParameter',['../group__flags__error__codes.html#gaa8a95ef938f8f5a9fcb815ec53184f77',1,'cmsis_os2.h']]], + ['osflagserrorresource',['osFlagsErrorResource',['../group__flags__error__codes.html#ga4db38b50da1889bcaaa7f747e844f904',1,'cmsis_os2.h']]], + ['osflagserrortimeout',['osFlagsErrorTimeout',['../group__flags__error__codes.html#ga2e951c3f1c3b7bff4eca3d7836cd19ca',1,'cmsis_os2.h']]], + ['osflagserrorunknown',['osFlagsErrorUnknown',['../group__flags__error__codes.html#ga3b1d9fbb83d64eedb62f831c9be647c3',1,'cmsis_os2.h']]], + ['osflagsnoclear',['osFlagsNoClear',['../group__CMSIS__RTOS__Definitions.html#gaade844a42237d8c37569d4d9b16b9f1c',1,'cmsis_os2.h']]], + ['osflagswaitall',['osFlagsWaitAll',['../group__CMSIS__RTOS__Definitions.html#ga8b6f562736fbfb5428940e0c017dec24',1,'cmsis_os2.h']]], + ['osflagswaitany',['osFlagsWaitAny',['../group__CMSIS__RTOS__Definitions.html#ga18e63587b8450d5b8798b6f6ec04e012',1,'cmsis_os2.h']]], + ['oskernelerror',['osKernelError',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a0545c92c18ce8e6b24e82a0d694a0b4a',1,'cmsis_os2.h']]], + ['oskernelgetinfo',['osKernelGetInfo',['../group__CMSIS__RTOS__KernelCtrl.html#ga6f7764e7250c5c5364c00c45a5d1d199',1,'cmsis_os2.h']]], + ['oskernelgetstate',['osKernelGetState',['../group__CMSIS__RTOS__KernelCtrl.html#ga48b69b81012fce051f639be288b243ba',1,'cmsis_os2.h']]], + ['oskernelgetsystimercount',['osKernelGetSysTimerCount',['../group__CMSIS__RTOS__KernelCtrl.html#gae0fcaff6cecfb4013bb556c87afcd7d2',1,'cmsis_os2.h']]], + ['oskernelgetsystimerfreq',['osKernelGetSysTimerFreq',['../group__CMSIS__RTOS__KernelCtrl.html#ga4d69215a93220f72be3684cad582f16a',1,'cmsis_os2.h']]], + ['oskernelgettickcount',['osKernelGetTickCount',['../group__CMSIS__RTOS__KernelCtrl.html#ga84bcdbf2fb76b10c8df4e439f0c7e11b',1,'cmsis_os2.h']]], + ['oskernelgettickfreq',['osKernelGetTickFreq',['../group__CMSIS__RTOS__KernelCtrl.html#ga7a8d7bd927eaaa58999f91d7d6310cee',1,'cmsis_os2.h']]], + ['oskernelinactive',['osKernelInactive',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a2ad3e5912db47b497529d036c89e7995',1,'cmsis_os2.h']]], + ['oskernelinitialize',['osKernelInitialize',['../group__CMSIS__RTOS__KernelCtrl.html#gae818f6611d25ba3140bede410a52d659',1,'cmsis_os2.h']]], + ['oskernellock',['osKernelLock',['../group__CMSIS__RTOS__KernelCtrl.html#ga948609ee930d9b38336b9e1c2a4dfe12',1,'cmsis_os2.h']]], + ['oskernellocked',['osKernelLocked',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a2fe382ad5ebab2257b35740414b28b01',1,'cmsis_os2.h']]], + ['oskernelready',['osKernelReady',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a0596c6e14113447604753656417c9a24',1,'cmsis_os2.h']]], + ['oskernelreserved',['osKernelReserved',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4ab0a47576defa29396a649d9173d4bc4b',1,'cmsis_os2.h']]], + ['oskernelrestorelock',['osKernelRestoreLock',['../group__CMSIS__RTOS__KernelCtrl.html#gae7d0a71b9586cbbb49fcbdf6a04f0289',1,'cmsis_os2.h']]], + ['oskernelresume',['osKernelResume',['../group__CMSIS__RTOS__KernelCtrl.html#ga8c4b4d7ed34cab73c001665d9176aced',1,'cmsis_os2.h']]], + ['oskernelrunning',['osKernelRunning',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a8e0b699fbe1c8bb66fefadd5911cb6ce',1,'cmsis_os2.h']]], + ['oskernelstart',['osKernelStart',['../group__CMSIS__RTOS__KernelCtrl.html#ga9ae2cc00f0d89d7b6a307bba942b5221',1,'cmsis_os2.h']]], + ['oskernelstate_5ft',['osKernelState_t',['../group__CMSIS__RTOS__KernelCtrl.html#ga08326469274b668140ca934b168a5ad4',1,'cmsis_os2.h']]], + ['oskernelsuspend',['osKernelSuspend',['../group__CMSIS__RTOS__KernelCtrl.html#gae26683e1606ec633354a2876c68f0c1f',1,'cmsis_os2.h']]], + ['oskernelsuspended',['osKernelSuspended',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4ad364464ad84d63b1413a9ac8a962390c',1,'cmsis_os2.h']]], + ['oskernelunlock',['osKernelUnlock',['../group__CMSIS__RTOS__KernelCtrl.html#gaf401728b4657456198c33fe75f8d6720',1,'cmsis_os2.h']]], + ['osmemorypoolalloc',['osMemoryPoolAlloc',['../group__CMSIS__RTOS__PoolMgmt.html#ga8ead54e99ccb8f112356c88f99d38fbe',1,'cmsis_os2.h']]], + ['osmemorypoolattr_5ft',['osMemoryPoolAttr_t',['../group__CMSIS__RTOS__PoolMgmt.html#structosMemoryPoolAttr__t',1,'']]], + ['osmemorypooldelete',['osMemoryPoolDelete',['../group__CMSIS__RTOS__PoolMgmt.html#ga8c39e7e5cd2b9eda907466808e59d62e',1,'cmsis_os2.h']]], + ['osmemorypoolfree',['osMemoryPoolFree',['../group__CMSIS__RTOS__PoolMgmt.html#gabb4f4560daa6d1f8c8789082ee186d16',1,'cmsis_os2.h']]], + ['osmemorypoolgetblocksize',['osMemoryPoolGetBlockSize',['../group__CMSIS__RTOS__PoolMgmt.html#gab2bf059b7fa7679c3cccdaeec60b6c0e',1,'cmsis_os2.h']]], + ['osmemorypoolgetcapacity',['osMemoryPoolGetCapacity',['../group__CMSIS__RTOS__PoolMgmt.html#gad696e94bfbe28f0b6613f9303fdf6a37',1,'cmsis_os2.h']]], + ['osmemorypoolgetcount',['osMemoryPoolGetCount',['../group__CMSIS__RTOS__PoolMgmt.html#ga958a9449bff8c95ce213de98eef5739d',1,'cmsis_os2.h']]], + ['osmemorypoolgetname',['osMemoryPoolGetName',['../group__CMSIS__RTOS__PoolMgmt.html#gab414a1e138205a55820acfa277c8f386',1,'cmsis_os2.h']]], + ['osmemorypoolgetspace',['osMemoryPoolGetSpace',['../group__CMSIS__RTOS__PoolMgmt.html#ga0394cffa9479a7994e3b03c79c1cb909',1,'cmsis_os2.h']]], + ['osmemorypoolid_5ft',['osMemoryPoolId_t',['../group__CMSIS__RTOS__PoolMgmt.html#ga2e44473caf338266f56800960294f960',1,'cmsis_os2.h']]], + ['osmemorypoolnew',['osMemoryPoolNew',['../group__CMSIS__RTOS__PoolMgmt.html#ga497ced5d72dc5cd405c4c418516220dc',1,'cmsis_os2.h']]], + ['osmessagequeueattr_5ft',['osMessageQueueAttr_t',['../group__CMSIS__RTOS__Message.html#structosMessageQueueAttr__t',1,'']]], + ['osmessagequeuedelete',['osMessageQueueDelete',['../group__CMSIS__RTOS__Message.html#gaba987f665444e0d83fa6a3a68bc72abe',1,'cmsis_os2.h']]], + ['osmessagequeueget',['osMessageQueueGet',['../group__CMSIS__RTOS__Message.html#gad90d4959466a7a65105061da8256ab9e',1,'cmsis_os2.h']]], + ['osmessagequeuegetcapacity',['osMessageQueueGetCapacity',['../group__CMSIS__RTOS__Message.html#gac24f87d4f395e9e9c900c320e45ade8a',1,'cmsis_os2.h']]], + ['osmessagequeuegetcount',['osMessageQueueGetCount',['../group__CMSIS__RTOS__Message.html#ga6a32ac394fcff568b251c160cc3014b2',1,'cmsis_os2.h']]], + ['osmessagequeuegetmsgsize',['osMessageQueueGetMsgSize',['../group__CMSIS__RTOS__Message.html#ga96d3d84069b20359de48109e28a1a89e',1,'cmsis_os2.h']]], + ['osmessagequeuegetname',['osMessageQueueGetName',['../group__CMSIS__RTOS__Message.html#gae7cf7bf2b97a5ae481fb60fcce99247a',1,'cmsis_os2.h']]], + ['osmessagequeuegetspace',['osMessageQueueGetSpace',['../group__CMSIS__RTOS__Message.html#gaddf0904427436dd3880d46263c2dc9fa',1,'cmsis_os2.h']]], + ['osmessagequeueid_5ft',['osMessageQueueId_t',['../cmsis__os2_8h.html#a206dbc05367e03c39fc6d4d1ebcff317',1,'cmsis_os2.h']]], + ['osmessagequeuenew',['osMessageQueueNew',['../group__CMSIS__RTOS__Message.html#ga24e895a00f9d484db33aaf784c57bfed',1,'cmsis_os2.h']]], + ['osmessagequeueput',['osMessageQueuePut',['../group__CMSIS__RTOS__Message.html#gaa515fc8b956f721a8f72b2c505813bfc',1,'cmsis_os2.h']]], + ['osmessagequeuereset',['osMessageQueueReset',['../group__CMSIS__RTOS__Message.html#gac6dce7f9ad132d266292c2e979d861b4',1,'cmsis_os2.h']]], + ['osmutexacquire',['osMutexAcquire',['../group__CMSIS__RTOS__MutexMgmt.html#gabc54686ea0fc281823b1763422d2a924',1,'cmsis_os2.h']]], + ['osmutexattr_5ft',['osMutexAttr_t',['../group__CMSIS__RTOS__MutexMgmt.html#structosMutexAttr__t',1,'']]], + ['osmutexdelete',['osMutexDelete',['../group__CMSIS__RTOS__MutexMgmt.html#gabee73ad227ba4587d3db12ef9bd582bc',1,'cmsis_os2.h']]], + ['osmutexgetname',['osMutexGetName',['../group__CMSIS__RTOS__MutexMgmt.html#ga00b5e58cd247a412d1afd18732d8b752',1,'cmsis_os2.h']]], + ['osmutexgetowner',['osMutexGetOwner',['../group__CMSIS__RTOS__MutexMgmt.html#ga7f9a7666df0978738cd570cb700b83fb',1,'cmsis_os2.h']]], + ['osmutexid_5ft',['osMutexId_t',['../group__CMSIS__RTOS__MutexMgmt.html#ga313801836c62deb23055efb55a420e42',1,'cmsis_os2.h']]], + ['osmutexnew',['osMutexNew',['../group__CMSIS__RTOS__MutexMgmt.html#gab90920022ab944296821368ef6bb52f8',1,'cmsis_os2.h']]], + ['osmutexprioinherit',['osMutexPrioInherit',['../group__CMSIS__RTOS__MutexMgmt.html#ga40fba270cb31a977b3bd551d41eb9599',1,'cmsis_os2.h']]], + ['osmutexrecursive',['osMutexRecursive',['../group__CMSIS__RTOS__MutexMgmt.html#ga65c2482cc64a35d03871f3180f305926',1,'cmsis_os2.h']]], + ['osmutexrelease',['osMutexRelease',['../group__CMSIS__RTOS__MutexMgmt.html#gaea629705703580ff58776bf73c8db915',1,'cmsis_os2.h']]], + ['osmutexrobust',['osMutexRobust',['../group__CMSIS__RTOS__MutexMgmt.html#gaf0e1dee376798b4d516d164981526780',1,'cmsis_os2.h']]], + ['osok',['osOK',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea9e1c9e2550bb4de8969a935acffc968f',1,'cmsis_os2.h']]], + ['ospriority_5ft',['osPriority_t',['../group__CMSIS__RTOS__ThreadMgmt.html#gad4e3e0971b41f2d17584a8c6837342ec',1,'cmsis_os2.h']]], + ['ospriorityabovenormal',['osPriorityAboveNormal',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca17b36cd9cd38652c2bc6d4803990674b',1,'cmsis_os2.h']]], + ['ospriorityabovenormal1',['osPriorityAboveNormal1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecabfeafc713edfc7b9130aa5c762d68998',1,'cmsis_os2.h']]], + ['ospriorityabovenormal2',['osPriorityAboveNormal2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca901acf86070e06f5990b611734ee2562',1,'cmsis_os2.h']]], + ['ospriorityabovenormal3',['osPriorityAboveNormal3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecad566b876b64e6efdc3eba0fc04e54013',1,'cmsis_os2.h']]], + ['ospriorityabovenormal4',['osPriorityAboveNormal4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca6ccac37d7dae4586a2031966d36a63ec',1,'cmsis_os2.h']]], + ['ospriorityabovenormal5',['osPriorityAboveNormal5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecae36e8b38ee046a3104bcccabb10cf78c',1,'cmsis_os2.h']]], + ['ospriorityabovenormal6',['osPriorityAboveNormal6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca61e6ce27e1e0f34f2540b413b8a8b207',1,'cmsis_os2.h']]], + ['ospriorityabovenormal7',['osPriorityAboveNormal7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecadbbb0fed3ada6b9b50d4a628abc2a67d',1,'cmsis_os2.h']]], + ['osprioritybelownormal',['osPriorityBelowNormal',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca193b650117c209b4a203954542bcc3e6',1,'cmsis_os2.h']]], + ['osprioritybelownormal1',['osPriorityBelowNormal1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca9138da7187690b15f52d8e5729c18da5',1,'cmsis_os2.h']]], + ['osprioritybelownormal2',['osPriorityBelowNormal2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca4f081d6735bf2f513338b07eddf13ae3',1,'cmsis_os2.h']]], + ['osprioritybelownormal3',['osPriorityBelowNormal3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca19c013690d0d6bf3ac90707942be3fdf',1,'cmsis_os2.h']]], + ['osprioritybelownormal4',['osPriorityBelowNormal4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca36931ad6cee5e4700e2c8622bdd2cd24',1,'cmsis_os2.h']]], + ['osprioritybelownormal5',['osPriorityBelowNormal5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca0bcd9ad1e7a02e3bf03be7dcc8ece38e',1,'cmsis_os2.h']]], + ['osprioritybelownormal6',['osPriorityBelowNormal6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecabd3cc7df5b92b752ddf1e7843a786c05',1,'cmsis_os2.h']]], + ['osprioritybelownormal7',['osPriorityBelowNormal7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecab18e3bda7b5e418e309a62d6267ea14b',1,'cmsis_os2.h']]], + ['ospriorityerror',['osPriorityError',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecae35f5e2f9c64ad346822521b643bdea4',1,'cmsis_os2.h']]], + ['ospriorityhigh',['osPriorityHigh',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca914433934143a9ba767e59577c56e6c2',1,'cmsis_os2.h']]], + ['ospriorityhigh1',['osPriorityHigh1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca17b7a7e6febf12444a84e90edfce36cb',1,'cmsis_os2.h']]], + ['ospriorityhigh2',['osPriorityHigh2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca40a120cf8bbc42e575455c027f3d9b03',1,'cmsis_os2.h']]], + ['ospriorityhigh3',['osPriorityHigh3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca0b15518b0b5321a29efa0b42b2f8c759',1,'cmsis_os2.h']]], + ['ospriorityhigh4',['osPriorityHigh4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecafe5a4f393fab04551ac7d93e80cdf0fb',1,'cmsis_os2.h']]], + ['ospriorityhigh5',['osPriorityHigh5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5960841bfbdd959b163429e8502ea4e9',1,'cmsis_os2.h']]], + ['ospriorityhigh6',['osPriorityHigh6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5714dda6effc1a3f8ec155d97e3e69bc',1,'cmsis_os2.h']]], + ['ospriorityhigh7',['osPriorityHigh7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca63ad0cc52a701ef3d9df52b59b995652',1,'cmsis_os2.h']]], + ['ospriorityidle',['osPriorityIdle',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342ecacd5864eac01a6916a7c866bb51a6aac1',1,'cmsis_os2.h']]], + ['ospriorityisr',['osPriorityISR',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342eca4b4fa46c3ebaf4259662a0a0a3173b7f',1,'cmsis_os2.h']]], + ['osprioritylow',['osPriorityLow',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca61cb822239ac8f66dfbdc7291598a3d4',1,'cmsis_os2.h']]], + ['osprioritylow1',['osPriorityLow1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaba2b6919f0b630c8c1b2c940e3bfadbe',1,'cmsis_os2.h']]], + ['osprioritylow2',['osPriorityLow2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca78ad5d00aa07a2b4bf30a639544f5507',1,'cmsis_os2.h']]], + ['osprioritylow3',['osPriorityLow3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca28ccb07942c16f5f5efefb6cf68a7f50',1,'cmsis_os2.h']]], + ['osprioritylow4',['osPriorityLow4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5a4a4f26d5b220a968e221e854f69a81',1,'cmsis_os2.h']]], + ['osprioritylow5',['osPriorityLow5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecad69b8c14809bc5bdce4887f5a57d9353',1,'cmsis_os2.h']]], + ['osprioritylow6',['osPriorityLow6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecac0f188468664d06d4cd9e6e1ed351393',1,'cmsis_os2.h']]], + ['osprioritylow7',['osPriorityLow7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5b151ebba7fdeb1baaa9b7b420890b7a',1,'cmsis_os2.h']]], + ['osprioritynone',['osPriorityNone',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca6c437c7185161a3bd1e7e4669dfa17a3',1,'cmsis_os2.h']]], + ['osprioritynormal',['osPriorityNormal',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca45a2895ad30c79fb97de18cac7cc19f1',1,'cmsis_os2.h']]], + ['osprioritynormal1',['osPriorityNormal1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca3e70c19e03d5a54e66bd071f0776782c',1,'cmsis_os2.h']]], + ['osprioritynormal2',['osPriorityNormal2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca19e96f2b025b6462a43b1965043c8205',1,'cmsis_os2.h']]], + ['osprioritynormal3',['osPriorityNormal3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca402bd7ab26fb57c8cee8cf94168f4c91',1,'cmsis_os2.h']]], + ['osprioritynormal4',['osPriorityNormal4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca93ef07d3a107aeee6508bfd29ba3485d',1,'cmsis_os2.h']]], + ['osprioritynormal5',['osPriorityNormal5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca68f3f6fdaa639de300277802aa13a0ab',1,'cmsis_os2.h']]], + ['osprioritynormal6',['osPriorityNormal6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca8221eb0d059726a6309f1f2d0cdb6204',1,'cmsis_os2.h']]], + ['osprioritynormal7',['osPriorityNormal7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca049abd04f8951415407ec9d92bd9b80b',1,'cmsis_os2.h']]], + ['ospriorityrealtime',['osPriorityRealtime',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca1485dec3702434a1ec3cb74c7a17a4af',1,'cmsis_os2.h']]], + ['ospriorityrealtime1',['osPriorityRealtime1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaf685a06b30f0635476e21347a986305b',1,'cmsis_os2.h']]], + ['ospriorityrealtime2',['osPriorityRealtime2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecab832bd9de84e5eec2ecad69d085dadff',1,'cmsis_os2.h']]], + ['ospriorityrealtime3',['osPriorityRealtime3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca3f2261e5e733e92844ae8c630f2f9eaa',1,'cmsis_os2.h']]], + ['ospriorityrealtime4',['osPriorityRealtime4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaf614e3dc966d559cd9d9d2a0f78ebe70',1,'cmsis_os2.h']]], + ['ospriorityrealtime5',['osPriorityRealtime5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaff84f31ceff203c711fb9476443507df',1,'cmsis_os2.h']]], + ['ospriorityrealtime6',['osPriorityRealtime6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca80ae9d0dd256312c0c8f44af48316194',1,'cmsis_os2.h']]], + ['ospriorityrealtime7',['osPriorityRealtime7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaa76da6825c4bd31c4958200bc289103b',1,'cmsis_os2.h']]], + ['ospriorityreserved',['osPriorityReserved',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecac86c171f8d466cced0cb1b03bb03343b',1,'cmsis_os2.h']]], + ['osrtxconfig',['osRtxConfig',['../rtx__os_8h.html#a489fda965fa634809f401ae6458a6f45',1,'rtx_os.h']]], + ['osrtxconfig_5ft',['osRtxConfig_t',['../rtx__os_8h.html#structosRtxConfig__t',1,'']]], + ['osrtxconfig_5ft_2eisr_5fqueue',['osRtxConfig_t.isr_queue',['../rtx__os_8h.html#structosRtxConfig__t_8isr__queue',1,'']]], + ['osrtxconfig_5ft_2emem',['osRtxConfig_t.mem',['../rtx__os_8h.html#structosRtxConfig__t_8mem',1,'']]], + ['osrtxconfig_5ft_2empi',['osRtxConfig_t.mpi',['../rtx__os_8h.html#structosRtxConfig__t_8mpi',1,'']]], + ['osrtxconfigprivilegedmode',['osRtxConfigPrivilegedMode',['../rtx__os_8h.html#a0eb4da5bed45820d732e23483b870152',1,'rtx_os.h']]], + ['osrtxconfigstackcheck',['osRtxConfigStackCheck',['../rtx__os_8h.html#a77f3e906438a6693524cdc257cb0bf23',1,'rtx_os.h']]], + ['osrtxconfigstackwatermark',['osRtxConfigStackWatermark',['../rtx__os_8h.html#a62205cc79ec5d95b45f5ebfdf126438c',1,'rtx_os.h']]], + ['osrtxerrorclibmutex',['osRtxErrorClibMutex',['../group__rtx5__specific__defines.html#gac749c24b9cf6c49b392b015ed0517cfc',1,'rtx_os.h']]], + ['osrtxerrorclibspace',['osRtxErrorClibSpace',['../group__rtx5__specific__defines.html#ga14a24724f6e87744ba84674ef76e4256',1,'rtx_os.h']]], + ['osrtxerrorinvalidcontrolblock',['osRtxErrorInvalidControlBlock',['../rtx__evr_8h.html#a56335b5b0a3f932e06aa764d185b6a60',1,'rtx_evr.h']]], + ['osrtxerrorinvaliddatamemory',['osRtxErrorInvalidDataMemory',['../rtx__evr_8h.html#a037115a16032074ae1a82d64c160338b',1,'rtx_evr.h']]], + ['osrtxerrorinvalidpriority',['osRtxErrorInvalidPriority',['../rtx__evr_8h.html#a45219e125941ecbe7eca030fd2f40d7a',1,'rtx_evr.h']]], + ['osrtxerrorinvalidthreadstack',['osRtxErrorInvalidThreadStack',['../rtx__evr_8h.html#a5cabacbb758a1bc5012cae2292771726',1,'rtx_evr.h']]], + ['osrtxerrorisrqueueoverflow',['osRtxErrorISRQueueOverflow',['../group__rtx5__specific__defines.html#ga7377235f9fa3cedee06f682cd93f3e88',1,'rtx_os.h']]], + ['osrtxerrorkernelnotready',['osRtxErrorKernelNotReady',['../rtx__evr_8h.html#a168269d3a1264ac7a7427f8642e358a4',1,'rtx_evr.h']]], + ['osrtxerrorkernelnotrunning',['osRtxErrorKernelNotRunning',['../rtx__evr_8h.html#a8a916c6a8ad67a38c29ca2e2141d1540',1,'rtx_evr.h']]], + ['osrtxerrormutexlocklimit',['osRtxErrorMutexLockLimit',['../rtx__evr_8h.html#a949198d164108954151e89607a1504a7',1,'rtx_evr.h']]], + ['osrtxerrormutexnotlocked',['osRtxErrorMutexNotLocked',['../rtx__evr_8h.html#a4fc98ec7f644bc7156af58431043171a',1,'rtx_evr.h']]], + ['osrtxerrormutexnotowned',['osRtxErrorMutexNotOwned',['../rtx__evr_8h.html#a2abf2bd19d5d80399c129e7b79e19e9a',1,'rtx_evr.h']]], + ['osrtxerrornotify',['osRtxErrorNotify',['../group__rtx5__specific__functions.html#gaf1745a88f9cc60b609ab1c8076bd346d',1,'rtx_os.h']]], + ['osrtxerrorsemaphorecountlimit',['osRtxErrorSemaphoreCountLimit',['../rtx__evr_8h.html#a4266d3dd5e7bbd2693dd53d00d80bc4c',1,'rtx_evr.h']]], + ['osrtxerrorstackunderflow',['osRtxErrorStackUnderflow',['../group__rtx5__specific__defines.html#ga42206aa2524b8fab613d26bea0f73c44',1,'rtx_os.h']]], + ['osrtxerrorthreadnotjoinable',['osRtxErrorThreadNotJoinable',['../rtx__evr_8h.html#a1955ed26bf52d4fd07a73961ee6a1478',1,'rtx_evr.h']]], + ['osrtxerrortimerqueueoverflow',['osRtxErrorTimerQueueOverflow',['../group__rtx5__specific__defines.html#gaad420018f26e751ec55d3922a283beb0',1,'rtx_os.h']]], + ['osrtxerrortz_5falloccontext_5fs',['osRtxErrorTZ_AllocContext_S',['../rtx__evr_8h.html#a787925e3c31997d22bb7ea985b69c3db',1,'rtx_evr.h']]], + ['osrtxerrortz_5ffreecontext_5fs',['osRtxErrorTZ_FreeContext_S',['../rtx__evr_8h.html#a8b1b28f13acfecfec665a3759ce69991',1,'rtx_evr.h']]], + ['osrtxerrortz_5finitcontext_5fs',['osRtxErrorTZ_InitContext_S',['../rtx__evr_8h.html#a33f2affc96c91cf39a3986e4bd119c5c',1,'rtx_evr.h']]], + ['osrtxerrortz_5floadcontext_5fs',['osRtxErrorTZ_LoadContext_S',['../rtx__evr_8h.html#a3e9b3fdece321c3766bc6bc1a35e9cf6',1,'rtx_evr.h']]], + ['osrtxerrortz_5fsavecontext_5fs',['osRtxErrorTZ_SaveContext_S',['../rtx__evr_8h.html#ad600f514856926fc313a5f7dc0c3d422',1,'rtx_evr.h']]], + ['osrtxeventflags_5ft',['osRtxEventFlags_t',['../rtx__os_8h.html#structosRtxEventFlags__t',1,'']]], + ['osrtxeventflagscbsize',['osRtxEventFlagsCbSize',['../group__rtx5__specific__defines.html#ga68100c8c44931f03547973294c433075',1,'rtx_os.h']]], + ['osrtxeventflagslimit',['osRtxEventFlagsLimit',['../rtx__os_8h.html#a271653c08ecb64dbb2d0ce8a51ddb4c2',1,'rtx_os.h']]], + ['osrtxeventflagsmemusage',['osRtxEventFlagsMemUsage',['../rtx__os_8h.html#a0c81327f94697890809ce4a594bb9d5c',1,'rtx_os.h']]], + ['osrtxflagsystemmemory',['osRtxFlagSystemMemory',['../rtx__os_8h.html#ade9b85b84a6199a1cc3653058def19f3',1,'rtx_os.h']]], + ['osrtxflagsystemobject',['osRtxFlagSystemObject',['../rtx__os_8h.html#a797c4d97bb5e216e6901c1e30e96cb34',1,'rtx_os.h']]], + ['osrtxideventflags',['osRtxIdEventFlags',['../rtx__os_8h.html#aa9b41f7b0dc38018a7db915df5e716cc',1,'rtx_os.h']]], + ['osrtxidinvalid',['osRtxIdInvalid',['../rtx__os_8h.html#ad78a646169b7b4bfa2a278d08fe21fa5',1,'rtx_os.h']]], + ['osrtxidlethread',['osRtxIdleThread',['../group__rtx5__specific__functions.html#ga074068b8efa7074cee68a71481d0b072',1,'rtx_os.h']]], + ['osrtxidmemorypool',['osRtxIdMemoryPool',['../rtx__os_8h.html#a3cddbd1d03aedae758445d17db319fec',1,'rtx_os.h']]], + ['osrtxidmessage',['osRtxIdMessage',['../rtx__os_8h.html#a84bb69c0a0d02b2adc4d499803ccb063',1,'rtx_os.h']]], + ['osrtxidmessagequeue',['osRtxIdMessageQueue',['../rtx__os_8h.html#a260226a1f72b4a333f01573430b60b17',1,'rtx_os.h']]], + ['osrtxidmutex',['osRtxIdMutex',['../rtx__os_8h.html#a086574b10e90122f5228decea0a5d3dc',1,'rtx_os.h']]], + ['osrtxidsemaphore',['osRtxIdSemaphore',['../rtx__os_8h.html#a4778b8ce61af3d942501bb4ff28c18f1',1,'rtx_os.h']]], + ['osrtxidthread',['osRtxIdThread',['../rtx__os_8h.html#ad6f0f1f1b4e1b8c2615429d6a24ca8f5',1,'rtx_os.h']]], + ['osrtxidtimer',['osRtxIdTimer',['../rtx__os_8h.html#a5e8dd6b61e9b09d20aeea8434861950e',1,'rtx_os.h']]], + ['osrtxinfo',['osRtxInfo',['../rtx__os_8h.html#ad2270125c4e4991c3231d752b6ee5f3f',1,'rtx_os.h']]], + ['osrtxinfo_5ft',['osRtxInfo_t',['../rtx__os_8h.html#structosRtxInfo__t',1,'']]], + ['osrtxinfo_5ft_2eisr_5fqueue',['osRtxInfo_t.isr_queue',['../rtx__os_8h.html#structosRtxInfo__t_8isr__queue',1,'']]], + ['osrtxinfo_5ft_2ekernel',['osRtxInfo_t.kernel',['../rtx__os_8h.html#structosRtxInfo__t_8kernel',1,'']]], + ['osrtxinfo_5ft_2emem',['osRtxInfo_t.mem',['../rtx__os_8h.html#structosRtxInfo__t_8mem',1,'']]], + ['osrtxinfo_5ft_2empi',['osRtxInfo_t.mpi',['../rtx__os_8h.html#structosRtxInfo__t_8mpi',1,'']]], + ['osrtxinfo_5ft_2epost_5fprocess',['osRtxInfo_t.post_process',['../structosRtxInfo__t_8post__process.html',1,'']]], + ['osrtxinfo_5ft_2ethread',['osRtxInfo_t.thread',['../rtx__os_8h.html#structosRtxInfo__t_8thread',1,'']]], + ['osrtxinfo_5ft_2ethread_2erobin',['osRtxInfo_t.thread.robin',['../rtx__os_8h.html#structosRtxInfo__t_8thread_8robin',1,'']]], + ['osrtxinfo_5ft_2ethread_2erun',['osRtxInfo_t.thread.run',['../rtx__os_8h.html#structosRtxInfo__t_8thread_8run',1,'']]], + ['osrtxinfo_5ft_2etimer',['osRtxInfo_t.timer',['../structosRtxInfo__t_8timer.html',1,'']]], + ['osrtxkernelid',['osRtxKernelId',['../rtx__os_8h.html#a47e0637d30eed2357b238cbb19dbb058',1,'rtx_os.h']]], + ['osrtxkernelinactive',['osRtxKernelInactive',['../rtx__os_8h.html#a7543c3b497052bdbfbfbc3debc5f0a6e',1,'rtx_os.h']]], + ['osrtxkernellocked',['osRtxKernelLocked',['../rtx__os_8h.html#a9c20a179e70e74fa9fe9f9ba275cc73b',1,'rtx_os.h']]], + ['osrtxkernelready',['osRtxKernelReady',['../rtx__os_8h.html#ab793b30296108737eb356871d266e2a2',1,'rtx_os.h']]], + ['osrtxkernelrunning',['osRtxKernelRunning',['../rtx__os_8h.html#a337ee876c540b4f4e9d680497eed9fdc',1,'rtx_os.h']]], + ['osrtxkernelsuspended',['osRtxKernelSuspended',['../rtx__os_8h.html#a751dd07663970abe0305de11d52812a7',1,'rtx_os.h']]], + ['osrtxmemorypool_5ft',['osRtxMemoryPool_t',['../rtx__os_8h.html#structosRtxMemoryPool__t',1,'']]], + ['osrtxmemorypoolcbsize',['osRtxMemoryPoolCbSize',['../group__rtx5__specific__defines.html#gab8e49e9e1eea5a015f2a3114cabceb48',1,'rtx_os.h']]], + ['osrtxmemorypoolmemsize',['osRtxMemoryPoolMemSize',['../group__rtx5__specific__defines.html#gac6bea3541b458bbc79eafce42a2d87a2',1,'rtx_os.h']]], + ['osrtxmemorypoolmemusage',['osRtxMemoryPoolMemUsage',['../rtx__os_8h.html#ae5dea30a13d7a2316699a7f201504bc7',1,'rtx_os.h']]], + ['osrtxmessage_5ft',['osRtxMessage_t',['../rtx__os_8h.html#structosRtxMessage__t',1,'']]], + ['osrtxmessagequeue_5ft',['osRtxMessageQueue_t',['../rtx__os_8h.html#structosRtxMessageQueue__t',1,'']]], + ['osrtxmessagequeuecbsize',['osRtxMessageQueueCbSize',['../group__rtx5__specific__defines.html#gaa8d067c476faa6bfc8e5e21f3b3c844e',1,'rtx_os.h']]], + ['osrtxmessagequeuememsize',['osRtxMessageQueueMemSize',['../group__rtx5__specific__defines.html#ga47eb1e21f1bf9a42281c6c89c7473e99',1,'rtx_os.h']]], + ['osrtxmessagequeuememusage',['osRtxMessageQueueMemUsage',['../rtx__os_8h.html#af3da38b316a84990128e8d9f34e3e6d3',1,'rtx_os.h']]], + ['osrtxmpinfo_5ft',['osRtxMpInfo_t',['../rtx__os_8h.html#structosRtxMpInfo__t',1,'']]], + ['osrtxmutex_5ft',['osRtxMutex_t',['../rtx__os_8h.html#structosRtxMutex__t',1,'']]], + ['osrtxmutexcbsize',['osRtxMutexCbSize',['../group__rtx5__specific__defines.html#ga188bfaaf7477cf24cbc9f207feaeb53a',1,'rtx_os.h']]], + ['osrtxmutexlocklimit',['osRtxMutexLockLimit',['../rtx__os_8h.html#ade5d158c28233a45ad1fc9a1156373f6',1,'rtx_os.h']]], + ['osrtxmutexmemusage',['osRtxMutexMemUsage',['../rtx__os_8h.html#a683927dcd67dcb912884d16efa81a58d',1,'rtx_os.h']]], + ['osrtxobject_5ft',['osRtxObject_t',['../rtx__os_8h.html#structosRtxObject__t',1,'']]], + ['osrtxobjectmemusage_5ft',['osRtxObjectMemUsage_t',['../rtx__os_8h.html#structosRtxObjectMemUsage__t',1,'']]], + ['osrtxsemaphore_5ft',['osRtxSemaphore_t',['../rtx__os_8h.html#structosRtxSemaphore__t',1,'']]], + ['osrtxsemaphorecbsize',['osRtxSemaphoreCbSize',['../group__rtx5__specific__defines.html#ga0949b67063d0bd427fbee9c816b5d45a',1,'rtx_os.h']]], + ['osrtxsemaphorememusage',['osRtxSemaphoreMemUsage',['../rtx__os_8h.html#aec50b39ce30d9c87916d077f6f764387',1,'rtx_os.h']]], + ['osrtxsemaphoretokenlimit',['osRtxSemaphoreTokenLimit',['../rtx__os_8h.html#a14c7bcf532389ed285827cf5497d09eb',1,'rtx_os.h']]], + ['osrtxstackfillpattern',['osRtxStackFillPattern',['../rtx__os_8h.html#a7dbaedf90584739e6d938d69d2621855',1,'rtx_os.h']]], + ['osrtxstackmagicword',['osRtxStackMagicWord',['../rtx__os_8h.html#aabdbbcf214681666d06629397463093f',1,'rtx_os.h']]], + ['osrtxthread_5ft',['osRtxThread_t',['../rtx__os_8h.html#structosRtxThread__t',1,'']]], + ['osrtxthreadblocked',['osRtxThreadBlocked',['../rtx__os_8h.html#a30e61895c9ec7941715dd4747b11d5b3',1,'rtx_os.h']]], + ['osrtxthreadcbsize',['osRtxThreadCbSize',['../group__rtx5__specific__defines.html#ga30d19272204231956582ebfff69567f6',1,'rtx_os.h']]], + ['osrtxthreadflagdefstack',['osRtxThreadFlagDefStack',['../rtx__os_8h.html#a733199fdb7675dbf99d5e6d17c126a96',1,'rtx_os.h']]], + ['osrtxthreadflagslimit',['osRtxThreadFlagsLimit',['../rtx__os_8h.html#a73248d08e2db1ef9941cf8fcf24ddba9',1,'rtx_os.h']]], + ['osrtxthreadinactive',['osRtxThreadInactive',['../rtx__os_8h.html#a2552be237293212f43fc08bf3ec02e67',1,'rtx_os.h']]], + ['osrtxthreadmemusage',['osRtxThreadMemUsage',['../rtx__os_8h.html#a90374bf1d999b2e1594763ab6c97cd69',1,'rtx_os.h']]], + ['osrtxthreadready',['osRtxThreadReady',['../rtx__os_8h.html#a7c1e9dfefafc53162f076b0430a0e595',1,'rtx_os.h']]], + ['osrtxthreadrunning',['osRtxThreadRunning',['../rtx__os_8h.html#ad9615557219eecdbca536d4280e72604',1,'rtx_os.h']]], + ['osrtxthreadstatemask',['osRtxThreadStateMask',['../rtx__os_8h.html#ad486f6d40fcd8e9569ab415373d912e4',1,'rtx_os.h']]], + ['osrtxthreadterminated',['osRtxThreadTerminated',['../rtx__os_8h.html#a3011758dc91d1dd134ec48b816b67d50',1,'rtx_os.h']]], + ['osrtxthreadwaitingdelay',['osRtxThreadWaitingDelay',['../rtx__os_8h.html#a9fcd1ecba034b5fc15e991311736ec4e',1,'rtx_os.h']]], + ['osrtxthreadwaitingeventflags',['osRtxThreadWaitingEventFlags',['../rtx__os_8h.html#a6c4c8b1563e28aa5b947346cb5db3c69',1,'rtx_os.h']]], + ['osrtxthreadwaitingjoin',['osRtxThreadWaitingJoin',['../rtx__os_8h.html#a88ca40f569d87366a69451ed43759453',1,'rtx_os.h']]], + ['osrtxthreadwaitingmemorypool',['osRtxThreadWaitingMemoryPool',['../rtx__os_8h.html#aa87cea70df1acf71f6358de9b65722a4',1,'rtx_os.h']]], + ['osrtxthreadwaitingmessageget',['osRtxThreadWaitingMessageGet',['../rtx__os_8h.html#a881830bb0c1488cd15bd1a412bc16800',1,'rtx_os.h']]], + ['osrtxthreadwaitingmessageput',['osRtxThreadWaitingMessagePut',['../rtx__os_8h.html#a7502524f6911edc751111422eaf66a43',1,'rtx_os.h']]], + ['osrtxthreadwaitingmutex',['osRtxThreadWaitingMutex',['../rtx__os_8h.html#ae99ccb8b4d1a85c1abb6ab39933690a6',1,'rtx_os.h']]], + ['osrtxthreadwaitingsemaphore',['osRtxThreadWaitingSemaphore',['../rtx__os_8h.html#acbe0a0cd73d487b82501b584caf4a472',1,'rtx_os.h']]], + ['osrtxthreadwaitingthreadflags',['osRtxThreadWaitingThreadFlags',['../rtx__os_8h.html#a41174e493bdf7e3a1e35306703bcd63c',1,'rtx_os.h']]], + ['osrtxtimer_5ft',['osRtxTimer_t',['../rtx__os_8h.html#structosRtxTimer__t',1,'']]], + ['osrtxtimercbsize',['osRtxTimerCbSize',['../group__rtx5__specific__defines.html#gaf8a145fdeb24fd912971f0671b1a3603',1,'rtx_os.h']]], + ['osrtxtimerfinfo_5ft',['osRtxTimerFinfo_t',['../rtx__os_8h.html#structosRtxTimerFinfo__t',1,'']]], + ['osrtxtimerinactive',['osRtxTimerInactive',['../rtx__os_8h.html#a66bea72c0cffd25c7cb32419283a7b92',1,'rtx_os.h']]], + ['osrtxtimermemusage',['osRtxTimerMemUsage',['../rtx__os_8h.html#aa3e7cf488411dbdc814420b81f36b935',1,'rtx_os.h']]], + ['osrtxtimerperiodic',['osRtxTimerPeriodic',['../rtx__os_8h.html#accc1542de31e0c7367d452e9de035bb4',1,'rtx_os.h']]], + ['osrtxtimerrunning',['osRtxTimerRunning',['../rtx__os_8h.html#aed55034470990d4593eb614e26c1eea7',1,'rtx_os.h']]], + ['osrtxtimerstopped',['osRtxTimerStopped',['../rtx__os_8h.html#ab01076b285029ac6d22dbde69167c96e',1,'rtx_os.h']]], + ['osrtxversionapi',['osRtxVersionAPI',['../rtx__os_8h.html#aea20a2b373e98ae88a7cf7e4a56b118f',1,'rtx_os.h']]], + ['osrtxversionkernel',['osRtxVersionKernel',['../rtx__os_8h.html#ad854168120979e8c60630e0140e104e8',1,'rtx_os.h']]], + ['ossemaphoreacquire',['osSemaphoreAcquire',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga7e94c8b242a0c81f2cc79ec22895c87b',1,'cmsis_os2.h']]], + ['ossemaphoreattr_5ft',['osSemaphoreAttr_t',['../group__CMSIS__RTOS__SemaphoreMgmt.html#structosSemaphoreAttr__t',1,'']]], + ['ossemaphoredelete',['osSemaphoreDelete',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga81258ce9c67fa89f07cc49d2e136cd88',1,'cmsis_os2.h']]], + ['ossemaphoregetcount',['osSemaphoreGetCount',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga7559d4dff3cda9992fc5ab5de3e74c70',1,'cmsis_os2.h']]], + ['ossemaphoregetname',['osSemaphoreGetName',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga9586952051f00285f1482dbe6695bbc4',1,'cmsis_os2.h']]], + ['ossemaphoreid_5ft',['osSemaphoreId_t',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga6e1c1c4b04175bb92b013c8f37249f40',1,'cmsis_os2.h']]], + ['ossemaphorenew',['osSemaphoreNew',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga2a39806ace781a0008a4374ca701b14a',1,'cmsis_os2.h']]], + ['ossemaphorerelease',['osSemaphoreRelease',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga0abcee1b5449d7a6928fb9248c690bb6',1,'cmsis_os2.h']]], + ['osstatus_5ft',['osStatus_t',['../group__CMSIS__RTOS__Definitions.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813e',1,'cmsis_os2.h']]], + ['osstatusreserved',['osStatusReserved',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea66cc9ce9106b508df0e4a733a55a439d',1,'cmsis_os2.h']]], + ['osthreadattr_5ft',['osThreadAttr_t',['../group__CMSIS__RTOS__ThreadMgmt.html#structosThreadAttr__t',1,'']]], + ['osthreadblocked',['osThreadBlocked',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820daf0e992e354fba8695957c530226a4968',1,'cmsis_os2.h']]], + ['osthreaddetach',['osThreadDetach',['../group__CMSIS__RTOS__ThreadMgmt.html#gaaad14cd9547341ea8109dc4e8540f1dc',1,'cmsis_os2.h']]], + ['osthreaddetached',['osThreadDetached',['../group__CMSIS__RTOS__ThreadMgmt.html#gaa9336c1073858d6b118e2e011636246f',1,'cmsis_os2.h']]], + ['osthreadenumerate',['osThreadEnumerate',['../group__CMSIS__RTOS__ThreadMgmt.html#ga5606604d56e21ece1a654664be877439',1,'cmsis_os2.h']]], + ['osthreaderror',['osThreadError',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da339313e26613bc12f66a852e2ff8745e',1,'cmsis_os2.h']]], + ['osthreadexit',['osThreadExit',['../group__CMSIS__RTOS__ThreadMgmt.html#gaddaa452dd7610e4096647a566d3556fc',1,'cmsis_os2.h']]], + ['osthreadflagsclear',['osThreadFlagsClear',['../group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga656abc1c862c5b9a2b13584c42cc0bfa',1,'cmsis_os2.h']]], + ['osthreadflagsget',['osThreadFlagsGet',['../group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga85c8d2c89466e25abbcb545d9ddd71ba',1,'cmsis_os2.h']]], + ['osthreadflagsset',['osThreadFlagsSet',['../group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga6f89ef9caded1d9963c7b12b0f6412c9',1,'cmsis_os2.h']]], + ['osthreadflagswait',['osThreadFlagsWait',['../group__CMSIS__RTOS__ThreadFlagsMgmt.html#gac11542ad6300b600f872fc96e340ec2b',1,'cmsis_os2.h']]], + ['osthreadfunc_5ft',['osThreadFunc_t',['../group__CMSIS__RTOS__ThreadMgmt.html#gadd51f99a6eb50b94eee75f27cae815eb',1,'cmsis_os2.h']]], + ['osthreadgetcount',['osThreadGetCount',['../group__CMSIS__RTOS__ThreadMgmt.html#ga495b3f812224e7301f23a691793765db',1,'cmsis_os2.h']]], + ['osthreadgetid',['osThreadGetId',['../group__CMSIS__RTOS__ThreadMgmt.html#ga8df03548e89fbc56402a5cd584a505da',1,'cmsis_os2.h']]], + ['osthreadgetname',['osThreadGetName',['../group__CMSIS__RTOS__ThreadMgmt.html#gac3230f3a55a297514b013ebf38f27e0a',1,'cmsis_os2.h']]], + ['osthreadgetpriority',['osThreadGetPriority',['../group__CMSIS__RTOS__ThreadMgmt.html#ga0aeaf349604f456e68e78f9d3b42e44b',1,'cmsis_os2.h']]], + ['osthreadgetstacksize',['osThreadGetStackSize',['../group__CMSIS__RTOS__ThreadMgmt.html#gab9f8bd715d671c6ee27644867bc1bf65',1,'cmsis_os2.h']]], + ['osthreadgetstackspace',['osThreadGetStackSpace',['../group__CMSIS__RTOS__ThreadMgmt.html#ga9c83bd5dd8de329701775d6ef7012720',1,'cmsis_os2.h']]], + ['osthreadgetstate',['osThreadGetState',['../group__CMSIS__RTOS__ThreadMgmt.html#gacc0a98b42f0a5928e12dc91dc76866b9',1,'cmsis_os2.h']]], + ['osthreadid_5ft',['osThreadId_t',['../group__CMSIS__RTOS__ThreadMgmt.html#gaa6c32fe2a3e0a2e01f212d55b02e51c7',1,'cmsis_os2.h']]], + ['osthreadinactive',['osThreadInactive',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dae9d77830b6866e287417b6e1d983e971',1,'cmsis_os2.h']]], + ['osthreadjoin',['osThreadJoin',['../group__CMSIS__RTOS__ThreadMgmt.html#ga3fca90fb0679afeb968aa8c3d5874487',1,'cmsis_os2.h']]], + ['osthreadjoinable',['osThreadJoinable',['../group__CMSIS__RTOS__ThreadMgmt.html#ga249499c519f3f8eef5673009ab6cfcbe',1,'cmsis_os2.h']]], + ['osthreadnew',['osThreadNew',['../group__CMSIS__RTOS__ThreadMgmt.html#ga48d68b8666d99d28fa646ee1d2182b8f',1,'cmsis_os2.h']]], + ['osthreadready',['osThreadReady',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da59e286915944fe0e4d1ffdb1f2946f14',1,'cmsis_os2.h']]], + ['osthreadreserved',['osThreadReserved',['../cmsis__os2_8h.html#gad3dc89e942e38d9f3af858a0269a820da8872f7e352370eb11ee772c7dcca6e6c',1,'cmsis_os2.h']]], + ['osthreadresume',['osThreadResume',['../group__CMSIS__RTOS__ThreadMgmt.html#ga3dbad90eff394b02de76a452c84c5d80',1,'cmsis_os2.h']]], + ['osthreadrunning',['osThreadRunning',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dac4fe336e0790188fcf7d667372eca19d',1,'cmsis_os2.h']]], + ['osthreadsetpriority',['osThreadSetPriority',['../group__CMSIS__RTOS__ThreadMgmt.html#ga861a420fb2d643115b06622903fb3bfb',1,'cmsis_os2.h']]], + ['osthreadstate_5ft',['osThreadState_t',['../group__CMSIS__RTOS__ThreadMgmt.html#gad3dc89e942e38d9f3af858a0269a820d',1,'cmsis_os2.h']]], + ['osthreadsuspend',['osThreadSuspend',['../group__CMSIS__RTOS__ThreadMgmt.html#gaa9de419d0152bf77e9bbcd1f369fb990',1,'cmsis_os2.h']]], + ['osthreadterminate',['osThreadTerminate',['../group__CMSIS__RTOS__ThreadMgmt.html#ga2f8ba6dba6e9c065a6e236ffd410d74a',1,'cmsis_os2.h']]], + ['osthreadterminated',['osThreadTerminated',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dad5b2726c2d0228f4f1a76cf6b630963c',1,'cmsis_os2.h']]], + ['osthreadyield',['osThreadYield',['../group__CMSIS__RTOS__ThreadMgmt.html#gad01c7ec26535b1de6b018bb9466720e2',1,'cmsis_os2.h']]], + ['ostimerattr_5ft',['osTimerAttr_t',['../group__CMSIS__RTOS__TimerMgmt.html#structosTimerAttr__t',1,'']]], + ['ostimerdelete',['osTimerDelete',['../group__CMSIS__RTOS__TimerMgmt.html#gad0001dd74721ab461789324806db2453',1,'cmsis_os2.h']]], + ['ostimerfunc_5ft',['osTimerFunc_t',['../group__CMSIS__RTOS__TimerMgmt.html#gaacf768c1ec64b020598afb985d7b30be',1,'cmsis_os2.h']]], + ['ostimergetname',['osTimerGetName',['../group__CMSIS__RTOS__TimerMgmt.html#ga4f82a98eee4d9ea79507e44340d3d319',1,'cmsis_os2.h']]], + ['ostimerid_5ft',['osTimerId_t',['../group__CMSIS__RTOS__TimerMgmt.html#gaad5409379689ee27bb0a0b56ea4a4b34',1,'cmsis_os2.h']]], + ['ostimerisrunning',['osTimerIsRunning',['../group__CMSIS__RTOS__TimerMgmt.html#ga69d3589f54194022c30dd01e45ec6741',1,'cmsis_os2.h']]], + ['ostimernew',['osTimerNew',['../group__CMSIS__RTOS__TimerMgmt.html#gad4e7f785c5f700a509f55a3bf6a62bec',1,'cmsis_os2.h']]], + ['ostimeronce',['osTimerOnce',['../group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915a2e0e1f31c742c84b497c4d7143357bdb',1,'cmsis_os2.h']]], + ['ostimerperiodic',['osTimerPeriodic',['../group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915ab3463d921dc310938094745c230f2b35',1,'cmsis_os2.h']]], + ['ostimerstart',['osTimerStart',['../group__CMSIS__RTOS__TimerMgmt.html#gab6ee2859ea657641b7adfac599b8121d',1,'cmsis_os2.h']]], + ['ostimerstop',['osTimerStop',['../group__CMSIS__RTOS__TimerMgmt.html#gabd7a89356da7717293eb0bc5d87b8ac9',1,'cmsis_os2.h']]], + ['ostimertype_5ft',['osTimerType_t',['../group__CMSIS__RTOS__TimerMgmt.html#ga7dc24a4c2b90334427081c3da7a71915',1,'cmsis_os2.h']]], + ['osversion_5ft',['osVersion_t',['../group__CMSIS__RTOS__KernelCtrl.html#structosVersion__t',1,'']]], + ['oswaitforever',['osWaitForever',['../group__CMSIS__RTOS__Definitions.html#ga9eb9a7a797a42e4b55eb171ecc609ddb',1,'cmsis_os2.h']]], + ['owner_5fnext',['owner_next',['../rtx__os_8h.html#a54be7ae32f627ee70e1af8c54203ee5a',1,'osRtxMutex_t']]], + ['owner_5fprev',['owner_prev',['../rtx__os_8h.html#a50b315b9b80bafdba54a7a731be1cc30',1,'osRtxMutex_t']]], + ['owner_5fthread',['owner_thread',['../rtx__os_8h.html#a987889d464cb2925029e135b76aa0dc9',1,'osRtxMutex_t']]], + ['os_20tick_20api',['OS Tick API',['../rtos_os_tick_api.html',1,'functionOverview']]] +]; diff --git a/docs/RTOS2/html/search/all_f.html b/docs/RTOS2/html/search/all_f.html new file mode 100644 index 0000000..7419b02 --- /dev/null +++ b/docs/RTOS2/html/search/all_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/all_f.js b/docs/RTOS2/html/search/all_f.js new file mode 100644 index 0000000..0a01a9c --- /dev/null +++ b/docs/RTOS2/html/search/all_f.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['padding',['padding',['../rtx__os_8h.html#a735ef00341a84c02ba561c66de3d20af',1,'osRtxMutex_t']]], + ['pendsv_5fhandler',['PendSV_Handler',['../rtx__os_8h.html#a6303e1f258cbdc1f970ce579cc015623',1,'rtx_os.h']]], + ['post_5fprocess',['post_process',['../rtx__os_8h.html#ae64a3e930a8e3d1fb28038db9bc514d9',1,'osRtxInfo_t']]], + ['prev',['prev',['../rtx__os_8h.html#ac8953ebf7df8aaf724cb12876ac8fb1a',1,'osRtxTimer_t::prev()'],['../rtx__os_8h.html#ad2b4e6d37acc8020701610f54c0c8910',1,'osRtxMessage_t::prev()']]], + ['priority',['priority',['../group__CMSIS__RTOS__ThreadMgmt.html#a6a5183df4c54c3e28dc8dc704f2487d5',1,'osThreadAttr_t::priority()'],['../rtx__os_8h.html#a81659cc4c01e54e2424022728d9effc7',1,'osRtxThread_t::priority()'],['../rtx__os_8h.html#a0ad043071ccc7a261d79a759dc9c6f0c',1,'osRtxMessage_t::priority()']]], + ['priority_5fbase',['priority_base',['../rtx__os_8h.html#ac67f8858081fb7a6e5a4ee8d2de3b348',1,'osRtxThread_t']]] +]; diff --git a/docs/RTOS2/html/search/classes_0.html b/docs/RTOS2/html/search/classes_0.html new file mode 100644 index 0000000..fabdc03 --- /dev/null +++ b/docs/RTOS2/html/search/classes_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/classes_0.js b/docs/RTOS2/html/search/classes_0.js new file mode 100644 index 0000000..c71ea15 --- /dev/null +++ b/docs/RTOS2/html/search/classes_0.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['oseventflagsattr_5ft',['osEventFlagsAttr_t',['../group__CMSIS__RTOS__EventFlags.html#structosEventFlagsAttr__t',1,'']]], + ['osmemorypoolattr_5ft',['osMemoryPoolAttr_t',['../group__CMSIS__RTOS__PoolMgmt.html#structosMemoryPoolAttr__t',1,'']]], + ['osmessagequeueattr_5ft',['osMessageQueueAttr_t',['../group__CMSIS__RTOS__Message.html#structosMessageQueueAttr__t',1,'']]], + ['osmutexattr_5ft',['osMutexAttr_t',['../group__CMSIS__RTOS__MutexMgmt.html#structosMutexAttr__t',1,'']]], + ['osrtxconfig_5ft',['osRtxConfig_t',['../rtx__os_8h.html#structosRtxConfig__t',1,'']]], + ['osrtxconfig_5ft_2eisr_5fqueue',['osRtxConfig_t.isr_queue',['../rtx__os_8h.html#structosRtxConfig__t_8isr__queue',1,'']]], + ['osrtxconfig_5ft_2emem',['osRtxConfig_t.mem',['../rtx__os_8h.html#structosRtxConfig__t_8mem',1,'']]], + ['osrtxconfig_5ft_2empi',['osRtxConfig_t.mpi',['../rtx__os_8h.html#structosRtxConfig__t_8mpi',1,'']]], + ['osrtxeventflags_5ft',['osRtxEventFlags_t',['../rtx__os_8h.html#structosRtxEventFlags__t',1,'']]], + ['osrtxinfo_5ft',['osRtxInfo_t',['../rtx__os_8h.html#structosRtxInfo__t',1,'']]], + ['osrtxinfo_5ft_2eisr_5fqueue',['osRtxInfo_t.isr_queue',['../rtx__os_8h.html#structosRtxInfo__t_8isr__queue',1,'']]], + ['osrtxinfo_5ft_2ekernel',['osRtxInfo_t.kernel',['../rtx__os_8h.html#structosRtxInfo__t_8kernel',1,'']]], + ['osrtxinfo_5ft_2emem',['osRtxInfo_t.mem',['../rtx__os_8h.html#structosRtxInfo__t_8mem',1,'']]], + ['osrtxinfo_5ft_2empi',['osRtxInfo_t.mpi',['../rtx__os_8h.html#structosRtxInfo__t_8mpi',1,'']]], + ['osrtxinfo_5ft_2epost_5fprocess',['osRtxInfo_t.post_process',['../structosRtxInfo__t_8post__process.html',1,'']]], + ['osrtxinfo_5ft_2ethread',['osRtxInfo_t.thread',['../rtx__os_8h.html#structosRtxInfo__t_8thread',1,'']]], + ['osrtxinfo_5ft_2ethread_2erobin',['osRtxInfo_t.thread.robin',['../rtx__os_8h.html#structosRtxInfo__t_8thread_8robin',1,'']]], + ['osrtxinfo_5ft_2ethread_2erun',['osRtxInfo_t.thread.run',['../rtx__os_8h.html#structosRtxInfo__t_8thread_8run',1,'']]], + ['osrtxinfo_5ft_2etimer',['osRtxInfo_t.timer',['../structosRtxInfo__t_8timer.html',1,'']]], + ['osrtxmemorypool_5ft',['osRtxMemoryPool_t',['../rtx__os_8h.html#structosRtxMemoryPool__t',1,'']]], + ['osrtxmessage_5ft',['osRtxMessage_t',['../rtx__os_8h.html#structosRtxMessage__t',1,'']]], + ['osrtxmessagequeue_5ft',['osRtxMessageQueue_t',['../rtx__os_8h.html#structosRtxMessageQueue__t',1,'']]], + ['osrtxmpinfo_5ft',['osRtxMpInfo_t',['../rtx__os_8h.html#structosRtxMpInfo__t',1,'']]], + ['osrtxmutex_5ft',['osRtxMutex_t',['../rtx__os_8h.html#structosRtxMutex__t',1,'']]], + ['osrtxobject_5ft',['osRtxObject_t',['../rtx__os_8h.html#structosRtxObject__t',1,'']]], + ['osrtxobjectmemusage_5ft',['osRtxObjectMemUsage_t',['../rtx__os_8h.html#structosRtxObjectMemUsage__t',1,'']]], + ['osrtxsemaphore_5ft',['osRtxSemaphore_t',['../rtx__os_8h.html#structosRtxSemaphore__t',1,'']]], + ['osrtxthread_5ft',['osRtxThread_t',['../rtx__os_8h.html#structosRtxThread__t',1,'']]], + ['osrtxtimer_5ft',['osRtxTimer_t',['../rtx__os_8h.html#structosRtxTimer__t',1,'']]], + ['osrtxtimerfinfo_5ft',['osRtxTimerFinfo_t',['../rtx__os_8h.html#structosRtxTimerFinfo__t',1,'']]], + ['ossemaphoreattr_5ft',['osSemaphoreAttr_t',['../group__CMSIS__RTOS__SemaphoreMgmt.html#structosSemaphoreAttr__t',1,'']]], + ['osthreadattr_5ft',['osThreadAttr_t',['../group__CMSIS__RTOS__ThreadMgmt.html#structosThreadAttr__t',1,'']]], + ['ostimerattr_5ft',['osTimerAttr_t',['../group__CMSIS__RTOS__TimerMgmt.html#structosTimerAttr__t',1,'']]], + ['osversion_5ft',['osVersion_t',['../group__CMSIS__RTOS__KernelCtrl.html#structosVersion__t',1,'']]] +]; diff --git a/docs/RTOS2/html/search/close.png b/docs/RTOS2/html/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/docs/RTOS2/html/search/close.png differ diff --git a/docs/RTOS2/html/search/defines_0.html b/docs/RTOS2/html/search/defines_0.html new file mode 100644 index 0000000..c2f0b46 --- /dev/null +++ b/docs/RTOS2/html/search/defines_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/defines_0.js b/docs/RTOS2/html/search/defines_0.js new file mode 100644 index 0000000..4e3f0ab --- /dev/null +++ b/docs/RTOS2/html/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5fno_5freturn',['__NO_RETURN',['../cmsis__os2_8h.html#a153a4a31b276a9758959580538720a51',1,'cmsis_os2.h']]] +]; diff --git a/docs/RTOS2/html/search/defines_1.html b/docs/RTOS2/html/search/defines_1.html new file mode 100644 index 0000000..9e1d9fa --- /dev/null +++ b/docs/RTOS2/html/search/defines_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/defines_1.js b/docs/RTOS2/html/search/defines_1.js new file mode 100644 index 0000000..da5c350 --- /dev/null +++ b/docs/RTOS2/html/search/defines_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['irqhandler_5ft',['IRQHANDLER_T',['../os__tick_8h.html#aed032df21f11e8715f5c4deeeb56cc36',1,'os_tick.h']]] +]; diff --git a/docs/RTOS2/html/search/defines_2.html b/docs/RTOS2/html/search/defines_2.html new file mode 100644 index 0000000..6ef4b98 --- /dev/null +++ b/docs/RTOS2/html/search/defines_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/defines_2.js b/docs/RTOS2/html/search/defines_2.js new file mode 100644 index 0000000..64a7533 --- /dev/null +++ b/docs/RTOS2/html/search/defines_2.js @@ -0,0 +1,68 @@ +var searchData= +[ + ['osflagserror',['osFlagsError',['../cmsis__os2_8h.html#a01c1359c3a5640bff6e08f09bf94ce3a',1,'cmsis_os2.h']]], + ['osrtxconfigprivilegedmode',['osRtxConfigPrivilegedMode',['../rtx__os_8h.html#a0eb4da5bed45820d732e23483b870152',1,'rtx_os.h']]], + ['osrtxconfigstackcheck',['osRtxConfigStackCheck',['../rtx__os_8h.html#a77f3e906438a6693524cdc257cb0bf23',1,'rtx_os.h']]], + ['osrtxconfigstackwatermark',['osRtxConfigStackWatermark',['../rtx__os_8h.html#a62205cc79ec5d95b45f5ebfdf126438c',1,'rtx_os.h']]], + ['osrtxerrorinvalidcontrolblock',['osRtxErrorInvalidControlBlock',['../rtx__evr_8h.html#a56335b5b0a3f932e06aa764d185b6a60',1,'rtx_evr.h']]], + ['osrtxerrorinvaliddatamemory',['osRtxErrorInvalidDataMemory',['../rtx__evr_8h.html#a037115a16032074ae1a82d64c160338b',1,'rtx_evr.h']]], + ['osrtxerrorinvalidpriority',['osRtxErrorInvalidPriority',['../rtx__evr_8h.html#a45219e125941ecbe7eca030fd2f40d7a',1,'rtx_evr.h']]], + ['osrtxerrorinvalidthreadstack',['osRtxErrorInvalidThreadStack',['../rtx__evr_8h.html#a5cabacbb758a1bc5012cae2292771726',1,'rtx_evr.h']]], + ['osrtxerrorkernelnotready',['osRtxErrorKernelNotReady',['../rtx__evr_8h.html#a168269d3a1264ac7a7427f8642e358a4',1,'rtx_evr.h']]], + ['osrtxerrorkernelnotrunning',['osRtxErrorKernelNotRunning',['../rtx__evr_8h.html#a8a916c6a8ad67a38c29ca2e2141d1540',1,'rtx_evr.h']]], + ['osrtxerrormutexlocklimit',['osRtxErrorMutexLockLimit',['../rtx__evr_8h.html#a949198d164108954151e89607a1504a7',1,'rtx_evr.h']]], + ['osrtxerrormutexnotlocked',['osRtxErrorMutexNotLocked',['../rtx__evr_8h.html#a4fc98ec7f644bc7156af58431043171a',1,'rtx_evr.h']]], + ['osrtxerrormutexnotowned',['osRtxErrorMutexNotOwned',['../rtx__evr_8h.html#a2abf2bd19d5d80399c129e7b79e19e9a',1,'rtx_evr.h']]], + ['osrtxerrorsemaphorecountlimit',['osRtxErrorSemaphoreCountLimit',['../rtx__evr_8h.html#a4266d3dd5e7bbd2693dd53d00d80bc4c',1,'rtx_evr.h']]], + ['osrtxerrorthreadnotjoinable',['osRtxErrorThreadNotJoinable',['../rtx__evr_8h.html#a1955ed26bf52d4fd07a73961ee6a1478',1,'rtx_evr.h']]], + ['osrtxerrortz_5falloccontext_5fs',['osRtxErrorTZ_AllocContext_S',['../rtx__evr_8h.html#a787925e3c31997d22bb7ea985b69c3db',1,'rtx_evr.h']]], + ['osrtxerrortz_5ffreecontext_5fs',['osRtxErrorTZ_FreeContext_S',['../rtx__evr_8h.html#a8b1b28f13acfecfec665a3759ce69991',1,'rtx_evr.h']]], + ['osrtxerrortz_5finitcontext_5fs',['osRtxErrorTZ_InitContext_S',['../rtx__evr_8h.html#a33f2affc96c91cf39a3986e4bd119c5c',1,'rtx_evr.h']]], + ['osrtxerrortz_5floadcontext_5fs',['osRtxErrorTZ_LoadContext_S',['../rtx__evr_8h.html#a3e9b3fdece321c3766bc6bc1a35e9cf6',1,'rtx_evr.h']]], + ['osrtxerrortz_5fsavecontext_5fs',['osRtxErrorTZ_SaveContext_S',['../rtx__evr_8h.html#ad600f514856926fc313a5f7dc0c3d422',1,'rtx_evr.h']]], + ['osrtxeventflagslimit',['osRtxEventFlagsLimit',['../rtx__os_8h.html#a271653c08ecb64dbb2d0ce8a51ddb4c2',1,'rtx_os.h']]], + ['osrtxflagsystemmemory',['osRtxFlagSystemMemory',['../rtx__os_8h.html#ade9b85b84a6199a1cc3653058def19f3',1,'rtx_os.h']]], + ['osrtxflagsystemobject',['osRtxFlagSystemObject',['../rtx__os_8h.html#a797c4d97bb5e216e6901c1e30e96cb34',1,'rtx_os.h']]], + ['osrtxideventflags',['osRtxIdEventFlags',['../rtx__os_8h.html#aa9b41f7b0dc38018a7db915df5e716cc',1,'rtx_os.h']]], + ['osrtxidinvalid',['osRtxIdInvalid',['../rtx__os_8h.html#ad78a646169b7b4bfa2a278d08fe21fa5',1,'rtx_os.h']]], + ['osrtxidmemorypool',['osRtxIdMemoryPool',['../rtx__os_8h.html#a3cddbd1d03aedae758445d17db319fec',1,'rtx_os.h']]], + ['osrtxidmessage',['osRtxIdMessage',['../rtx__os_8h.html#a84bb69c0a0d02b2adc4d499803ccb063',1,'rtx_os.h']]], + ['osrtxidmessagequeue',['osRtxIdMessageQueue',['../rtx__os_8h.html#a260226a1f72b4a333f01573430b60b17',1,'rtx_os.h']]], + ['osrtxidmutex',['osRtxIdMutex',['../rtx__os_8h.html#a086574b10e90122f5228decea0a5d3dc',1,'rtx_os.h']]], + ['osrtxidsemaphore',['osRtxIdSemaphore',['../rtx__os_8h.html#a4778b8ce61af3d942501bb4ff28c18f1',1,'rtx_os.h']]], + ['osrtxidthread',['osRtxIdThread',['../rtx__os_8h.html#ad6f0f1f1b4e1b8c2615429d6a24ca8f5',1,'rtx_os.h']]], + ['osrtxidtimer',['osRtxIdTimer',['../rtx__os_8h.html#a5e8dd6b61e9b09d20aeea8434861950e',1,'rtx_os.h']]], + ['osrtxkernelid',['osRtxKernelId',['../rtx__os_8h.html#a47e0637d30eed2357b238cbb19dbb058',1,'rtx_os.h']]], + ['osrtxkernelinactive',['osRtxKernelInactive',['../rtx__os_8h.html#a7543c3b497052bdbfbfbc3debc5f0a6e',1,'rtx_os.h']]], + ['osrtxkernellocked',['osRtxKernelLocked',['../rtx__os_8h.html#a9c20a179e70e74fa9fe9f9ba275cc73b',1,'rtx_os.h']]], + ['osrtxkernelready',['osRtxKernelReady',['../rtx__os_8h.html#ab793b30296108737eb356871d266e2a2',1,'rtx_os.h']]], + ['osrtxkernelrunning',['osRtxKernelRunning',['../rtx__os_8h.html#a337ee876c540b4f4e9d680497eed9fdc',1,'rtx_os.h']]], + ['osrtxkernelsuspended',['osRtxKernelSuspended',['../rtx__os_8h.html#a751dd07663970abe0305de11d52812a7',1,'rtx_os.h']]], + ['osrtxmutexlocklimit',['osRtxMutexLockLimit',['../rtx__os_8h.html#ade5d158c28233a45ad1fc9a1156373f6',1,'rtx_os.h']]], + ['osrtxsemaphoretokenlimit',['osRtxSemaphoreTokenLimit',['../rtx__os_8h.html#a14c7bcf532389ed285827cf5497d09eb',1,'rtx_os.h']]], + ['osrtxstackfillpattern',['osRtxStackFillPattern',['../rtx__os_8h.html#a7dbaedf90584739e6d938d69d2621855',1,'rtx_os.h']]], + ['osrtxstackmagicword',['osRtxStackMagicWord',['../rtx__os_8h.html#aabdbbcf214681666d06629397463093f',1,'rtx_os.h']]], + ['osrtxthreadblocked',['osRtxThreadBlocked',['../rtx__os_8h.html#a30e61895c9ec7941715dd4747b11d5b3',1,'rtx_os.h']]], + ['osrtxthreadflagdefstack',['osRtxThreadFlagDefStack',['../rtx__os_8h.html#a733199fdb7675dbf99d5e6d17c126a96',1,'rtx_os.h']]], + ['osrtxthreadflagslimit',['osRtxThreadFlagsLimit',['../rtx__os_8h.html#a73248d08e2db1ef9941cf8fcf24ddba9',1,'rtx_os.h']]], + ['osrtxthreadinactive',['osRtxThreadInactive',['../rtx__os_8h.html#a2552be237293212f43fc08bf3ec02e67',1,'rtx_os.h']]], + ['osrtxthreadready',['osRtxThreadReady',['../rtx__os_8h.html#a7c1e9dfefafc53162f076b0430a0e595',1,'rtx_os.h']]], + ['osrtxthreadrunning',['osRtxThreadRunning',['../rtx__os_8h.html#ad9615557219eecdbca536d4280e72604',1,'rtx_os.h']]], + ['osrtxthreadstatemask',['osRtxThreadStateMask',['../rtx__os_8h.html#ad486f6d40fcd8e9569ab415373d912e4',1,'rtx_os.h']]], + ['osrtxthreadterminated',['osRtxThreadTerminated',['../rtx__os_8h.html#a3011758dc91d1dd134ec48b816b67d50',1,'rtx_os.h']]], + ['osrtxthreadwaitingdelay',['osRtxThreadWaitingDelay',['../rtx__os_8h.html#a9fcd1ecba034b5fc15e991311736ec4e',1,'rtx_os.h']]], + ['osrtxthreadwaitingeventflags',['osRtxThreadWaitingEventFlags',['../rtx__os_8h.html#a6c4c8b1563e28aa5b947346cb5db3c69',1,'rtx_os.h']]], + ['osrtxthreadwaitingjoin',['osRtxThreadWaitingJoin',['../rtx__os_8h.html#a88ca40f569d87366a69451ed43759453',1,'rtx_os.h']]], + ['osrtxthreadwaitingmemorypool',['osRtxThreadWaitingMemoryPool',['../rtx__os_8h.html#aa87cea70df1acf71f6358de9b65722a4',1,'rtx_os.h']]], + ['osrtxthreadwaitingmessageget',['osRtxThreadWaitingMessageGet',['../rtx__os_8h.html#a881830bb0c1488cd15bd1a412bc16800',1,'rtx_os.h']]], + ['osrtxthreadwaitingmessageput',['osRtxThreadWaitingMessagePut',['../rtx__os_8h.html#a7502524f6911edc751111422eaf66a43',1,'rtx_os.h']]], + ['osrtxthreadwaitingmutex',['osRtxThreadWaitingMutex',['../rtx__os_8h.html#ae99ccb8b4d1a85c1abb6ab39933690a6',1,'rtx_os.h']]], + ['osrtxthreadwaitingsemaphore',['osRtxThreadWaitingSemaphore',['../rtx__os_8h.html#acbe0a0cd73d487b82501b584caf4a472',1,'rtx_os.h']]], + ['osrtxthreadwaitingthreadflags',['osRtxThreadWaitingThreadFlags',['../rtx__os_8h.html#a41174e493bdf7e3a1e35306703bcd63c',1,'rtx_os.h']]], + ['osrtxtimerinactive',['osRtxTimerInactive',['../rtx__os_8h.html#a66bea72c0cffd25c7cb32419283a7b92',1,'rtx_os.h']]], + ['osrtxtimerperiodic',['osRtxTimerPeriodic',['../rtx__os_8h.html#accc1542de31e0c7367d452e9de035bb4',1,'rtx_os.h']]], + ['osrtxtimerrunning',['osRtxTimerRunning',['../rtx__os_8h.html#aed55034470990d4593eb614e26c1eea7',1,'rtx_os.h']]], + ['osrtxtimerstopped',['osRtxTimerStopped',['../rtx__os_8h.html#ab01076b285029ac6d22dbde69167c96e',1,'rtx_os.h']]], + ['osrtxversionapi',['osRtxVersionAPI',['../rtx__os_8h.html#aea20a2b373e98ae88a7cf7e4a56b118f',1,'rtx_os.h']]], + ['osrtxversionkernel',['osRtxVersionKernel',['../rtx__os_8h.html#ad854168120979e8c60630e0140e104e8',1,'rtx_os.h']]] +]; diff --git a/docs/RTOS2/html/search/defines_3.html b/docs/RTOS2/html/search/defines_3.html new file mode 100644 index 0000000..e575d66 --- /dev/null +++ b/docs/RTOS2/html/search/defines_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/defines_3.js b/docs/RTOS2/html/search/defines_3.js new file mode 100644 index 0000000..d8b9ad2 --- /dev/null +++ b/docs/RTOS2/html/search/defines_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tz_5fmoduleid_5ft',['TZ_MODULEID_T',['../cmsis__os2_8h.html#a78775dae56f0c9698cdab6e1ca74503f',1,'cmsis_os2.h']]] +]; diff --git a/docs/RTOS2/html/search/enums_0.html b/docs/RTOS2/html/search/enums_0.html new file mode 100644 index 0000000..b4cbe1e --- /dev/null +++ b/docs/RTOS2/html/search/enums_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/enums_0.js b/docs/RTOS2/html/search/enums_0.js new file mode 100644 index 0000000..3a66721 --- /dev/null +++ b/docs/RTOS2/html/search/enums_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['oskernelstate_5ft',['osKernelState_t',['../group__CMSIS__RTOS__KernelCtrl.html#ga08326469274b668140ca934b168a5ad4',1,'cmsis_os2.h']]], + ['ospriority_5ft',['osPriority_t',['../group__CMSIS__RTOS__ThreadMgmt.html#gad4e3e0971b41f2d17584a8c6837342ec',1,'cmsis_os2.h']]], + ['osstatus_5ft',['osStatus_t',['../group__CMSIS__RTOS__Definitions.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813e',1,'cmsis_os2.h']]], + ['osthreadstate_5ft',['osThreadState_t',['../group__CMSIS__RTOS__ThreadMgmt.html#gad3dc89e942e38d9f3af858a0269a820d',1,'cmsis_os2.h']]], + ['ostimertype_5ft',['osTimerType_t',['../group__CMSIS__RTOS__TimerMgmt.html#ga7dc24a4c2b90334427081c3da7a71915',1,'cmsis_os2.h']]] +]; diff --git a/docs/RTOS2/html/search/enumvalues_0.html b/docs/RTOS2/html/search/enumvalues_0.html new file mode 100644 index 0000000..3e00fcf --- /dev/null +++ b/docs/RTOS2/html/search/enumvalues_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/enumvalues_0.js b/docs/RTOS2/html/search/enumvalues_0.js new file mode 100644 index 0000000..ce7f998 --- /dev/null +++ b/docs/RTOS2/html/search/enumvalues_0.js @@ -0,0 +1,80 @@ +var searchData= +[ + ['oserror',['osError',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eabb7b2d2c4efa66df42f1c10635467b09',1,'cmsis_os2.h']]], + ['oserrorisr',['osErrorISR',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea21635bdc492d3094fe83027fa4a30e2f',1,'cmsis_os2.h']]], + ['oserrornomemory',['osErrorNoMemory',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eaf1fac0240218e51eb30a13da2f8aae81',1,'cmsis_os2.h']]], + ['oserrorparameter',['osErrorParameter',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813eac24adca6a5d072c9f01c32178ba0d109',1,'cmsis_os2.h']]], + ['oserrorresource',['osErrorResource',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea8fc5801e8b0482bdf22ad63a77f0155d',1,'cmsis_os2.h']]], + ['oserrortimeout',['osErrorTimeout',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea913eb5df15ad85f8557eb3a456b56879',1,'cmsis_os2.h']]], + ['oskernelerror',['osKernelError',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a0545c92c18ce8e6b24e82a0d694a0b4a',1,'cmsis_os2.h']]], + ['oskernelinactive',['osKernelInactive',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a2ad3e5912db47b497529d036c89e7995',1,'cmsis_os2.h']]], + ['oskernellocked',['osKernelLocked',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a2fe382ad5ebab2257b35740414b28b01',1,'cmsis_os2.h']]], + ['oskernelready',['osKernelReady',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a0596c6e14113447604753656417c9a24',1,'cmsis_os2.h']]], + ['oskernelreserved',['osKernelReserved',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4ab0a47576defa29396a649d9173d4bc4b',1,'cmsis_os2.h']]], + ['oskernelrunning',['osKernelRunning',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4a8e0b699fbe1c8bb66fefadd5911cb6ce',1,'cmsis_os2.h']]], + ['oskernelsuspended',['osKernelSuspended',['../cmsis__os2_8h.html#ga08326469274b668140ca934b168a5ad4ad364464ad84d63b1413a9ac8a962390c',1,'cmsis_os2.h']]], + ['osok',['osOK',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea9e1c9e2550bb4de8969a935acffc968f',1,'cmsis_os2.h']]], + ['ospriorityabovenormal',['osPriorityAboveNormal',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca17b36cd9cd38652c2bc6d4803990674b',1,'cmsis_os2.h']]], + ['ospriorityabovenormal1',['osPriorityAboveNormal1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecabfeafc713edfc7b9130aa5c762d68998',1,'cmsis_os2.h']]], + ['ospriorityabovenormal2',['osPriorityAboveNormal2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca901acf86070e06f5990b611734ee2562',1,'cmsis_os2.h']]], + ['ospriorityabovenormal3',['osPriorityAboveNormal3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecad566b876b64e6efdc3eba0fc04e54013',1,'cmsis_os2.h']]], + ['ospriorityabovenormal4',['osPriorityAboveNormal4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca6ccac37d7dae4586a2031966d36a63ec',1,'cmsis_os2.h']]], + ['ospriorityabovenormal5',['osPriorityAboveNormal5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecae36e8b38ee046a3104bcccabb10cf78c',1,'cmsis_os2.h']]], + ['ospriorityabovenormal6',['osPriorityAboveNormal6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca61e6ce27e1e0f34f2540b413b8a8b207',1,'cmsis_os2.h']]], + ['ospriorityabovenormal7',['osPriorityAboveNormal7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecadbbb0fed3ada6b9b50d4a628abc2a67d',1,'cmsis_os2.h']]], + ['osprioritybelownormal',['osPriorityBelowNormal',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca193b650117c209b4a203954542bcc3e6',1,'cmsis_os2.h']]], + ['osprioritybelownormal1',['osPriorityBelowNormal1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca9138da7187690b15f52d8e5729c18da5',1,'cmsis_os2.h']]], + ['osprioritybelownormal2',['osPriorityBelowNormal2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca4f081d6735bf2f513338b07eddf13ae3',1,'cmsis_os2.h']]], + ['osprioritybelownormal3',['osPriorityBelowNormal3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca19c013690d0d6bf3ac90707942be3fdf',1,'cmsis_os2.h']]], + ['osprioritybelownormal4',['osPriorityBelowNormal4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca36931ad6cee5e4700e2c8622bdd2cd24',1,'cmsis_os2.h']]], + ['osprioritybelownormal5',['osPriorityBelowNormal5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca0bcd9ad1e7a02e3bf03be7dcc8ece38e',1,'cmsis_os2.h']]], + ['osprioritybelownormal6',['osPriorityBelowNormal6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecabd3cc7df5b92b752ddf1e7843a786c05',1,'cmsis_os2.h']]], + ['osprioritybelownormal7',['osPriorityBelowNormal7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecab18e3bda7b5e418e309a62d6267ea14b',1,'cmsis_os2.h']]], + ['ospriorityerror',['osPriorityError',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecae35f5e2f9c64ad346822521b643bdea4',1,'cmsis_os2.h']]], + ['ospriorityhigh',['osPriorityHigh',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca914433934143a9ba767e59577c56e6c2',1,'cmsis_os2.h']]], + ['ospriorityhigh1',['osPriorityHigh1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca17b7a7e6febf12444a84e90edfce36cb',1,'cmsis_os2.h']]], + ['ospriorityhigh2',['osPriorityHigh2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca40a120cf8bbc42e575455c027f3d9b03',1,'cmsis_os2.h']]], + ['ospriorityhigh3',['osPriorityHigh3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca0b15518b0b5321a29efa0b42b2f8c759',1,'cmsis_os2.h']]], + ['ospriorityhigh4',['osPriorityHigh4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecafe5a4f393fab04551ac7d93e80cdf0fb',1,'cmsis_os2.h']]], + ['ospriorityhigh5',['osPriorityHigh5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5960841bfbdd959b163429e8502ea4e9',1,'cmsis_os2.h']]], + ['ospriorityhigh6',['osPriorityHigh6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5714dda6effc1a3f8ec155d97e3e69bc',1,'cmsis_os2.h']]], + ['ospriorityhigh7',['osPriorityHigh7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca63ad0cc52a701ef3d9df52b59b995652',1,'cmsis_os2.h']]], + ['ospriorityidle',['osPriorityIdle',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342ecacd5864eac01a6916a7c866bb51a6aac1',1,'cmsis_os2.h']]], + ['ospriorityisr',['osPriorityISR',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad4e3e0971b41f2d17584a8c6837342eca4b4fa46c3ebaf4259662a0a0a3173b7f',1,'cmsis_os2.h']]], + ['osprioritylow',['osPriorityLow',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca61cb822239ac8f66dfbdc7291598a3d4',1,'cmsis_os2.h']]], + ['osprioritylow1',['osPriorityLow1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaba2b6919f0b630c8c1b2c940e3bfadbe',1,'cmsis_os2.h']]], + ['osprioritylow2',['osPriorityLow2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca78ad5d00aa07a2b4bf30a639544f5507',1,'cmsis_os2.h']]], + ['osprioritylow3',['osPriorityLow3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca28ccb07942c16f5f5efefb6cf68a7f50',1,'cmsis_os2.h']]], + ['osprioritylow4',['osPriorityLow4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5a4a4f26d5b220a968e221e854f69a81',1,'cmsis_os2.h']]], + ['osprioritylow5',['osPriorityLow5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecad69b8c14809bc5bdce4887f5a57d9353',1,'cmsis_os2.h']]], + ['osprioritylow6',['osPriorityLow6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecac0f188468664d06d4cd9e6e1ed351393',1,'cmsis_os2.h']]], + ['osprioritylow7',['osPriorityLow7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca5b151ebba7fdeb1baaa9b7b420890b7a',1,'cmsis_os2.h']]], + ['osprioritynone',['osPriorityNone',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca6c437c7185161a3bd1e7e4669dfa17a3',1,'cmsis_os2.h']]], + ['osprioritynormal',['osPriorityNormal',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca45a2895ad30c79fb97de18cac7cc19f1',1,'cmsis_os2.h']]], + ['osprioritynormal1',['osPriorityNormal1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca3e70c19e03d5a54e66bd071f0776782c',1,'cmsis_os2.h']]], + ['osprioritynormal2',['osPriorityNormal2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca19e96f2b025b6462a43b1965043c8205',1,'cmsis_os2.h']]], + ['osprioritynormal3',['osPriorityNormal3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca402bd7ab26fb57c8cee8cf94168f4c91',1,'cmsis_os2.h']]], + ['osprioritynormal4',['osPriorityNormal4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca93ef07d3a107aeee6508bfd29ba3485d',1,'cmsis_os2.h']]], + ['osprioritynormal5',['osPriorityNormal5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca68f3f6fdaa639de300277802aa13a0ab',1,'cmsis_os2.h']]], + ['osprioritynormal6',['osPriorityNormal6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca8221eb0d059726a6309f1f2d0cdb6204',1,'cmsis_os2.h']]], + ['osprioritynormal7',['osPriorityNormal7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca049abd04f8951415407ec9d92bd9b80b',1,'cmsis_os2.h']]], + ['ospriorityrealtime',['osPriorityRealtime',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca1485dec3702434a1ec3cb74c7a17a4af',1,'cmsis_os2.h']]], + ['ospriorityrealtime1',['osPriorityRealtime1',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaf685a06b30f0635476e21347a986305b',1,'cmsis_os2.h']]], + ['ospriorityrealtime2',['osPriorityRealtime2',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecab832bd9de84e5eec2ecad69d085dadff',1,'cmsis_os2.h']]], + ['ospriorityrealtime3',['osPriorityRealtime3',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca3f2261e5e733e92844ae8c630f2f9eaa',1,'cmsis_os2.h']]], + ['ospriorityrealtime4',['osPriorityRealtime4',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaf614e3dc966d559cd9d9d2a0f78ebe70',1,'cmsis_os2.h']]], + ['ospriorityrealtime5',['osPriorityRealtime5',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaff84f31ceff203c711fb9476443507df',1,'cmsis_os2.h']]], + ['ospriorityrealtime6',['osPriorityRealtime6',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342eca80ae9d0dd256312c0c8f44af48316194',1,'cmsis_os2.h']]], + ['ospriorityrealtime7',['osPriorityRealtime7',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecaa76da6825c4bd31c4958200bc289103b',1,'cmsis_os2.h']]], + ['ospriorityreserved',['osPriorityReserved',['../cmsis__os2_8h.html#gad4e3e0971b41f2d17584a8c6837342ecac86c171f8d466cced0cb1b03bb03343b',1,'cmsis_os2.h']]], + ['osstatusreserved',['osStatusReserved',['../cmsis__os2_8h.html#ga6c0dbe6069e4e7f47bb4cd32ae2b813ea66cc9ce9106b508df0e4a733a55a439d',1,'cmsis_os2.h']]], + ['osthreadblocked',['osThreadBlocked',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820daf0e992e354fba8695957c530226a4968',1,'cmsis_os2.h']]], + ['osthreaderror',['osThreadError',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da339313e26613bc12f66a852e2ff8745e',1,'cmsis_os2.h']]], + ['osthreadinactive',['osThreadInactive',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dae9d77830b6866e287417b6e1d983e971',1,'cmsis_os2.h']]], + ['osthreadready',['osThreadReady',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820da59e286915944fe0e4d1ffdb1f2946f14',1,'cmsis_os2.h']]], + ['osthreadreserved',['osThreadReserved',['../cmsis__os2_8h.html#gad3dc89e942e38d9f3af858a0269a820da8872f7e352370eb11ee772c7dcca6e6c',1,'cmsis_os2.h']]], + ['osthreadrunning',['osThreadRunning',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dac4fe336e0790188fcf7d667372eca19d',1,'cmsis_os2.h']]], + ['osthreadterminated',['osThreadTerminated',['../group__CMSIS__RTOS__ThreadMgmt.html#ggad3dc89e942e38d9f3af858a0269a820dad5b2726c2d0228f4f1a76cf6b630963c',1,'cmsis_os2.h']]], + ['ostimeronce',['osTimerOnce',['../group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915a2e0e1f31c742c84b497c4d7143357bdb',1,'cmsis_os2.h']]], + ['ostimerperiodic',['osTimerPeriodic',['../group__CMSIS__RTOS__TimerMgmt.html#gga7dc24a4c2b90334427081c3da7a71915ab3463d921dc310938094745c230f2b35',1,'cmsis_os2.h']]] +]; diff --git a/docs/RTOS2/html/search/files_0.html b/docs/RTOS2/html/search/files_0.html new file mode 100644 index 0000000..c7aa36c --- /dev/null +++ b/docs/RTOS2/html/search/files_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/files_0.js b/docs/RTOS2/html/search/files_0.js new file mode 100644 index 0000000..dbeea2f --- /dev/null +++ b/docs/RTOS2/html/search/files_0.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['cmsis_5fos2_2eh',['cmsis_os2.h',['../cmsis__os2_8h.html',1,'']]], + ['cmsis_5fos2_2etxt',['cmsis_os2.txt',['../cmsis__os2_8txt.html',1,'']]], + ['cmsis_5fos2_5fevent_2etxt',['cmsis_os2_Event.txt',['../cmsis__os2__Event_8txt.html',1,'']]], + ['cmsis_5fos2_5fkernel_2etxt',['cmsis_os2_Kernel.txt',['../cmsis__os2__Kernel_8txt.html',1,'']]], + ['cmsis_5fos2_5fmempool_2etxt',['cmsis_os2_MemPool.txt',['../cmsis__os2__MemPool_8txt.html',1,'']]], + ['cmsis_5fos2_5fmessage_2etxt',['cmsis_os2_Message.txt',['../cmsis__os2__Message_8txt.html',1,'']]], + ['cmsis_5fos2_5fmigration_2etxt',['cmsis_os2_Migration.txt',['../cmsis__os2__Migration_8txt.html',1,'']]], + ['cmsis_5fos2_5fmigrationguide_2etxt',['cmsis_os2_MigrationGuide.txt',['../cmsis__os2__MigrationGuide_8txt.html',1,'']]], + ['cmsis_5fos2_5fmutex_2etxt',['cmsis_os2_Mutex.txt',['../cmsis__os2__Mutex_8txt.html',1,'']]], + ['cmsis_5fos2_5fsema_2etxt',['cmsis_os2_Sema.txt',['../cmsis__os2__Sema_8txt.html',1,'']]], + ['cmsis_5fos2_5fstatus_2etxt',['cmsis_os2_Status.txt',['../cmsis__os2__Status_8txt.html',1,'']]], + ['cmsis_5fos2_5fthread_2etxt',['cmsis_os2_Thread.txt',['../cmsis__os2__Thread_8txt.html',1,'']]], + ['cmsis_5fos2_5fthreadflags_2etxt',['cmsis_os2_ThreadFlags.txt',['../cmsis__os2__ThreadFlags_8txt.html',1,'']]], + ['cmsis_5fos2_5ftick_2etxt',['cmsis_os2_tick.txt',['../cmsis__os2__tick_8txt.html',1,'']]], + ['cmsis_5fos2_5ftimer_2etxt',['cmsis_os2_Timer.txt',['../cmsis__os2__Timer_8txt.html',1,'']]], + ['cmsis_5fos2_5fwait_2etxt',['cmsis_os2_Wait.txt',['../cmsis__os2__Wait_8txt.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/files_1.html b/docs/RTOS2/html/search/files_1.html new file mode 100644 index 0000000..eca1c80 --- /dev/null +++ b/docs/RTOS2/html/search/files_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/files_1.js b/docs/RTOS2/html/search/files_1.js new file mode 100644 index 0000000..1cdddb0 --- /dev/null +++ b/docs/RTOS2/html/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['history_2etxt',['history.txt',['../history_8txt.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/files_2.html b/docs/RTOS2/html/search/files_2.html new file mode 100644 index 0000000..04a8a46 --- /dev/null +++ b/docs/RTOS2/html/search/files_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/files_2.js b/docs/RTOS2/html/search/files_2.js new file mode 100644 index 0000000..eafaebe --- /dev/null +++ b/docs/RTOS2/html/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mainpage_2etxt',['mainpage.txt',['../mainpage_8txt.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/files_3.html b/docs/RTOS2/html/search/files_3.html new file mode 100644 index 0000000..0dc9a56 --- /dev/null +++ b/docs/RTOS2/html/search/files_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/files_3.js b/docs/RTOS2/html/search/files_3.js new file mode 100644 index 0000000..e4e052d --- /dev/null +++ b/docs/RTOS2/html/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['os_5ftick_2eh',['os_tick.h',['../os__tick_8h.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/files_4.html b/docs/RTOS2/html/search/files_4.html new file mode 100644 index 0000000..891b5da --- /dev/null +++ b/docs/RTOS2/html/search/files_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/files_4.js b/docs/RTOS2/html/search/files_4.js new file mode 100644 index 0000000..37e723a --- /dev/null +++ b/docs/RTOS2/html/search/files_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['rtx_5fevr_2eh',['rtx_evr.h',['../rtx__evr_8h.html',1,'']]], + ['rtx_5fevr_2etxt',['rtx_evr.txt',['../rtx__evr_8txt.html',1,'']]], + ['rtx_5fos_2eh',['rtx_os.h',['../rtx__os_8h.html',1,'']]], + ['rtx_5fos_2etxt',['rtx_os.txt',['../rtx__os_8txt.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/files_5.html b/docs/RTOS2/html/search/files_5.html new file mode 100644 index 0000000..1741195 --- /dev/null +++ b/docs/RTOS2/html/search/files_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/files_5.js b/docs/RTOS2/html/search/files_5.js new file mode 100644 index 0000000..887b955 --- /dev/null +++ b/docs/RTOS2/html/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['validation_2etxt',['validation.txt',['../validation_8txt.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/functions_0.html b/docs/RTOS2/html/search/functions_0.html new file mode 100644 index 0000000..16a5a52 --- /dev/null +++ b/docs/RTOS2/html/search/functions_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/functions_0.js b/docs/RTOS2/html/search/functions_0.js new file mode 100644 index 0000000..8de95b2 --- /dev/null +++ b/docs/RTOS2/html/search/functions_0.js @@ -0,0 +1,170 @@ +var searchData= +[ + ['evrrtxeventflagsclear',['EvrRtxEventFlagsClear',['../rtx__evr_8h.html#ab31f9da565b0170d8e89edf0e848f28b',1,'rtx_evr.h']]], + ['evrrtxeventflagscleardone',['EvrRtxEventFlagsClearDone',['../rtx__evr_8h.html#a9e4c4e5d45bc721439c1919621a49d5a',1,'rtx_evr.h']]], + ['evrrtxeventflagscreated',['EvrRtxEventFlagsCreated',['../group__rtx__evr__event__flasg.html#gaa1f48b9787e3a7d4f56449ed1dd12f26',1,'rtx_evr.h']]], + ['evrrtxeventflagsdelete',['EvrRtxEventFlagsDelete',['../group__rtx__evr__event__flasg.html#ga10e98e35999350e9e337c716ba4dc079',1,'rtx_evr.h']]], + ['evrrtxeventflagsdestroyed',['EvrRtxEventFlagsDestroyed',['../group__rtx__evr__event__flasg.html#ga2ef153a6ee7a8d72375f81128454ede9',1,'rtx_evr.h']]], + ['evrrtxeventflagserror',['EvrRtxEventFlagsError',['../group__rtx__evr__event__flasg.html#gaa281b7380c0fa725faa722badbeb2e5f',1,'rtx_evr.h']]], + ['evrrtxeventflagsget',['EvrRtxEventFlagsGet',['../rtx__evr_8h.html#a113c32ff195c612ec2fb6a9dd5740184',1,'rtx_evr.h']]], + ['evrrtxeventflagsgetname',['EvrRtxEventFlagsGetName',['../group__rtx__evr__event__flasg.html#gae9ebcbc09a1c15c719d95fe7b8c2ee18',1,'rtx_evr.h']]], + ['evrrtxeventflagsnew',['EvrRtxEventFlagsNew',['../group__rtx__evr__event__flasg.html#gae798cdc4cb10ada732e592318037cba7',1,'rtx_evr.h']]], + ['evrrtxeventflagsset',['EvrRtxEventFlagsSet',['../rtx__evr_8h.html#a5e5c9bd8a0522fc9301782edd6e5ec1f',1,'rtx_evr.h']]], + ['evrrtxeventflagssetdone',['EvrRtxEventFlagsSetDone',['../rtx__evr_8h.html#a5b1b471923918ad294d16255d43ab306',1,'rtx_evr.h']]], + ['evrrtxeventflagswait',['EvrRtxEventFlagsWait',['../rtx__evr_8h.html#ac8361874ffdd854e3778f21d070fed24',1,'rtx_evr.h']]], + ['evrrtxeventflagswaitcompleted',['EvrRtxEventFlagsWaitCompleted',['../rtx__evr_8h.html#a7b446f241c971db432ebac5d176bd9de',1,'rtx_evr.h']]], + ['evrrtxeventflagswaitnotcompleted',['EvrRtxEventFlagsWaitNotCompleted',['../rtx__evr_8h.html#a66f32e4dddc68cdfd56c32b88b7f13ff',1,'rtx_evr.h']]], + ['evrrtxeventflagswaitpending',['EvrRtxEventFlagsWaitPending',['../rtx__evr_8h.html#afd598e0b02a31083fb41626d68fa489e',1,'rtx_evr.h']]], + ['evrrtxeventflagswaittimeout',['EvrRtxEventFlagsWaitTimeout',['../group__rtx__evr__event__flasg.html#ga877235cbe04188b831b70a3c2237c827',1,'rtx_evr.h']]], + ['evrrtxkernelerror',['EvrRtxKernelError',['../group__rtx__evr__kernel.html#ga2a38154886e6293e127bafcfb6f7d609',1,'rtx_evr.h']]], + ['evrrtxkernelgetinfo',['EvrRtxKernelGetInfo',['../group__rtx__evr__kernel.html#ga4c2a175b79d39d70a4a5112e270d03f2',1,'rtx_evr.h']]], + ['evrrtxkernelgetstate',['EvrRtxKernelGetState',['../group__rtx__evr__kernel.html#gad6407e9ff0910629b041866bd801075a',1,'rtx_evr.h']]], + ['evrrtxkernelgetsystimercount',['EvrRtxKernelGetSysTimerCount',['../group__rtx__evr__kernel.html#gafb6530be8201b119015a3f45d66c2f09',1,'rtx_evr.h']]], + ['evrrtxkernelgetsystimerfreq',['EvrRtxKernelGetSysTimerFreq',['../group__rtx__evr__kernel.html#gaf2bdfcb7b099295c7b0123abe88e10a3',1,'rtx_evr.h']]], + ['evrrtxkernelgettickcount',['EvrRtxKernelGetTickCount',['../group__rtx__evr__kernel.html#ga64431a63437506a6f7fe22637d4891c5',1,'rtx_evr.h']]], + ['evrrtxkernelgettickfreq',['EvrRtxKernelGetTickFreq',['../group__rtx__evr__kernel.html#ga7404f3a22af84ad4091c24811fc1bf87',1,'rtx_evr.h']]], + ['evrrtxkernelinforetrieved',['EvrRtxKernelInfoRetrieved',['../group__rtx__evr__kernel.html#gaf09b8cd94ad2384e3ab518f0df94a651',1,'rtx_evr.h']]], + ['evrrtxkernelinitialize',['EvrRtxKernelInitialize',['../group__rtx__evr__kernel.html#ga7e84d337b452f647c3a3d6937abd6292',1,'rtx_evr.h']]], + ['evrrtxkernelinitialized',['EvrRtxKernelInitialized',['../group__rtx__evr__kernel.html#ga5db8d306617656bfec12638e17584d66',1,'rtx_evr.h']]], + ['evrrtxkernellock',['EvrRtxKernelLock',['../group__rtx__evr__kernel.html#ga1d0340812c29274c6150fa72288e0612',1,'rtx_evr.h']]], + ['evrrtxkernellocked',['EvrRtxKernelLocked',['../group__rtx__evr__kernel.html#gac18ea91ffcae01e893304609a3c6cdc3',1,'rtx_evr.h']]], + ['evrrtxkernellockrestored',['EvrRtxKernelLockRestored',['../group__rtx__evr__kernel.html#gaf7be1022a33c13fb44f4059f5636b75a',1,'rtx_evr.h']]], + ['evrrtxkernelrestorelock',['EvrRtxKernelRestoreLock',['../group__rtx__evr__kernel.html#ga812fdd14d6c40072cc40aec742d4869e',1,'rtx_evr.h']]], + ['evrrtxkernelresume',['EvrRtxKernelResume',['../group__rtx__evr__kernel.html#ga9a8cac0fed8d3cf06f7301c944ad26d1',1,'rtx_evr.h']]], + ['evrrtxkernelresumed',['EvrRtxKernelResumed',['../group__rtx__evr__kernel.html#ga26e0a22f49576824d853fb434cf6b079',1,'rtx_evr.h']]], + ['evrrtxkernelstart',['EvrRtxKernelStart',['../group__rtx__evr__kernel.html#ga75937a761dd488600d2525a532808d2b',1,'rtx_evr.h']]], + ['evrrtxkernelstarted',['EvrRtxKernelStarted',['../group__rtx__evr__kernel.html#ga28043ffc76fec09e6c8763a9a71b7f2a',1,'rtx_evr.h']]], + ['evrrtxkernelsuspend',['EvrRtxKernelSuspend',['../group__rtx__evr__kernel.html#gac3abd78a9d3f3a6adc698e2929e1c32c',1,'rtx_evr.h']]], + ['evrrtxkernelsuspended',['EvrRtxKernelSuspended',['../group__rtx__evr__kernel.html#gabdaa26d7774111af4913b5d6669d0f85',1,'rtx_evr.h']]], + ['evrrtxkernelunlock',['EvrRtxKernelUnlock',['../group__rtx__evr__kernel.html#gabe14acf14ed2611a3ba1f3b280fbfd8c',1,'rtx_evr.h']]], + ['evrrtxkernelunlocked',['EvrRtxKernelUnlocked',['../group__rtx__evr__kernel.html#ga5cc909465e8df09c9231782e0c45e374',1,'rtx_evr.h']]], + ['evrrtxmemoryalloc',['EvrRtxMemoryAlloc',['../group__rtx__evr__memory.html#gae1818917a5e085f92a03039ffaf2bad4',1,'rtx_evr.h']]], + ['evrrtxmemoryblockalloc',['EvrRtxMemoryBlockAlloc',['../group__rtx__evr__memory.html#ga71c0df6f932436b54d7d641a440586db',1,'rtx_evr.h']]], + ['evrrtxmemoryblockfree',['EvrRtxMemoryBlockFree',['../group__rtx__evr__memory.html#ga69c2139620def7c5e59f6b1249857949',1,'rtx_evr.h']]], + ['evrrtxmemoryblockinit',['EvrRtxMemoryBlockInit',['../group__rtx__evr__memory.html#gac71421bbf537f2f8c9255f9f51cf7d54',1,'rtx_evr.h']]], + ['evrrtxmemoryfree',['EvrRtxMemoryFree',['../group__rtx__evr__memory.html#ga9227b18f5ea44d7caa8fadd4d539af9c',1,'rtx_evr.h']]], + ['evrrtxmemoryinit',['EvrRtxMemoryInit',['../group__rtx__evr__memory.html#ga15078f1251744140d90761e05c0fe1f2',1,'rtx_evr.h']]], + ['evrrtxmemorypoolalloc',['EvrRtxMemoryPoolAlloc',['../group__rtx__evr__memory__pool.html#ga425c8a0e13c6fb13262d99a4dcabd507',1,'rtx_evr.h']]], + ['evrrtxmemorypoolallocated',['EvrRtxMemoryPoolAllocated',['../group__rtx__evr__memory__pool.html#gad05246ee7e1f95e7f9496716515daeed',1,'rtx_evr.h']]], + ['evrrtxmemorypoolallocfailed',['EvrRtxMemoryPoolAllocFailed',['../group__rtx__evr__memory__pool.html#gaf511fce5389dde6fd3277e3469c72fd9',1,'rtx_evr.h']]], + ['evrrtxmemorypoolallocpending',['EvrRtxMemoryPoolAllocPending',['../group__rtx__evr__memory__pool.html#ga2fbd33e3d84b4f37e9f9b80576b26907',1,'rtx_evr.h']]], + ['evrrtxmemorypoolalloctimeout',['EvrRtxMemoryPoolAllocTimeout',['../group__rtx__evr__memory__pool.html#ga0e144530d45959126018ad74bae7a6ed',1,'rtx_evr.h']]], + ['evrrtxmemorypoolcreated',['EvrRtxMemoryPoolCreated',['../group__rtx__evr__memory__pool.html#gadad71c7b04493c03647ca0929ea087b1',1,'rtx_evr.h']]], + ['evrrtxmemorypooldeallocated',['EvrRtxMemoryPoolDeallocated',['../group__rtx__evr__memory__pool.html#ga3e8e700baea20b88c3d13678fe7a7fb4',1,'rtx_evr.h']]], + ['evrrtxmemorypooldelete',['EvrRtxMemoryPoolDelete',['../group__rtx__evr__memory__pool.html#ga64ae703ad556f25b105e3eae85b582b8',1,'rtx_evr.h']]], + ['evrrtxmemorypooldestroyed',['EvrRtxMemoryPoolDestroyed',['../group__rtx__evr__memory__pool.html#ga853e1867a4b65aff3f12f7be1aee5ce4',1,'rtx_evr.h']]], + ['evrrtxmemorypoolerror',['EvrRtxMemoryPoolError',['../group__rtx__evr__memory__pool.html#ga7e1a37b0c5dd0a97507c025ab1a62ec8',1,'rtx_evr.h']]], + ['evrrtxmemorypoolfree',['EvrRtxMemoryPoolFree',['../group__rtx__evr__memory__pool.html#ga46bc3ef3b1ca2e4cfb914f58d0efe92e',1,'rtx_evr.h']]], + ['evrrtxmemorypoolfreefailed',['EvrRtxMemoryPoolFreeFailed',['../group__rtx__evr__memory__pool.html#gad75c377c00ae23caf7b4c3b77a0b46d1',1,'rtx_evr.h']]], + ['evrrtxmemorypoolgetblocksize',['EvrRtxMemoryPoolGetBlockSize',['../group__rtx__evr__memory__pool.html#gaf79f0e1eb41d42566ba9023be7e442c5',1,'rtx_evr.h']]], + ['evrrtxmemorypoolgetcapacity',['EvrRtxMemoryPoolGetCapacity',['../group__rtx__evr__memory__pool.html#gaed36f26a548d40e2a3d5b81c8695f287',1,'rtx_evr.h']]], + ['evrrtxmemorypoolgetcount',['EvrRtxMemoryPoolGetCount',['../group__rtx__evr__memory__pool.html#ga668bc3e627d9b74b6e8259a667e05846',1,'rtx_evr.h']]], + ['evrrtxmemorypoolgetname',['EvrRtxMemoryPoolGetName',['../group__rtx__evr__memory__pool.html#gaeface1ee4957cdb59292e13c38a672d7',1,'rtx_evr.h']]], + ['evrrtxmemorypoolgetspace',['EvrRtxMemoryPoolGetSpace',['../group__rtx__evr__memory__pool.html#ga4bee4e3e41bdef94046dc059f16ca7ce',1,'rtx_evr.h']]], + ['evrrtxmemorypoolnew',['EvrRtxMemoryPoolNew',['../group__rtx__evr__memory__pool.html#gaf2fd4c91acf1379e93cd9886c515b9c5',1,'rtx_evr.h']]], + ['evrrtxmessagequeuecreated',['EvrRtxMessageQueueCreated',['../group__rtx__evr__message__queue.html#ga36d6982377c1f54a227ba6fbb9458b79',1,'rtx_evr.h']]], + ['evrrtxmessagequeuedelete',['EvrRtxMessageQueueDelete',['../group__rtx__evr__message__queue.html#gad11606ef82f5b82f291bf64adfc805e4',1,'rtx_evr.h']]], + ['evrrtxmessagequeuedestroyed',['EvrRtxMessageQueueDestroyed',['../group__rtx__evr__message__queue.html#ga3bbf02128c31e5cc7ef4c78cdbec508c',1,'rtx_evr.h']]], + ['evrrtxmessagequeueerror',['EvrRtxMessageQueueError',['../group__rtx__evr__message__queue.html#ga8ded1d43703e0885a81e65251c6df405',1,'rtx_evr.h']]], + ['evrrtxmessagequeueget',['EvrRtxMessageQueueGet',['../group__rtx__evr__message__queue.html#ga0826c1d05d3a99afb8682f0ca3f7fd62',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetcapacity',['EvrRtxMessageQueueGetCapacity',['../group__rtx__evr__message__queue.html#gad423a0be13d65e98d9ae08de9c399615',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetcount',['EvrRtxMessageQueueGetCount',['../group__rtx__evr__message__queue.html#ga145f0c464382dc71ff3b1c624b8bd570',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetmsgsize',['EvrRtxMessageQueueGetMsgSize',['../group__rtx__evr__message__queue.html#ga3d6348bed3937de29765ed4d7d07fac8',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetname',['EvrRtxMessageQueueGetName',['../group__rtx__evr__message__queue.html#gad0ef8ee59d2ec189351c5884f5f8e945',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetpending',['EvrRtxMessageQueueGetPending',['../group__rtx__evr__message__queue.html#ga11e3df32a66d5240b277375cbb5d3c83',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegetspace',['EvrRtxMessageQueueGetSpace',['../group__rtx__evr__message__queue.html#ga6cfce7336f58505a2379a8a71f477d2f',1,'rtx_evr.h']]], + ['evrrtxmessagequeuegettimeout',['EvrRtxMessageQueueGetTimeout',['../group__rtx__evr__message__queue.html#ga5e699de7401c46fd0e8bc19e398dc5a8',1,'rtx_evr.h']]], + ['evrrtxmessagequeueinserted',['EvrRtxMessageQueueInserted',['../group__rtx__evr__message__queue.html#gaa30c5b375d4050ad7d99ba094821bf52',1,'rtx_evr.h']]], + ['evrrtxmessagequeueinsertpending',['EvrRtxMessageQueueInsertPending',['../group__rtx__evr__message__queue.html#ga8440223b9d48145df5505489e7c6f7d9',1,'rtx_evr.h']]], + ['evrrtxmessagequeuenew',['EvrRtxMessageQueueNew',['../group__rtx__evr__message__queue.html#gaa7b18f18f3f53d6afb39ac1abe257000',1,'rtx_evr.h']]], + ['evrrtxmessagequeuenotinserted',['EvrRtxMessageQueueNotInserted',['../group__rtx__evr__message__queue.html#ga2922125d8ac63fd800dc3b7888fd3f3c',1,'rtx_evr.h']]], + ['evrrtxmessagequeuenotretrieved',['EvrRtxMessageQueueNotRetrieved',['../group__rtx__evr__message__queue.html#ga22bfb7d1c2f6e3e9fea9d3267b2d6988',1,'rtx_evr.h']]], + ['evrrtxmessagequeueput',['EvrRtxMessageQueuePut',['../group__rtx__evr__message__queue.html#ga401536a603e5a805cc6089b4de11d3d3',1,'rtx_evr.h']]], + ['evrrtxmessagequeueputpending',['EvrRtxMessageQueuePutPending',['../group__rtx__evr__message__queue.html#ga4b1b6191c6ca87dff4714e25b5845828',1,'rtx_evr.h']]], + ['evrrtxmessagequeueputtimeout',['EvrRtxMessageQueuePutTimeout',['../group__rtx__evr__message__queue.html#ga7394ca2d88255470f7ba0bb2bff12e99',1,'rtx_evr.h']]], + ['evrrtxmessagequeuereset',['EvrRtxMessageQueueReset',['../group__rtx__evr__message__queue.html#ga91b8c8630c7d89b6b6dbb74d4fc81ba4',1,'rtx_evr.h']]], + ['evrrtxmessagequeueresetdone',['EvrRtxMessageQueueResetDone',['../group__rtx__evr__message__queue.html#ga3947d4a7ac86ee7a50052c9eb4cd5432',1,'rtx_evr.h']]], + ['evrrtxmessagequeueretrieved',['EvrRtxMessageQueueRetrieved',['../group__rtx__evr__message__queue.html#gab340b38df5d8bf2a1182fd18f2d3a6c4',1,'rtx_evr.h']]], + ['evrrtxmutexacquire',['EvrRtxMutexAcquire',['../group__rtx__evr__mutex.html#ga913c46223d91000fedab624d0f4e53f8',1,'rtx_evr.h']]], + ['evrrtxmutexacquired',['EvrRtxMutexAcquired',['../group__rtx__evr__mutex.html#ga697ec95e014a30a3676690a8d217f546',1,'rtx_evr.h']]], + ['evrrtxmutexacquirepending',['EvrRtxMutexAcquirePending',['../group__rtx__evr__mutex.html#gaddc9bb3c619b92a786ee5255ec65eaca',1,'rtx_evr.h']]], + ['evrrtxmutexacquiretimeout',['EvrRtxMutexAcquireTimeout',['../group__rtx__evr__mutex.html#ga4c4780cf766e9d2c6e8c26f206fba607',1,'rtx_evr.h']]], + ['evrrtxmutexcreated',['EvrRtxMutexCreated',['../group__rtx__evr__mutex.html#ga712b32609cfb3ceded746ee6a86d2442',1,'rtx_evr.h']]], + ['evrrtxmutexdelete',['EvrRtxMutexDelete',['../group__rtx__evr__mutex.html#gaaadf1b9cf9a62f4e61742069b95daf68',1,'rtx_evr.h']]], + ['evrrtxmutexdestroyed',['EvrRtxMutexDestroyed',['../group__rtx__evr__mutex.html#gaa3feba455090d50295cbf4b1447f3f87',1,'rtx_evr.h']]], + ['evrrtxmutexerror',['EvrRtxMutexError',['../group__rtx__evr__mutex.html#ga47388f06c025938facfddd95851d666f',1,'rtx_evr.h']]], + ['evrrtxmutexgetname',['EvrRtxMutexGetName',['../group__rtx__evr__mutex.html#ga457302507cedf0ea969cbb110af606b8',1,'rtx_evr.h']]], + ['evrrtxmutexgetowner',['EvrRtxMutexGetOwner',['../group__rtx__evr__mutex.html#ga89284c1927aa646535ff804f1aeda720',1,'rtx_evr.h']]], + ['evrrtxmutexnew',['EvrRtxMutexNew',['../group__rtx__evr__mutex.html#ga51f59bf99b315f016ca752eddd1911d5',1,'rtx_evr.h']]], + ['evrrtxmutexnotacquired',['EvrRtxMutexNotAcquired',['../group__rtx__evr__mutex.html#ga5d2b957c02fcdcc0617479b93a56f6af',1,'rtx_evr.h']]], + ['evrrtxmutexrelease',['EvrRtxMutexRelease',['../group__rtx__evr__mutex.html#ga3fe98bfc9cbea52f578aa5a202305442',1,'rtx_evr.h']]], + ['evrrtxmutexreleased',['EvrRtxMutexReleased',['../group__rtx__evr__mutex.html#ga561c8898b912ea8eace4e6ba606210e5',1,'rtx_evr.h']]], + ['evrrtxsemaphoreacquire',['EvrRtxSemaphoreAcquire',['../group__rtx__evr__semaphore.html#gafd91c9bb268a48b394571a9fc1809019',1,'rtx_evr.h']]], + ['evrrtxsemaphoreacquired',['EvrRtxSemaphoreAcquired',['../group__rtx__evr__semaphore.html#ga4d1f85595cc0802cf8cac89fd8f88b5d',1,'rtx_evr.h']]], + ['evrrtxsemaphoreacquirepending',['EvrRtxSemaphoreAcquirePending',['../group__rtx__evr__semaphore.html#gabbaaf85deaf4645414987fc1c3289343',1,'rtx_evr.h']]], + ['evrrtxsemaphoreacquiretimeout',['EvrRtxSemaphoreAcquireTimeout',['../group__rtx__evr__semaphore.html#ga852798d5e14cda14484564ac4d7f5a4b',1,'rtx_evr.h']]], + ['evrrtxsemaphorecreated',['EvrRtxSemaphoreCreated',['../group__rtx__evr__semaphore.html#ga31f9d55abcc5f398ea3810177cbf2bf3',1,'rtx_evr.h']]], + ['evrrtxsemaphoredelete',['EvrRtxSemaphoreDelete',['../group__rtx__evr__semaphore.html#gaeb0605679ad9f686dd0f40610c8af772',1,'rtx_evr.h']]], + ['evrrtxsemaphoredestroyed',['EvrRtxSemaphoreDestroyed',['../group__rtx__evr__semaphore.html#gaad8d8a2844e948b00f02e8620c431c9c',1,'rtx_evr.h']]], + ['evrrtxsemaphoreerror',['EvrRtxSemaphoreError',['../group__rtx__evr__semaphore.html#ga96a0209384296a283c7b1d23a3395fa1',1,'rtx_evr.h']]], + ['evrrtxsemaphoregetcount',['EvrRtxSemaphoreGetCount',['../group__rtx__evr__semaphore.html#ga17f21ffa4ec39c50ce203e6985dd0deb',1,'rtx_evr.h']]], + ['evrrtxsemaphoregetname',['EvrRtxSemaphoreGetName',['../group__rtx__evr__semaphore.html#ga17d8aa861b6e669cc68c3c41e3e12332',1,'rtx_evr.h']]], + ['evrrtxsemaphorenew',['EvrRtxSemaphoreNew',['../group__rtx__evr__semaphore.html#ga5639f03e935ab79844777664a518c2ec',1,'rtx_evr.h']]], + ['evrrtxsemaphorenotacquired',['EvrRtxSemaphoreNotAcquired',['../group__rtx__evr__semaphore.html#ga53eb40f5251e9464b46cc153fe8b26d8',1,'rtx_evr.h']]], + ['evrrtxsemaphorerelease',['EvrRtxSemaphoreRelease',['../group__rtx__evr__semaphore.html#ga0a9f3c7dbf89d3f155a96524e7195630',1,'rtx_evr.h']]], + ['evrrtxsemaphorereleased',['EvrRtxSemaphoreReleased',['../group__rtx__evr__semaphore.html#ga814dc5c7d95e7d1bfb30ce0f472ae420',1,'rtx_evr.h']]], + ['evrrtxthreadblocked',['EvrRtxThreadBlocked',['../group__rtx__evr__thread.html#gab9efd66ed2edb439c5081806c9b63cf9',1,'rtx_evr.h']]], + ['evrrtxthreadcreated',['EvrRtxThreadCreated',['../group__rtx__evr__thread.html#ga5bfa3bc241aea59ebe9bc1edcf6b78d8',1,'rtx_evr.h']]], + ['evrrtxthreaddelay',['EvrRtxThreadDelay',['../group__rtx__evr__thread.html#gadd45d32305aa45668a36f2c9f0f4c758',1,'rtx_evr.h']]], + ['evrrtxthreaddelaycompleted',['EvrRtxThreadDelayCompleted',['../group__rtx__evr__thread.html#gab46562848142ce5ea806d629fd000168',1,'rtx_evr.h']]], + ['evrrtxthreaddelayuntil',['EvrRtxThreadDelayUntil',['../group__rtx__evr__thread.html#gaf59defd6c171d2c3d3508e7136278db2',1,'rtx_evr.h']]], + ['evrrtxthreaddestroyed',['EvrRtxThreadDestroyed',['../group__rtx__evr__thread.html#gaa5aa707fc2d6b44bfcb86bce2e2e90f3',1,'rtx_evr.h']]], + ['evrrtxthreaddetach',['EvrRtxThreadDetach',['../group__rtx__evr__thread.html#ga02088c2d38cbc31a46675334f63f37f5',1,'rtx_evr.h']]], + ['evrrtxthreaddetached',['EvrRtxThreadDetached',['../group__rtx__evr__thread.html#gac60670562ed1efbfbc61036d881c8af9',1,'rtx_evr.h']]], + ['evrrtxthreadenumerate',['EvrRtxThreadEnumerate',['../group__rtx__evr__thread.html#ga1999d77992b03347abdca7ec17f91cca',1,'rtx_evr.h']]], + ['evrrtxthreaderror',['EvrRtxThreadError',['../group__rtx__evr__thread.html#ga4a2879b06201a29d8c223253d41cca43',1,'rtx_evr.h']]], + ['evrrtxthreadexit',['EvrRtxThreadExit',['../group__rtx__evr__thread.html#gaa557f9732a8a2120f08cfb2694aa26fb',1,'rtx_evr.h']]], + ['evrrtxthreadflagsclear',['EvrRtxThreadFlagsClear',['../rtx__evr_8h.html#ac8ddc747c72f7fc5cfa58edcee56b82d',1,'rtx_evr.h']]], + ['evrrtxthreadflagscleardone',['EvrRtxThreadFlagsClearDone',['../rtx__evr_8h.html#aad13b17507cc07a4a1e37a5653489943',1,'rtx_evr.h']]], + ['evrrtxthreadflagsget',['EvrRtxThreadFlagsGet',['../rtx__evr_8h.html#aab1a30a0ac3dfa588ededbfad52bae30',1,'rtx_evr.h']]], + ['evrrtxthreadflagsset',['EvrRtxThreadFlagsSet',['../rtx__evr_8h.html#ac356c777af86c2d8d9250cbffc516e1d',1,'rtx_evr.h']]], + ['evrrtxthreadflagssetdone',['EvrRtxThreadFlagsSetDone',['../rtx__evr_8h.html#abd447773c02e235a8d0bb96dd9bb1c4f',1,'rtx_evr.h']]], + ['evrrtxthreadflagswait',['EvrRtxThreadFlagsWait',['../rtx__evr_8h.html#aad860c571b9b083ff2889fb76fb619f1',1,'rtx_evr.h']]], + ['evrrtxthreadflagswaitcompleted',['EvrRtxThreadFlagsWaitCompleted',['../rtx__evr_8h.html#a01396074495b21270c75185f63c497d7',1,'rtx_evr.h']]], + ['evrrtxthreadflagswaitnotcompleted',['EvrRtxThreadFlagsWaitNotCompleted',['../rtx__evr_8h.html#adf6b9f4882f62a65b4e06e1b3e5c9c5b',1,'rtx_evr.h']]], + ['evrrtxthreadflagswaitpending',['EvrRtxThreadFlagsWaitPending',['../rtx__evr_8h.html#ad09ec9317a4440e5228870b750e9860e',1,'rtx_evr.h']]], + ['evrrtxthreadflagswaittimeout',['EvrRtxThreadFlagsWaitTimeout',['../group__rtx__evr__thread.html#gadbbee398f4fab418c9b8115fc7392ff8',1,'rtx_evr.h']]], + ['evrrtxthreadgetcount',['EvrRtxThreadGetCount',['../group__rtx__evr__thread.html#ga6d5932965736e0f2f35fe2d87bd622e7',1,'rtx_evr.h']]], + ['evrrtxthreadgetid',['EvrRtxThreadGetId',['../group__rtx__evr__thread.html#ga40c0d21a5c0d128f09966aeeca37ecba',1,'rtx_evr.h']]], + ['evrrtxthreadgetname',['EvrRtxThreadGetName',['../group__rtx__evr__thread.html#ga4f849a33d2c95754b11a499d77503b5c',1,'rtx_evr.h']]], + ['evrrtxthreadgetpriority',['EvrRtxThreadGetPriority',['../group__rtx__evr__thread.html#gada73306deca99987b104aa9840fdd4e2',1,'rtx_evr.h']]], + ['evrrtxthreadgetstacksize',['EvrRtxThreadGetStackSize',['../group__rtx__evr__thread.html#ga1200f51e9152810e76386e241904427c',1,'rtx_evr.h']]], + ['evrrtxthreadgetstackspace',['EvrRtxThreadGetStackSpace',['../group__rtx__evr__thread.html#ga4fd48ef48eefb01a6252cfc02ea169ab',1,'rtx_evr.h']]], + ['evrrtxthreadgetstate',['EvrRtxThreadGetState',['../group__rtx__evr__thread.html#ga1c3120fb155ca19ea5c9089a446ef19d',1,'rtx_evr.h']]], + ['evrrtxthreadjoin',['EvrRtxThreadJoin',['../group__rtx__evr__thread.html#ga392bb7a8dcd6d126a5e424ab01aa8a80',1,'rtx_evr.h']]], + ['evrrtxthreadjoined',['EvrRtxThreadJoined',['../group__rtx__evr__thread.html#ga86ac910ac88d8fe54206a12d7ed69a27',1,'rtx_evr.h']]], + ['evrrtxthreadjoinpending',['EvrRtxThreadJoinPending',['../group__rtx__evr__thread.html#ga47b64cfdc5c5410dde2c5d9145c7d79b',1,'rtx_evr.h']]], + ['evrrtxthreadnew',['EvrRtxThreadNew',['../group__rtx__evr__thread.html#ga396ce41f68401a885f0ae46a54e8dd1f',1,'rtx_evr.h']]], + ['evrrtxthreadpreempted',['EvrRtxThreadPreempted',['../group__rtx__evr__thread.html#gabe470d5bb1373c59c51470fd20b55bcb',1,'rtx_evr.h']]], + ['evrrtxthreadresume',['EvrRtxThreadResume',['../group__rtx__evr__thread.html#gaf41ff549329cf2feb4a1efe49c518e30',1,'rtx_evr.h']]], + ['evrrtxthreadresumed',['EvrRtxThreadResumed',['../group__rtx__evr__thread.html#ga8b25f2548a9f3c069431131169d170ac',1,'rtx_evr.h']]], + ['evrrtxthreadsetpriority',['EvrRtxThreadSetPriority',['../group__rtx__evr__thread.html#gabf4a015bd3fb2a33c0d105a871aaba72',1,'rtx_evr.h']]], + ['evrrtxthreadsuspend',['EvrRtxThreadSuspend',['../group__rtx__evr__thread.html#gaa268fe19f933b8d2a830063560694561',1,'rtx_evr.h']]], + ['evrrtxthreadsuspended',['EvrRtxThreadSuspended',['../group__rtx__evr__thread.html#gab0d959bc625cb3e7ddd6bf7c302f631e',1,'rtx_evr.h']]], + ['evrrtxthreadswitched',['EvrRtxThreadSwitched',['../group__rtx__evr__thread.html#gae3bc50d5f154463c7f6647544bb5ecab',1,'rtx_evr.h']]], + ['evrrtxthreadterminate',['EvrRtxThreadTerminate',['../group__rtx__evr__thread.html#ga6abe7d167bd5bb91c3d6bf6d2bb417aa',1,'rtx_evr.h']]], + ['evrrtxthreadunblocked',['EvrRtxThreadUnblocked',['../group__rtx__evr__thread.html#ga3faae4d941ddecfe773ef9f3efe8b901',1,'rtx_evr.h']]], + ['evrrtxthreadyield',['EvrRtxThreadYield',['../group__rtx__evr__thread.html#gafed41f1b6bcdde658ca306f8a6d7ac7e',1,'rtx_evr.h']]], + ['evrrtxtimercallback',['EvrRtxTimerCallback',['../group__rtx__evr__timer.html#gacd46f9d31d256c27c72e47d5be5e9d09',1,'rtx_evr.h']]], + ['evrrtxtimercreated',['EvrRtxTimerCreated',['../group__rtx__evr__timer.html#ga71dd40a818f1098052915bbfb6c17e88',1,'rtx_evr.h']]], + ['evrrtxtimerdelete',['EvrRtxTimerDelete',['../group__rtx__evr__timer.html#gaea5811cc74861117eccbcbb997d36133',1,'rtx_evr.h']]], + ['evrrtxtimerdestroyed',['EvrRtxTimerDestroyed',['../group__rtx__evr__timer.html#ga474f3bd3ed38945b087f37fd709560b7',1,'rtx_evr.h']]], + ['evrrtxtimererror',['EvrRtxTimerError',['../group__rtx__evr__timer.html#gaf1b516bf697288e67fe797662b1873b0',1,'rtx_evr.h']]], + ['evrrtxtimergetname',['EvrRtxTimerGetName',['../group__rtx__evr__timer.html#ga601e3617903900524062c4f9069d052f',1,'rtx_evr.h']]], + ['evrrtxtimerisrunning',['EvrRtxTimerIsRunning',['../group__rtx__evr__timer.html#ga6fa5a23f241d765ae22ff1862c6f3b3f',1,'rtx_evr.h']]], + ['evrrtxtimernew',['EvrRtxTimerNew',['../group__rtx__evr__timer.html#ga6387808c22d6e186057ed744618d2487',1,'rtx_evr.h']]], + ['evrrtxtimerstart',['EvrRtxTimerStart',['../group__rtx__evr__timer.html#ga453d82bfa65dfbbaffbd5b4ff4f050b2',1,'rtx_evr.h']]], + ['evrrtxtimerstarted',['EvrRtxTimerStarted',['../group__rtx__evr__timer.html#gab0dbdf460fc26b25f3987c44fb0ebdeb',1,'rtx_evr.h']]], + ['evrrtxtimerstop',['EvrRtxTimerStop',['../group__rtx__evr__timer.html#ga27cf05adc61d30a0e68f380c96ea5f93',1,'rtx_evr.h']]], + ['evrrtxtimerstopped',['EvrRtxTimerStopped',['../group__rtx__evr__timer.html#gaccd59c7ae2351e0a1bf96cdb749c049f',1,'rtx_evr.h']]] +]; diff --git a/docs/RTOS2/html/search/functions_1.html b/docs/RTOS2/html/search/functions_1.html new file mode 100644 index 0000000..3b4eacf --- /dev/null +++ b/docs/RTOS2/html/search/functions_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/functions_1.js b/docs/RTOS2/html/search/functions_1.js new file mode 100644 index 0000000..7c796de --- /dev/null +++ b/docs/RTOS2/html/search/functions_1.js @@ -0,0 +1,94 @@ +var searchData= +[ + ['os_5ftick_5facknowledgeirq',['OS_Tick_AcknowledgeIRQ',['../group__CMSIS__RTOS__TickAPI.html#ga57065ec4b281504ad4de13a419870b4f',1,'os_tick.h']]], + ['os_5ftick_5fdisable',['OS_Tick_Disable',['../group__CMSIS__RTOS__TickAPI.html#ga5e325c304fef5003b1dc31906f6a3056',1,'os_tick.h']]], + ['os_5ftick_5fenable',['OS_Tick_Enable',['../group__CMSIS__RTOS__TickAPI.html#ga3e47971bf3a02599d9ecb32208adafec',1,'os_tick.h']]], + ['os_5ftick_5fgetclock',['OS_Tick_GetClock',['../group__CMSIS__RTOS__TickAPI.html#ga936217ea28236fb57648973e0d8f627a',1,'os_tick.h']]], + ['os_5ftick_5fgetcount',['OS_Tick_GetCount',['../group__CMSIS__RTOS__TickAPI.html#gaa64a145a554f1e5077848938d7f39c92',1,'os_tick.h']]], + ['os_5ftick_5fgetinterval',['OS_Tick_GetInterval',['../group__CMSIS__RTOS__TickAPI.html#ga123151dc19d5a94a68f12cdbf61a9bb5',1,'os_tick.h']]], + ['os_5ftick_5fgetirqn',['OS_Tick_GetIRQn',['../group__CMSIS__RTOS__TickAPI.html#gaa8b4eca23e3ffe2df403291958cdc905',1,'os_tick.h']]], + ['os_5ftick_5fgetoverflow',['OS_Tick_GetOverflow',['../group__CMSIS__RTOS__TickAPI.html#ga1f9a593126b7f0b66fc526c2cebd6192',1,'os_tick.h']]], + ['os_5ftick_5fsetup',['OS_Tick_Setup',['../group__CMSIS__RTOS__TickAPI.html#ga5eeffb4d9dc6c6802fee8898096d9a59',1,'os_tick.h']]], + ['osdelay',['osDelay',['../group__CMSIS__RTOS__Wait.html#gaf6055a51390ef65b6b6edc28bf47322e',1,'cmsis_os2.h']]], + ['osdelayuntil',['osDelayUntil',['../group__CMSIS__RTOS__Wait.html#ga3c807924c2d6d43bc2ffb49da3f7f3a1',1,'cmsis_os2.h']]], + ['oseventflagsclear',['osEventFlagsClear',['../group__CMSIS__RTOS__EventFlags.html#ga93bf258ca0007c6641fbe8e4f2b8a1e5',1,'cmsis_os2.h']]], + ['oseventflagsdelete',['osEventFlagsDelete',['../group__CMSIS__RTOS__EventFlags.html#ga7c4acf2fb0d506ec82905dee53fb5435',1,'cmsis_os2.h']]], + ['oseventflagsget',['osEventFlagsGet',['../group__CMSIS__RTOS__EventFlags.html#ga8bda3185f46bfd278cea8a6cf357677d',1,'cmsis_os2.h']]], + ['oseventflagsgetname',['osEventFlagsGetName',['../group__CMSIS__RTOS__EventFlags.html#ga59f4ddf0ee8c395b1672bb978d1cfc88',1,'cmsis_os2.h']]], + ['oseventflagsnew',['osEventFlagsNew',['../group__CMSIS__RTOS__EventFlags.html#gab14b1caeb12ffa42cce1bfe889cd07df',1,'cmsis_os2.h']]], + ['oseventflagsset',['osEventFlagsSet',['../group__CMSIS__RTOS__EventFlags.html#ga33b71d14cecf90b4e72639dd19f23a5e',1,'cmsis_os2.h']]], + ['oseventflagswait',['osEventFlagsWait',['../group__CMSIS__RTOS__EventFlags.html#ga52acb34a8322e58020227344fe662b4e',1,'cmsis_os2.h']]], + ['oskernelgetinfo',['osKernelGetInfo',['../group__CMSIS__RTOS__KernelCtrl.html#ga6f7764e7250c5c5364c00c45a5d1d199',1,'cmsis_os2.h']]], + ['oskernelgetstate',['osKernelGetState',['../group__CMSIS__RTOS__KernelCtrl.html#ga48b69b81012fce051f639be288b243ba',1,'cmsis_os2.h']]], + ['oskernelgetsystimercount',['osKernelGetSysTimerCount',['../group__CMSIS__RTOS__KernelCtrl.html#gae0fcaff6cecfb4013bb556c87afcd7d2',1,'cmsis_os2.h']]], + ['oskernelgetsystimerfreq',['osKernelGetSysTimerFreq',['../group__CMSIS__RTOS__KernelCtrl.html#ga4d69215a93220f72be3684cad582f16a',1,'cmsis_os2.h']]], + ['oskernelgettickcount',['osKernelGetTickCount',['../group__CMSIS__RTOS__KernelCtrl.html#ga84bcdbf2fb76b10c8df4e439f0c7e11b',1,'cmsis_os2.h']]], + ['oskernelgettickfreq',['osKernelGetTickFreq',['../group__CMSIS__RTOS__KernelCtrl.html#ga7a8d7bd927eaaa58999f91d7d6310cee',1,'cmsis_os2.h']]], + ['oskernelinitialize',['osKernelInitialize',['../group__CMSIS__RTOS__KernelCtrl.html#gae818f6611d25ba3140bede410a52d659',1,'cmsis_os2.h']]], + ['oskernellock',['osKernelLock',['../group__CMSIS__RTOS__KernelCtrl.html#ga948609ee930d9b38336b9e1c2a4dfe12',1,'cmsis_os2.h']]], + ['oskernelrestorelock',['osKernelRestoreLock',['../group__CMSIS__RTOS__KernelCtrl.html#gae7d0a71b9586cbbb49fcbdf6a04f0289',1,'cmsis_os2.h']]], + ['oskernelresume',['osKernelResume',['../group__CMSIS__RTOS__KernelCtrl.html#ga8c4b4d7ed34cab73c001665d9176aced',1,'cmsis_os2.h']]], + ['oskernelstart',['osKernelStart',['../group__CMSIS__RTOS__KernelCtrl.html#ga9ae2cc00f0d89d7b6a307bba942b5221',1,'cmsis_os2.h']]], + ['oskernelsuspend',['osKernelSuspend',['../group__CMSIS__RTOS__KernelCtrl.html#gae26683e1606ec633354a2876c68f0c1f',1,'cmsis_os2.h']]], + ['oskernelunlock',['osKernelUnlock',['../group__CMSIS__RTOS__KernelCtrl.html#gaf401728b4657456198c33fe75f8d6720',1,'cmsis_os2.h']]], + ['osmemorypoolalloc',['osMemoryPoolAlloc',['../group__CMSIS__RTOS__PoolMgmt.html#ga8ead54e99ccb8f112356c88f99d38fbe',1,'cmsis_os2.h']]], + ['osmemorypooldelete',['osMemoryPoolDelete',['../group__CMSIS__RTOS__PoolMgmt.html#ga8c39e7e5cd2b9eda907466808e59d62e',1,'cmsis_os2.h']]], + ['osmemorypoolfree',['osMemoryPoolFree',['../group__CMSIS__RTOS__PoolMgmt.html#gabb4f4560daa6d1f8c8789082ee186d16',1,'cmsis_os2.h']]], + ['osmemorypoolgetblocksize',['osMemoryPoolGetBlockSize',['../group__CMSIS__RTOS__PoolMgmt.html#gab2bf059b7fa7679c3cccdaeec60b6c0e',1,'cmsis_os2.h']]], + ['osmemorypoolgetcapacity',['osMemoryPoolGetCapacity',['../group__CMSIS__RTOS__PoolMgmt.html#gad696e94bfbe28f0b6613f9303fdf6a37',1,'cmsis_os2.h']]], + ['osmemorypoolgetcount',['osMemoryPoolGetCount',['../group__CMSIS__RTOS__PoolMgmt.html#ga958a9449bff8c95ce213de98eef5739d',1,'cmsis_os2.h']]], + ['osmemorypoolgetname',['osMemoryPoolGetName',['../group__CMSIS__RTOS__PoolMgmt.html#gab414a1e138205a55820acfa277c8f386',1,'cmsis_os2.h']]], + ['osmemorypoolgetspace',['osMemoryPoolGetSpace',['../group__CMSIS__RTOS__PoolMgmt.html#ga0394cffa9479a7994e3b03c79c1cb909',1,'cmsis_os2.h']]], + ['osmemorypoolnew',['osMemoryPoolNew',['../group__CMSIS__RTOS__PoolMgmt.html#ga497ced5d72dc5cd405c4c418516220dc',1,'cmsis_os2.h']]], + ['osmessagequeuedelete',['osMessageQueueDelete',['../group__CMSIS__RTOS__Message.html#gaba987f665444e0d83fa6a3a68bc72abe',1,'cmsis_os2.h']]], + ['osmessagequeueget',['osMessageQueueGet',['../group__CMSIS__RTOS__Message.html#gad90d4959466a7a65105061da8256ab9e',1,'cmsis_os2.h']]], + ['osmessagequeuegetcapacity',['osMessageQueueGetCapacity',['../group__CMSIS__RTOS__Message.html#gac24f87d4f395e9e9c900c320e45ade8a',1,'cmsis_os2.h']]], + ['osmessagequeuegetcount',['osMessageQueueGetCount',['../group__CMSIS__RTOS__Message.html#ga6a32ac394fcff568b251c160cc3014b2',1,'cmsis_os2.h']]], + ['osmessagequeuegetmsgsize',['osMessageQueueGetMsgSize',['../group__CMSIS__RTOS__Message.html#ga96d3d84069b20359de48109e28a1a89e',1,'cmsis_os2.h']]], + ['osmessagequeuegetname',['osMessageQueueGetName',['../group__CMSIS__RTOS__Message.html#gae7cf7bf2b97a5ae481fb60fcce99247a',1,'cmsis_os2.h']]], + ['osmessagequeuegetspace',['osMessageQueueGetSpace',['../group__CMSIS__RTOS__Message.html#gaddf0904427436dd3880d46263c2dc9fa',1,'cmsis_os2.h']]], + ['osmessagequeuenew',['osMessageQueueNew',['../group__CMSIS__RTOS__Message.html#ga24e895a00f9d484db33aaf784c57bfed',1,'cmsis_os2.h']]], + ['osmessagequeueput',['osMessageQueuePut',['../group__CMSIS__RTOS__Message.html#gaa515fc8b956f721a8f72b2c505813bfc',1,'cmsis_os2.h']]], + ['osmessagequeuereset',['osMessageQueueReset',['../group__CMSIS__RTOS__Message.html#gac6dce7f9ad132d266292c2e979d861b4',1,'cmsis_os2.h']]], + ['osmutexacquire',['osMutexAcquire',['../group__CMSIS__RTOS__MutexMgmt.html#gabc54686ea0fc281823b1763422d2a924',1,'cmsis_os2.h']]], + ['osmutexdelete',['osMutexDelete',['../group__CMSIS__RTOS__MutexMgmt.html#gabee73ad227ba4587d3db12ef9bd582bc',1,'cmsis_os2.h']]], + ['osmutexgetname',['osMutexGetName',['../group__CMSIS__RTOS__MutexMgmt.html#ga00b5e58cd247a412d1afd18732d8b752',1,'cmsis_os2.h']]], + ['osmutexgetowner',['osMutexGetOwner',['../group__CMSIS__RTOS__MutexMgmt.html#ga7f9a7666df0978738cd570cb700b83fb',1,'cmsis_os2.h']]], + ['osmutexnew',['osMutexNew',['../group__CMSIS__RTOS__MutexMgmt.html#gab90920022ab944296821368ef6bb52f8',1,'cmsis_os2.h']]], + ['osmutexrelease',['osMutexRelease',['../group__CMSIS__RTOS__MutexMgmt.html#gaea629705703580ff58776bf73c8db915',1,'cmsis_os2.h']]], + ['osrtxerrornotify',['osRtxErrorNotify',['../group__rtx5__specific__functions.html#gaf1745a88f9cc60b609ab1c8076bd346d',1,'rtx_os.h']]], + ['osrtxidlethread',['osRtxIdleThread',['../group__rtx5__specific__functions.html#ga074068b8efa7074cee68a71481d0b072',1,'rtx_os.h']]], + ['ossemaphoreacquire',['osSemaphoreAcquire',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga7e94c8b242a0c81f2cc79ec22895c87b',1,'cmsis_os2.h']]], + ['ossemaphoredelete',['osSemaphoreDelete',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga81258ce9c67fa89f07cc49d2e136cd88',1,'cmsis_os2.h']]], + ['ossemaphoregetcount',['osSemaphoreGetCount',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga7559d4dff3cda9992fc5ab5de3e74c70',1,'cmsis_os2.h']]], + ['ossemaphoregetname',['osSemaphoreGetName',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga9586952051f00285f1482dbe6695bbc4',1,'cmsis_os2.h']]], + ['ossemaphorenew',['osSemaphoreNew',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga2a39806ace781a0008a4374ca701b14a',1,'cmsis_os2.h']]], + ['ossemaphorerelease',['osSemaphoreRelease',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga0abcee1b5449d7a6928fb9248c690bb6',1,'cmsis_os2.h']]], + ['osthreaddetach',['osThreadDetach',['../group__CMSIS__RTOS__ThreadMgmt.html#gaaad14cd9547341ea8109dc4e8540f1dc',1,'cmsis_os2.h']]], + ['osthreadenumerate',['osThreadEnumerate',['../group__CMSIS__RTOS__ThreadMgmt.html#ga5606604d56e21ece1a654664be877439',1,'cmsis_os2.h']]], + ['osthreadexit',['osThreadExit',['../group__CMSIS__RTOS__ThreadMgmt.html#gaddaa452dd7610e4096647a566d3556fc',1,'cmsis_os2.h']]], + ['osthreadflagsclear',['osThreadFlagsClear',['../group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga656abc1c862c5b9a2b13584c42cc0bfa',1,'cmsis_os2.h']]], + ['osthreadflagsget',['osThreadFlagsGet',['../group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga85c8d2c89466e25abbcb545d9ddd71ba',1,'cmsis_os2.h']]], + ['osthreadflagsset',['osThreadFlagsSet',['../group__CMSIS__RTOS__ThreadFlagsMgmt.html#ga6f89ef9caded1d9963c7b12b0f6412c9',1,'cmsis_os2.h']]], + ['osthreadflagswait',['osThreadFlagsWait',['../group__CMSIS__RTOS__ThreadFlagsMgmt.html#gac11542ad6300b600f872fc96e340ec2b',1,'cmsis_os2.h']]], + ['osthreadgetcount',['osThreadGetCount',['../group__CMSIS__RTOS__ThreadMgmt.html#ga495b3f812224e7301f23a691793765db',1,'cmsis_os2.h']]], + ['osthreadgetid',['osThreadGetId',['../group__CMSIS__RTOS__ThreadMgmt.html#ga8df03548e89fbc56402a5cd584a505da',1,'cmsis_os2.h']]], + ['osthreadgetname',['osThreadGetName',['../group__CMSIS__RTOS__ThreadMgmt.html#gac3230f3a55a297514b013ebf38f27e0a',1,'cmsis_os2.h']]], + ['osthreadgetpriority',['osThreadGetPriority',['../group__CMSIS__RTOS__ThreadMgmt.html#ga0aeaf349604f456e68e78f9d3b42e44b',1,'cmsis_os2.h']]], + ['osthreadgetstacksize',['osThreadGetStackSize',['../group__CMSIS__RTOS__ThreadMgmt.html#gab9f8bd715d671c6ee27644867bc1bf65',1,'cmsis_os2.h']]], + ['osthreadgetstackspace',['osThreadGetStackSpace',['../group__CMSIS__RTOS__ThreadMgmt.html#ga9c83bd5dd8de329701775d6ef7012720',1,'cmsis_os2.h']]], + ['osthreadgetstate',['osThreadGetState',['../group__CMSIS__RTOS__ThreadMgmt.html#gacc0a98b42f0a5928e12dc91dc76866b9',1,'cmsis_os2.h']]], + ['osthreadjoin',['osThreadJoin',['../group__CMSIS__RTOS__ThreadMgmt.html#ga3fca90fb0679afeb968aa8c3d5874487',1,'cmsis_os2.h']]], + ['osthreadnew',['osThreadNew',['../group__CMSIS__RTOS__ThreadMgmt.html#ga48d68b8666d99d28fa646ee1d2182b8f',1,'cmsis_os2.h']]], + ['osthreadresume',['osThreadResume',['../group__CMSIS__RTOS__ThreadMgmt.html#ga3dbad90eff394b02de76a452c84c5d80',1,'cmsis_os2.h']]], + ['osthreadsetpriority',['osThreadSetPriority',['../group__CMSIS__RTOS__ThreadMgmt.html#ga861a420fb2d643115b06622903fb3bfb',1,'cmsis_os2.h']]], + ['osthreadsuspend',['osThreadSuspend',['../group__CMSIS__RTOS__ThreadMgmt.html#gaa9de419d0152bf77e9bbcd1f369fb990',1,'cmsis_os2.h']]], + ['osthreadterminate',['osThreadTerminate',['../group__CMSIS__RTOS__ThreadMgmt.html#ga2f8ba6dba6e9c065a6e236ffd410d74a',1,'cmsis_os2.h']]], + ['osthreadyield',['osThreadYield',['../group__CMSIS__RTOS__ThreadMgmt.html#gad01c7ec26535b1de6b018bb9466720e2',1,'cmsis_os2.h']]], + ['ostimerdelete',['osTimerDelete',['../group__CMSIS__RTOS__TimerMgmt.html#gad0001dd74721ab461789324806db2453',1,'cmsis_os2.h']]], + ['ostimergetname',['osTimerGetName',['../group__CMSIS__RTOS__TimerMgmt.html#ga4f82a98eee4d9ea79507e44340d3d319',1,'cmsis_os2.h']]], + ['ostimerisrunning',['osTimerIsRunning',['../group__CMSIS__RTOS__TimerMgmt.html#ga69d3589f54194022c30dd01e45ec6741',1,'cmsis_os2.h']]], + ['ostimernew',['osTimerNew',['../group__CMSIS__RTOS__TimerMgmt.html#gad4e7f785c5f700a509f55a3bf6a62bec',1,'cmsis_os2.h']]], + ['ostimerstart',['osTimerStart',['../group__CMSIS__RTOS__TimerMgmt.html#gab6ee2859ea657641b7adfac599b8121d',1,'cmsis_os2.h']]], + ['ostimerstop',['osTimerStop',['../group__CMSIS__RTOS__TimerMgmt.html#gabd7a89356da7717293eb0bc5d87b8ac9',1,'cmsis_os2.h']]] +]; diff --git a/docs/RTOS2/html/search/functions_2.html b/docs/RTOS2/html/search/functions_2.html new file mode 100644 index 0000000..78be8b4 --- /dev/null +++ b/docs/RTOS2/html/search/functions_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/functions_2.js b/docs/RTOS2/html/search/functions_2.js new file mode 100644 index 0000000..c0c3d26 --- /dev/null +++ b/docs/RTOS2/html/search/functions_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pendsv_5fhandler',['PendSV_Handler',['../rtx__os_8h.html#a6303e1f258cbdc1f970ce579cc015623',1,'rtx_os.h']]] +]; diff --git a/docs/RTOS2/html/search/functions_3.html b/docs/RTOS2/html/search/functions_3.html new file mode 100644 index 0000000..ebf2eeb --- /dev/null +++ b/docs/RTOS2/html/search/functions_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/functions_3.js b/docs/RTOS2/html/search/functions_3.js new file mode 100644 index 0000000..5b68f94 --- /dev/null +++ b/docs/RTOS2/html/search/functions_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['svc_5fhandler',['SVC_Handler',['../rtx__os_8h.html#a3e5ddb3df0d62f2dc357e64a3f04a6ce',1,'rtx_os.h']]], + ['systick_5fhandler',['SysTick_Handler',['../rtx__os_8h.html#ab5e09814056d617c521549e542639b7e',1,'rtx_os.h']]] +]; diff --git a/docs/RTOS2/html/search/groups_0.html b/docs/RTOS2/html/search/groups_0.html new file mode 100644 index 0000000..2090afa --- /dev/null +++ b/docs/RTOS2/html/search/groups_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/groups_0.js b/docs/RTOS2/html/search/groups_0.js new file mode 100644 index 0000000..e74c670 --- /dev/null +++ b/docs/RTOS2/html/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cmsis_2drtos_20api_20v2',['CMSIS-RTOS API v2',['../group__CMSIS__RTOS.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/groups_1.html b/docs/RTOS2/html/search/groups_1.html new file mode 100644 index 0000000..3ad8a3b --- /dev/null +++ b/docs/RTOS2/html/search/groups_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/groups_1.js b/docs/RTOS2/html/search/groups_1.js new file mode 100644 index 0000000..111ced4 --- /dev/null +++ b/docs/RTOS2/html/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['definitions',['Definitions',['../group__CMSIS__RTOS__Definitions.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/groups_2.html b/docs/RTOS2/html/search/groups_2.html new file mode 100644 index 0000000..361832c --- /dev/null +++ b/docs/RTOS2/html/search/groups_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/groups_2.js b/docs/RTOS2/html/search/groups_2.js new file mode 100644 index 0000000..28660ad --- /dev/null +++ b/docs/RTOS2/html/search/groups_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['event_20flags',['Event Flags',['../group__CMSIS__RTOS__EventFlags.html',1,'']]], + ['event_20functions',['Event functions',['../group__rtx__evr.html',1,'']]], + ['event_20flags_20functions',['Event Flags Functions',['../group__rtx__evr__event__flasg.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/groups_3.html b/docs/RTOS2/html/search/groups_3.html new file mode 100644 index 0000000..f42200a --- /dev/null +++ b/docs/RTOS2/html/search/groups_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/groups_3.js b/docs/RTOS2/html/search/groups_3.js new file mode 100644 index 0000000..5ffb70a --- /dev/null +++ b/docs/RTOS2/html/search/groups_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['flags_20functions_20error_20codes',['Flags Functions Error Codes',['../group__flags__error__codes.html',1,'']]], + ['functions',['Functions',['../group__rtx5__specific__functions.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/groups_4.html b/docs/RTOS2/html/search/groups_4.html new file mode 100644 index 0000000..b07fdf9 --- /dev/null +++ b/docs/RTOS2/html/search/groups_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/groups_4.js b/docs/RTOS2/html/search/groups_4.js new file mode 100644 index 0000000..d43a456 --- /dev/null +++ b/docs/RTOS2/html/search/groups_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['generic_20wait_20functions',['Generic Wait Functions',['../group__CMSIS__RTOS__Wait.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/groups_5.html b/docs/RTOS2/html/search/groups_5.html new file mode 100644 index 0000000..35324c0 --- /dev/null +++ b/docs/RTOS2/html/search/groups_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/groups_5.js b/docs/RTOS2/html/search/groups_5.js new file mode 100644 index 0000000..c908b3d --- /dev/null +++ b/docs/RTOS2/html/search/groups_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['kernel_20information_20and_20control',['Kernel Information and Control',['../group__CMSIS__RTOS__KernelCtrl.html',1,'']]], + ['kernel_20functions',['Kernel Functions',['../group__rtx__evr__kernel.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/groups_6.html b/docs/RTOS2/html/search/groups_6.html new file mode 100644 index 0000000..3231402 --- /dev/null +++ b/docs/RTOS2/html/search/groups_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/groups_6.js b/docs/RTOS2/html/search/groups_6.js new file mode 100644 index 0000000..7b50a96 --- /dev/null +++ b/docs/RTOS2/html/search/groups_6.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['memory_20management',['Memory Management',['../group__CMSIS__RTOS__MemoryMgmt.html',1,'']]], + ['message_20queue',['Message Queue',['../group__CMSIS__RTOS__Message.html',1,'']]], + ['mutex_20management',['Mutex Management',['../group__CMSIS__RTOS__MutexMgmt.html',1,'']]], + ['memory_20pool',['Memory Pool',['../group__CMSIS__RTOS__PoolMgmt.html',1,'']]], + ['macros',['Macros',['../group__rtx5__specific__defines.html',1,'']]], + ['memory_20functions',['Memory Functions',['../group__rtx__evr__memory.html',1,'']]], + ['memory_20pool_20functions',['Memory Pool Functions',['../group__rtx__evr__memory__pool.html',1,'']]], + ['message_20queue_20functions',['Message Queue Functions',['../group__rtx__evr__message__queue.html',1,'']]], + ['mutex_20functions',['Mutex Functions',['../group__rtx__evr__mutex.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/groups_7.html b/docs/RTOS2/html/search/groups_7.html new file mode 100644 index 0000000..27334b6 --- /dev/null +++ b/docs/RTOS2/html/search/groups_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/groups_7.js b/docs/RTOS2/html/search/groups_7.js new file mode 100644 index 0000000..b1314cc --- /dev/null +++ b/docs/RTOS2/html/search/groups_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['os_20tick_20api',['OS Tick API',['../group__CMSIS__RTOS__TickAPI.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/groups_8.html b/docs/RTOS2/html/search/groups_8.html new file mode 100644 index 0000000..863d136 --- /dev/null +++ b/docs/RTOS2/html/search/groups_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/groups_8.js b/docs/RTOS2/html/search/groups_8.js new file mode 100644 index 0000000..d888ee1 --- /dev/null +++ b/docs/RTOS2/html/search/groups_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['rtx_20v5_20specific_20api',['RTX v5 Specific API',['../group__rtx5__specific.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/groups_9.html b/docs/RTOS2/html/search/groups_9.html new file mode 100644 index 0000000..e42b280 --- /dev/null +++ b/docs/RTOS2/html/search/groups_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/groups_9.js b/docs/RTOS2/html/search/groups_9.js new file mode 100644 index 0000000..66c16a5 --- /dev/null +++ b/docs/RTOS2/html/search/groups_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['semaphores',['Semaphores',['../group__CMSIS__RTOS__SemaphoreMgmt.html',1,'']]], + ['semaphore_20functions',['Semaphore Functions',['../group__rtx__evr__semaphore.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/groups_a.html b/docs/RTOS2/html/search/groups_a.html new file mode 100644 index 0000000..dc8d8cd --- /dev/null +++ b/docs/RTOS2/html/search/groups_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/groups_a.js b/docs/RTOS2/html/search/groups_a.js new file mode 100644 index 0000000..b4f2a98 --- /dev/null +++ b/docs/RTOS2/html/search/groups_a.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['thread_20flags',['Thread Flags',['../group__CMSIS__RTOS__ThreadFlagsMgmt.html',1,'']]], + ['thread_20management',['Thread Management',['../group__CMSIS__RTOS__ThreadMgmt.html',1,'']]], + ['timer_20management',['Timer Management',['../group__CMSIS__RTOS__TimerMgmt.html',1,'']]], + ['thread_20functions',['Thread Functions',['../group__rtx__evr__thread.html',1,'']]], + ['timer_20functions',['Timer Functions',['../group__rtx__evr__timer.html',1,'']]] +]; diff --git a/docs/RTOS2/html/search/mag_sel.png b/docs/RTOS2/html/search/mag_sel.png new file mode 100644 index 0000000..81f6040 Binary files /dev/null and b/docs/RTOS2/html/search/mag_sel.png differ diff --git a/docs/RTOS2/html/search/nomatches.html b/docs/RTOS2/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/docs/RTOS2/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs/RTOS2/html/search/pages_0.html b/docs/RTOS2/html/search/pages_0.html new file mode 100644 index 0000000..c51c834 --- /dev/null +++ b/docs/RTOS2/html/search/pages_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/pages_0.js b/docs/RTOS2/html/search/pages_0.js new file mode 100644 index 0000000..66bf330 --- /dev/null +++ b/docs/RTOS2/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['building_20the_20rtx5_20library',['Building the RTX5 Library',['../creating_RTX5_LIB.html',1,'rtx5_impl']]] +]; diff --git a/docs/RTOS2/html/search/pages_1.html b/docs/RTOS2/html/search/pages_1.html new file mode 100644 index 0000000..2a98fce --- /dev/null +++ b/docs/RTOS2/html/search/pages_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/pages_1.js b/docs/RTOS2/html/search/pages_1.js new file mode 100644 index 0000000..f053a81 --- /dev/null +++ b/docs/RTOS2/html/search/pages_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['coding_20rules',['Coding Rules',['../CodingRules.html',1,'']]], + ['configure_20rtx_20v5',['Configure RTX v5',['../config_rtx5.html',1,'rtx5_impl']]], + ['create_20an_20rtx5_20project',['Create an RTX5 Project',['../cre_rtx_proj.html',1,'rtx5_impl']]], + ['control_20block_20sizes',['Control Block Sizes',['../pControlBlockSizes.html',1,'technicalData5']]], + ['cmsis_2drtos_20c_20api_20v2',['CMSIS-RTOS C API v2',['../rtos_api2.html',1,'functionOverview']]], + ['cmsis_2drtos_20c_2b_2b_20api',['CMSIS-RTOS C++ API',['../rtos_apicpp.html',1,'functionOverview']]] +]; diff --git a/docs/RTOS2/html/search/pages_2.html b/docs/RTOS2/html/search/pages_2.html new file mode 100644 index 0000000..0711a0b --- /dev/null +++ b/docs/RTOS2/html/search/pages_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/pages_2.js b/docs/RTOS2/html/search/pages_2.js new file mode 100644 index 0000000..92d97b2 --- /dev/null +++ b/docs/RTOS2/html/search/pages_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['detailed_20api_20function_20differences',['Detailed API Function Differences',['../os2MigrationFunctions.html',1,'os2Migration']]], + ['directory_20structure_20and_20file_20overview',['Directory Structure and File Overview',['../pDirectory_Files.html',1,'technicalData5']]] +]; diff --git a/docs/RTOS2/html/search/pages_3.html b/docs/RTOS2/html/search/pages_3.html new file mode 100644 index 0000000..4310311 --- /dev/null +++ b/docs/RTOS2/html/search/pages_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/pages_3.js b/docs/RTOS2/html/search/pages_3.js new file mode 100644 index 0000000..92b936a --- /dev/null +++ b/docs/RTOS2/html/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['function_20overview',['Function Overview',['../functionOverview.html',1,'index']]] +]; diff --git a/docs/RTOS2/html/search/pages_4.html b/docs/RTOS2/html/search/pages_4.html new file mode 100644 index 0000000..ae5ce18 --- /dev/null +++ b/docs/RTOS2/html/search/pages_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/pages_4.js b/docs/RTOS2/html/search/pages_4.js new file mode 100644 index 0000000..82b174e --- /dev/null +++ b/docs/RTOS2/html/search/pages_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['generic_20rtos_20interface',['Generic RTOS Interface',['../genRTOS2IF.html',1,'index']]] +]; diff --git a/docs/RTOS2/html/search/pages_5.html b/docs/RTOS2/html/search/pages_5.html new file mode 100644 index 0000000..02c1114 --- /dev/null +++ b/docs/RTOS2/html/search/pages_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/pages_5.js b/docs/RTOS2/html/search/pages_5.js new file mode 100644 index 0000000..519a337 --- /dev/null +++ b/docs/RTOS2/html/search/pages_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hardware_20requirements',['Hardware Requirements',['../pHardwareRequirements.html',1,'technicalData5']]] +]; diff --git a/docs/RTOS2/html/search/pages_6.html b/docs/RTOS2/html/search/pages_6.html new file mode 100644 index 0000000..afb70af --- /dev/null +++ b/docs/RTOS2/html/search/pages_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/pages_6.js b/docs/RTOS2/html/search/pages_6.js new file mode 100644 index 0000000..d1acb1b --- /dev/null +++ b/docs/RTOS2/html/search/pages_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['misra_20c_3a2012_20compliance',['MISRA C:2012 Compliance',['../misraCompliance5.html',1,'rtx5_impl']]], + ['migration_20from_20api_20v1_20to_20api_20v2',['Migration from API v1 to API v2',['../os2Migration.html',1,'index']]] +]; diff --git a/docs/RTOS2/html/search/pages_7.html b/docs/RTOS2/html/search/pages_7.html new file mode 100644 index 0000000..9d7ba25 --- /dev/null +++ b/docs/RTOS2/html/search/pages_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/pages_7.js b/docs/RTOS2/html/search/pages_7.js new file mode 100644 index 0000000..fe9a12b --- /dev/null +++ b/docs/RTOS2/html/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['os_20tick_20api',['OS Tick API',['../rtos_os_tick_api.html',1,'functionOverview']]] +]; diff --git a/docs/RTOS2/html/search/pages_8.html b/docs/RTOS2/html/search/pages_8.html new file mode 100644 index 0000000..3377887 --- /dev/null +++ b/docs/RTOS2/html/search/pages_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/pages_8.js b/docs/RTOS2/html/search/pages_8.js new file mode 100644 index 0000000..9c98c1f --- /dev/null +++ b/docs/RTOS2/html/search/pages_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['rtx_20migration_20guide',['RTX Migration Guide',['../os2MigrationGuide.html',1,'os2Migration']]], + ['revision_20history',['Revision History',['../rtos_revisionHistory.html',1,'index']]], + ['rtos_20validation',['RTOS Validation',['../rtosValidation.html',1,'index']]], + ['rtx_20v5_20implementation',['RTX v5 Implementation',['../rtx5_impl.html',1,'index']]] +]; diff --git a/docs/RTOS2/html/search/pages_9.html b/docs/RTOS2/html/search/pages_9.html new file mode 100644 index 0000000..203934e --- /dev/null +++ b/docs/RTOS2/html/search/pages_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/pages_9.js b/docs/RTOS2/html/search/pages_9.js new file mode 100644 index 0000000..165e23d --- /dev/null +++ b/docs/RTOS2/html/search/pages_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['supported_20toolchains',['Supported Toolchains',['../pToolchains.html',1,'technicalData5']]] +]; diff --git a/docs/RTOS2/html/search/pages_a.html b/docs/RTOS2/html/search/pages_a.html new file mode 100644 index 0000000..1c097e5 --- /dev/null +++ b/docs/RTOS2/html/search/pages_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/pages_a.js b/docs/RTOS2/html/search/pages_a.js new file mode 100644 index 0000000..121aa88 --- /dev/null +++ b/docs/RTOS2/html/search/pages_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['technical_20data',['Technical Data',['../technicalData5.html',1,'rtx5_impl']]], + ['theory_20of_20operation',['Theory of Operation',['../theory_of_operation.html',1,'rtx5_impl']]] +]; diff --git a/docs/RTOS2/html/search/search.css b/docs/RTOS2/html/search/search.css new file mode 100644 index 0000000..34d6c18 --- /dev/null +++ b/docs/RTOS2/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #8FA4CF; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3C578D; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #405E98; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #405E98; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/RTOS2/html/search/search.js b/docs/RTOS2/html/search/search.js new file mode 100644 index 0000000..c317210 --- /dev/null +++ b/docs/RTOS2/html/search/search.js @@ -0,0 +1,813 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "_abcdefghiklmnoprstuvw", + 1: "o", + 2: "chmorv", + 3: "eops", + 4: "abcdefiklmnoprstuvw", + 5: "iot", + 6: "o", + 7: "o", + 8: "_iot", + 9: "cdefgkmorst", + 10: "bcdfghmorst" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "files", + 3: "functions", + 4: "variables", + 5: "typedefs", + 6: "enums", + 7: "enumvalues", + 8: "defines", + 9: "groups", + 10: "pages" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/typedefs_0.js b/docs/RTOS2/html/search/typedefs_0.js new file mode 100644 index 0000000..fe5bd25 --- /dev/null +++ b/docs/RTOS2/html/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['irqhandler_5ft',['IRQHandler_t',['../os__tick_8h.html#afbfa2180a9b6208f34891d539e9e2d52',1,'os_tick.h']]] +]; diff --git a/docs/RTOS2/html/search/typedefs_1.html b/docs/RTOS2/html/search/typedefs_1.html new file mode 100644 index 0000000..455fe2b --- /dev/null +++ b/docs/RTOS2/html/search/typedefs_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/typedefs_1.js b/docs/RTOS2/html/search/typedefs_1.js new file mode 100644 index 0000000..2b0f7ff --- /dev/null +++ b/docs/RTOS2/html/search/typedefs_1.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['oseventflagsid_5ft',['osEventFlagsId_t',['../group__CMSIS__RTOS__EventFlags.html#gafdbab933146d6d81d7cca7287e267a50',1,'cmsis_os2.h']]], + ['osmemorypoolid_5ft',['osMemoryPoolId_t',['../group__CMSIS__RTOS__PoolMgmt.html#ga2e44473caf338266f56800960294f960',1,'cmsis_os2.h']]], + ['osmessagequeueid_5ft',['osMessageQueueId_t',['../cmsis__os2_8h.html#a206dbc05367e03c39fc6d4d1ebcff317',1,'cmsis_os2.h']]], + ['osmutexid_5ft',['osMutexId_t',['../group__CMSIS__RTOS__MutexMgmt.html#ga313801836c62deb23055efb55a420e42',1,'cmsis_os2.h']]], + ['ossemaphoreid_5ft',['osSemaphoreId_t',['../group__CMSIS__RTOS__SemaphoreMgmt.html#ga6e1c1c4b04175bb92b013c8f37249f40',1,'cmsis_os2.h']]], + ['osthreadfunc_5ft',['osThreadFunc_t',['../group__CMSIS__RTOS__ThreadMgmt.html#gadd51f99a6eb50b94eee75f27cae815eb',1,'cmsis_os2.h']]], + ['osthreadid_5ft',['osThreadId_t',['../group__CMSIS__RTOS__ThreadMgmt.html#gaa6c32fe2a3e0a2e01f212d55b02e51c7',1,'cmsis_os2.h']]], + ['ostimerfunc_5ft',['osTimerFunc_t',['../group__CMSIS__RTOS__TimerMgmt.html#gaacf768c1ec64b020598afb985d7b30be',1,'cmsis_os2.h']]], + ['ostimerid_5ft',['osTimerId_t',['../group__CMSIS__RTOS__TimerMgmt.html#gaad5409379689ee27bb0a0b56ea4a4b34',1,'cmsis_os2.h']]] +]; diff --git a/docs/RTOS2/html/search/typedefs_2.html b/docs/RTOS2/html/search/typedefs_2.html new file mode 100644 index 0000000..fac5dba --- /dev/null +++ b/docs/RTOS2/html/search/typedefs_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/typedefs_2.js b/docs/RTOS2/html/search/typedefs_2.js new file mode 100644 index 0000000..929f6fa --- /dev/null +++ b/docs/RTOS2/html/search/typedefs_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tz_5fmoduleid_5ft',['TZ_ModuleId_t',['../cmsis__os2_8h.html#ad5ef21485fe5f60263bc0b48006202cb',1,'cmsis_os2.h']]] +]; diff --git a/docs/RTOS2/html/search/variables_0.html b/docs/RTOS2/html/search/variables_0.html new file mode 100644 index 0000000..1b8adc9 --- /dev/null +++ b/docs/RTOS2/html/search/variables_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_0.js b/docs/RTOS2/html/search/variables_0.js new file mode 100644 index 0000000..b596e5b --- /dev/null +++ b/docs/RTOS2/html/search/variables_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['api',['api',['../group__CMSIS__RTOS__KernelCtrl.html#a76a1ef1a4d3d9bd3e70783051f22a6d3',1,'osVersion_t']]], + ['arg',['arg',['../rtx__os_8h.html#a9ce2ec4812a92cb6ab39f6e81e9173a9',1,'osRtxTimerFinfo_t']]], + ['attr',['attr',['../rtx__os_8h.html#a28478ea2856f6286899bc90b2c6a1ec4',1,'osRtxThread_t::attr()'],['../rtx__os_8h.html#a28478ea2856f6286899bc90b2c6a1ec4',1,'osRtxMutex_t::attr()']]], + ['attr_5fbits',['attr_bits',['../group__CMSIS__RTOS__ThreadMgmt.html#a6e93b49cb79c12f768d72580c7731f30',1,'osThreadAttr_t::attr_bits()'],['../group__CMSIS__RTOS__TimerMgmt.html#a6e93b49cb79c12f768d72580c7731f30',1,'osTimerAttr_t::attr_bits()'],['../group__CMSIS__RTOS__EventFlags.html#a6e93b49cb79c12f768d72580c7731f30',1,'osEventFlagsAttr_t::attr_bits()'],['../group__CMSIS__RTOS__MutexMgmt.html#a6e93b49cb79c12f768d72580c7731f30',1,'osMutexAttr_t::attr_bits()'],['../group__CMSIS__RTOS__SemaphoreMgmt.html#a6e93b49cb79c12f768d72580c7731f30',1,'osSemaphoreAttr_t::attr_bits()'],['../group__CMSIS__RTOS__PoolMgmt.html#a6e93b49cb79c12f768d72580c7731f30',1,'osMemoryPoolAttr_t::attr_bits()'],['../group__CMSIS__RTOS__Message.html#a6e93b49cb79c12f768d72580c7731f30',1,'osMessageQueueAttr_t::attr_bits()']]] +]; diff --git a/docs/RTOS2/html/search/variables_1.html b/docs/RTOS2/html/search/variables_1.html new file mode 100644 index 0000000..78f63cd --- /dev/null +++ b/docs/RTOS2/html/search/variables_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_1.js b/docs/RTOS2/html/search/variables_1.js new file mode 100644 index 0000000..ab9cd84 --- /dev/null +++ b/docs/RTOS2/html/search/variables_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['block_5fbase',['block_base',['../rtx__os_8h.html#a4a598d941460a6d8ebfbd9c622e2876a',1,'osRtxMpInfo_t']]], + ['block_5ffree',['block_free',['../rtx__os_8h.html#aa111194ee30ea4e76b9dfcac8a03a8d9',1,'osRtxMpInfo_t']]], + ['block_5flim',['block_lim',['../rtx__os_8h.html#aba0fcdc6eda7e9f65c1d1904b2fff919',1,'osRtxMpInfo_t']]], + ['block_5fsize',['block_size',['../rtx__os_8h.html#a9e3fb1e50a1c71b2337df296222d9553',1,'osRtxMpInfo_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_10.html b/docs/RTOS2/html/search/variables_10.html new file mode 100644 index 0000000..c43ead3 --- /dev/null +++ b/docs/RTOS2/html/search/variables_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_10.js b/docs/RTOS2/html/search/variables_10.js new file mode 100644 index 0000000..921e760 --- /dev/null +++ b/docs/RTOS2/html/search/variables_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['used_5fblocks',['used_blocks',['../rtx__os_8h.html#a444139ba664bc8c262139a9addddb48c',1,'osRtxMpInfo_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_11.html b/docs/RTOS2/html/search/variables_11.html new file mode 100644 index 0000000..d9dbba9 --- /dev/null +++ b/docs/RTOS2/html/search/variables_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_11.js b/docs/RTOS2/html/search/variables_11.js new file mode 100644 index 0000000..d32cf7c --- /dev/null +++ b/docs/RTOS2/html/search/variables_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version',['version',['../rtx__os_8h.html#acd99bb05ca015e7d74448acb1deba7ca',1,'osRtxInfo_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_12.html b/docs/RTOS2/html/search/variables_12.html new file mode 100644 index 0000000..faca26f --- /dev/null +++ b/docs/RTOS2/html/search/variables_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_12.js b/docs/RTOS2/html/search/variables_12.js new file mode 100644 index 0000000..e1698ec --- /dev/null +++ b/docs/RTOS2/html/search/variables_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wait_5fflags',['wait_flags',['../rtx__os_8h.html#a3c7b4f24d9527394f4b5a1135d117691',1,'osRtxThread_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_2.html b/docs/RTOS2/html/search/variables_2.html new file mode 100644 index 0000000..ea80d20 --- /dev/null +++ b/docs/RTOS2/html/search/variables_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_2.js b/docs/RTOS2/html/search/variables_2.js new file mode 100644 index 0000000..61d6b2c --- /dev/null +++ b/docs/RTOS2/html/search/variables_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['cb_5fmem',['cb_mem',['../group__CMSIS__RTOS__ThreadMgmt.html#a1e100dc33d403841ed3c344e3397868e',1,'osThreadAttr_t::cb_mem()'],['../group__CMSIS__RTOS__TimerMgmt.html#a1e100dc33d403841ed3c344e3397868e',1,'osTimerAttr_t::cb_mem()'],['../group__CMSIS__RTOS__EventFlags.html#a1e100dc33d403841ed3c344e3397868e',1,'osEventFlagsAttr_t::cb_mem()'],['../group__CMSIS__RTOS__MutexMgmt.html#a1e100dc33d403841ed3c344e3397868e',1,'osMutexAttr_t::cb_mem()'],['../group__CMSIS__RTOS__SemaphoreMgmt.html#a1e100dc33d403841ed3c344e3397868e',1,'osSemaphoreAttr_t::cb_mem()'],['../group__CMSIS__RTOS__PoolMgmt.html#a1e100dc33d403841ed3c344e3397868e',1,'osMemoryPoolAttr_t::cb_mem()'],['../group__CMSIS__RTOS__Message.html#a1e100dc33d403841ed3c344e3397868e',1,'osMessageQueueAttr_t::cb_mem()']]], + ['cb_5fsize',['cb_size',['../group__CMSIS__RTOS__ThreadMgmt.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osThreadAttr_t::cb_size()'],['../group__CMSIS__RTOS__TimerMgmt.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osTimerAttr_t::cb_size()'],['../group__CMSIS__RTOS__EventFlags.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osEventFlagsAttr_t::cb_size()'],['../group__CMSIS__RTOS__MutexMgmt.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osMutexAttr_t::cb_size()'],['../group__CMSIS__RTOS__SemaphoreMgmt.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osSemaphoreAttr_t::cb_size()'],['../group__CMSIS__RTOS__PoolMgmt.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osMemoryPoolAttr_t::cb_size()'],['../group__CMSIS__RTOS__Message.html#aa55a4335d12dc2785dc00fdc292d1159',1,'osMessageQueueAttr_t::cb_size()']]], + ['cnt_5falloc',['cnt_alloc',['../rtx__os_8h.html#a6bc379cb485caaa1bd9b63abbc79a4ec',1,'osRtxObjectMemUsage_t']]], + ['cnt_5ffree',['cnt_free',['../rtx__os_8h.html#a5916fa670084fea56a52ba450565da4b',1,'osRtxObjectMemUsage_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_3.html b/docs/RTOS2/html/search/variables_3.html new file mode 100644 index 0000000..0dca26f --- /dev/null +++ b/docs/RTOS2/html/search/variables_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_3.js b/docs/RTOS2/html/search/variables_3.js new file mode 100644 index 0000000..7c666b4 --- /dev/null +++ b/docs/RTOS2/html/search/variables_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['delay',['delay',['../rtx__os_8h.html#a458421a43d4f6dc515faf427bf579d00',1,'osRtxThread_t']]], + ['delay_5fnext',['delay_next',['../rtx__os_8h.html#a21a74cedec66715cd5d7422797035868',1,'osRtxThread_t']]], + ['delay_5fprev',['delay_prev',['../rtx__os_8h.html#adcfea33cc536708db8a3419ba0295551',1,'osRtxThread_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_4.html b/docs/RTOS2/html/search/variables_4.html new file mode 100644 index 0000000..400e8e9 --- /dev/null +++ b/docs/RTOS2/html/search/variables_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_4.js b/docs/RTOS2/html/search/variables_4.js new file mode 100644 index 0000000..0b41d93 --- /dev/null +++ b/docs/RTOS2/html/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['event_5fflags',['event_flags',['../rtx__os_8h.html#a7044be0679894b5daf72f19f9dd06e03',1,'osRtxEventFlags_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_5.html b/docs/RTOS2/html/search/variables_5.html new file mode 100644 index 0000000..7f1241f --- /dev/null +++ b/docs/RTOS2/html/search/variables_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_5.js b/docs/RTOS2/html/search/variables_5.js new file mode 100644 index 0000000..901952a --- /dev/null +++ b/docs/RTOS2/html/search/variables_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['finfo',['finfo',['../rtx__os_8h.html#ab415a6615c5ddf5365ed86e58a1e1809',1,'osRtxTimer_t']]], + ['flags',['flags',['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxThread_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxTimer_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxEventFlags_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxMutex_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxSemaphore_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxMemoryPool_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxMessage_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxMessageQueue_t::flags()'],['../rtx__os_8h.html#aa2585d779da0ab21273a8d92de9a0ebe',1,'osRtxObject_t::flags()'],['../rtx__os_8h.html#a773b39d480759f67926cb18ae2219281',1,'osRtxConfig_t::flags()']]], + ['flags_5foptions',['flags_options',['../rtx__os_8h.html#a87c898585d0aeffdcf67c9e1b3befefe',1,'osRtxThread_t']]], + ['func',['func',['../rtx__os_8h.html#aaf8577e5ddcbff356a1d27310baa8a1f',1,'osRtxTimerFinfo_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_6.html b/docs/RTOS2/html/search/variables_6.html new file mode 100644 index 0000000..7536df8 --- /dev/null +++ b/docs/RTOS2/html/search/variables_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_6.js b/docs/RTOS2/html/search/variables_6.js new file mode 100644 index 0000000..258ff6d --- /dev/null +++ b/docs/RTOS2/html/search/variables_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['id',['id',['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxThread_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxTimer_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxEventFlags_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxMutex_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxSemaphore_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxMemoryPool_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxMessage_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxMessageQueue_t::id()'],['../rtx__os_8h.html#a1e6927fa1486224044e568f9c370519b',1,'osRtxObject_t::id()']]], + ['idle_5fthread_5fattr',['idle_thread_attr',['../rtx__os_8h.html#a694e5f79185db270e087e94719177ca0',1,'osRtxConfig_t']]], + ['isr_5fqueue',['isr_queue',['../rtx__os_8h.html#a534f37c2b021c8242492bedfe48b0338',1,'osRtxInfo_t::isr_queue()'],['../rtx__os_8h.html#a0354dd9f726694843f2a01df98c5641c',1,'osRtxConfig_t::isr_queue()']]] +]; diff --git a/docs/RTOS2/html/search/variables_7.html b/docs/RTOS2/html/search/variables_7.html new file mode 100644 index 0000000..66186a6 --- /dev/null +++ b/docs/RTOS2/html/search/variables_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_7.js b/docs/RTOS2/html/search/variables_7.js new file mode 100644 index 0000000..c2ab641 --- /dev/null +++ b/docs/RTOS2/html/search/variables_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kernel',['kernel',['../group__CMSIS__RTOS__KernelCtrl.html#ad8075d3f42141346ae2c56389358f9e7',1,'osVersion_t::kernel()'],['../rtx__os_8h.html#a72d4e2550fcee67cc139fca04505a903',1,'osRtxInfo_t::kernel()']]] +]; diff --git a/docs/RTOS2/html/search/variables_8.html b/docs/RTOS2/html/search/variables_8.html new file mode 100644 index 0000000..aa13bf2 --- /dev/null +++ b/docs/RTOS2/html/search/variables_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_8.js b/docs/RTOS2/html/search/variables_8.js new file mode 100644 index 0000000..90ce3a0 --- /dev/null +++ b/docs/RTOS2/html/search/variables_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['load',['load',['../rtx__os_8h.html#aee4a6239f04d660fc90663dd6b39ca95',1,'osRtxTimer_t']]], + ['lock',['lock',['../rtx__os_8h.html#a92435efb84d6814afd444fd462802e9c',1,'osRtxMutex_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_9.html b/docs/RTOS2/html/search/variables_9.html new file mode 100644 index 0000000..78cc249 --- /dev/null +++ b/docs/RTOS2/html/search/variables_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_9.js b/docs/RTOS2/html/search/variables_9.js new file mode 100644 index 0000000..05d0208 --- /dev/null +++ b/docs/RTOS2/html/search/variables_9.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['max_5fblocks',['max_blocks',['../rtx__os_8h.html#addc777bf5285ab03de6787385e6ea053',1,'osRtxMpInfo_t']]], + ['max_5ftokens',['max_tokens',['../rtx__os_8h.html#aa793f0e9a46e8b59b6d351535ee18a7d',1,'osRtxSemaphore_t']]], + ['max_5fused',['max_used',['../rtx__os_8h.html#a81baadf3fdf0eeff338f997ca3fe5009',1,'osRtxObjectMemUsage_t']]], + ['mem',['mem',['../rtx__os_8h.html#a42d7108f7184dcb944cdf73f649ad2dd',1,'osRtxInfo_t::mem()'],['../rtx__os_8h.html#aa30bb7d2484db1812c1aaf77a23cd11e',1,'osRtxConfig_t::mem()']]], + ['mp_5finfo',['mp_info',['../rtx__os_8h.html#ac1cf67a8631962a42fa2da46f20a1a39',1,'osRtxMemoryPool_t::mp_info()'],['../rtx__os_8h.html#ac1cf67a8631962a42fa2da46f20a1a39',1,'osRtxMessageQueue_t::mp_info()']]], + ['mp_5fmem',['mp_mem',['../group__CMSIS__RTOS__PoolMgmt.html#a5799465cca9c71c5587ceb0986f5b06a',1,'osMemoryPoolAttr_t']]], + ['mp_5fsize',['mp_size',['../group__CMSIS__RTOS__PoolMgmt.html#a66c26015c0ac8e88a4ad907c120aee4f',1,'osMemoryPoolAttr_t']]], + ['mpi',['mpi',['../rtx__os_8h.html#a13aeb46a18b12ae911abead8e497ffd3',1,'osRtxInfo_t::mpi()'],['../rtx__os_8h.html#ac013bca5f28bebf36a3372da78107e97',1,'osRtxConfig_t::mpi()']]], + ['mq_5fmem',['mq_mem',['../group__CMSIS__RTOS__Message.html#a4e208dc0fb049b42c4b90cbd2791c5ad',1,'osMessageQueueAttr_t']]], + ['mq_5fsize',['mq_size',['../group__CMSIS__RTOS__Message.html#ac1cc09f875e20c926920b57bb83c70ee',1,'osMessageQueueAttr_t']]], + ['msg_5fcount',['msg_count',['../rtx__os_8h.html#a6a019648a53352a413ea79b958a362cd',1,'osRtxMessageQueue_t']]], + ['msg_5ffirst',['msg_first',['../rtx__os_8h.html#a13c143cc2f25a550fc3eb7ae68b0c56d',1,'osRtxMessageQueue_t']]], + ['msg_5flast',['msg_last',['../rtx__os_8h.html#ab386d4a98974f52ca151426c4dde0da4',1,'osRtxMessageQueue_t']]], + ['msg_5fsize',['msg_size',['../rtx__os_8h.html#a58873af81b75772a41aa5c1ff788a0c2',1,'osRtxMessageQueue_t']]], + ['mutex_5flist',['mutex_list',['../rtx__os_8h.html#a70b3153655adaf42687fe250983f6c95',1,'osRtxThread_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_a.html b/docs/RTOS2/html/search/variables_a.html new file mode 100644 index 0000000..592abaa --- /dev/null +++ b/docs/RTOS2/html/search/variables_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_a.js b/docs/RTOS2/html/search/variables_a.js new file mode 100644 index 0000000..44cd77b --- /dev/null +++ b/docs/RTOS2/html/search/variables_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['name',['name',['../group__CMSIS__RTOS__ThreadMgmt.html#ab74e6bf80237ddc4109968cedc58c151',1,'osThreadAttr_t::name()'],['../group__CMSIS__RTOS__TimerMgmt.html#ab74e6bf80237ddc4109968cedc58c151',1,'osTimerAttr_t::name()'],['../group__CMSIS__RTOS__EventFlags.html#ab74e6bf80237ddc4109968cedc58c151',1,'osEventFlagsAttr_t::name()'],['../group__CMSIS__RTOS__MutexMgmt.html#ab74e6bf80237ddc4109968cedc58c151',1,'osMutexAttr_t::name()'],['../group__CMSIS__RTOS__SemaphoreMgmt.html#ab74e6bf80237ddc4109968cedc58c151',1,'osSemaphoreAttr_t::name()'],['../group__CMSIS__RTOS__PoolMgmt.html#ab74e6bf80237ddc4109968cedc58c151',1,'osMemoryPoolAttr_t::name()'],['../group__CMSIS__RTOS__Message.html#ab74e6bf80237ddc4109968cedc58c151',1,'osMessageQueueAttr_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxThread_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxTimer_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxEventFlags_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxMutex_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxSemaphore_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxMemoryPool_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxMessageQueue_t::name()'],['../rtx__os_8h.html#a8f8f80d37794cde9472343e4487ba3eb',1,'osRtxObject_t::name()']]], + ['next',['next',['../rtx__os_8h.html#a8b9ac161a613448926b2c2b2c8dbe259',1,'osRtxTimer_t::next()'],['../rtx__os_8h.html#a89570e219f9fb794b8353207a7592f95',1,'osRtxMessage_t::next()']]] +]; diff --git a/docs/RTOS2/html/search/variables_b.html b/docs/RTOS2/html/search/variables_b.html new file mode 100644 index 0000000..78052a1 --- /dev/null +++ b/docs/RTOS2/html/search/variables_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_b.js b/docs/RTOS2/html/search/variables_b.js new file mode 100644 index 0000000..79b0dc8 --- /dev/null +++ b/docs/RTOS2/html/search/variables_b.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['os_5fid',['os_id',['../rtx__os_8h.html#a7b7d02cdf33432995469f29878f7dcda',1,'osRtxInfo_t']]], + ['osrtxconfig',['osRtxConfig',['../rtx__os_8h.html#a489fda965fa634809f401ae6458a6f45',1,'rtx_os.h']]], + ['osrtxeventflagsmemusage',['osRtxEventFlagsMemUsage',['../rtx__os_8h.html#a0c81327f94697890809ce4a594bb9d5c',1,'rtx_os.h']]], + ['osrtxinfo',['osRtxInfo',['../rtx__os_8h.html#ad2270125c4e4991c3231d752b6ee5f3f',1,'rtx_os.h']]], + ['osrtxmemorypoolmemusage',['osRtxMemoryPoolMemUsage',['../rtx__os_8h.html#ae5dea30a13d7a2316699a7f201504bc7',1,'rtx_os.h']]], + ['osrtxmessagequeuememusage',['osRtxMessageQueueMemUsage',['../rtx__os_8h.html#af3da38b316a84990128e8d9f34e3e6d3',1,'rtx_os.h']]], + ['osrtxmutexmemusage',['osRtxMutexMemUsage',['../rtx__os_8h.html#a683927dcd67dcb912884d16efa81a58d',1,'rtx_os.h']]], + ['osrtxsemaphorememusage',['osRtxSemaphoreMemUsage',['../rtx__os_8h.html#aec50b39ce30d9c87916d077f6f764387',1,'rtx_os.h']]], + ['osrtxthreadmemusage',['osRtxThreadMemUsage',['../rtx__os_8h.html#a90374bf1d999b2e1594763ab6c97cd69',1,'rtx_os.h']]], + ['osrtxtimermemusage',['osRtxTimerMemUsage',['../rtx__os_8h.html#aa3e7cf488411dbdc814420b81f36b935',1,'rtx_os.h']]], + ['owner_5fnext',['owner_next',['../rtx__os_8h.html#a54be7ae32f627ee70e1af8c54203ee5a',1,'osRtxMutex_t']]], + ['owner_5fprev',['owner_prev',['../rtx__os_8h.html#a50b315b9b80bafdba54a7a731be1cc30',1,'osRtxMutex_t']]], + ['owner_5fthread',['owner_thread',['../rtx__os_8h.html#a987889d464cb2925029e135b76aa0dc9',1,'osRtxMutex_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_c.html b/docs/RTOS2/html/search/variables_c.html new file mode 100644 index 0000000..b2260e4 --- /dev/null +++ b/docs/RTOS2/html/search/variables_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_c.js b/docs/RTOS2/html/search/variables_c.js new file mode 100644 index 0000000..088af66 --- /dev/null +++ b/docs/RTOS2/html/search/variables_c.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['padding',['padding',['../rtx__os_8h.html#a735ef00341a84c02ba561c66de3d20af',1,'osRtxMutex_t']]], + ['post_5fprocess',['post_process',['../rtx__os_8h.html#ae64a3e930a8e3d1fb28038db9bc514d9',1,'osRtxInfo_t']]], + ['prev',['prev',['../rtx__os_8h.html#ac8953ebf7df8aaf724cb12876ac8fb1a',1,'osRtxTimer_t::prev()'],['../rtx__os_8h.html#ad2b4e6d37acc8020701610f54c0c8910',1,'osRtxMessage_t::prev()']]], + ['priority',['priority',['../group__CMSIS__RTOS__ThreadMgmt.html#a6a5183df4c54c3e28dc8dc704f2487d5',1,'osThreadAttr_t::priority()'],['../rtx__os_8h.html#a81659cc4c01e54e2424022728d9effc7',1,'osRtxThread_t::priority()'],['../rtx__os_8h.html#a0ad043071ccc7a261d79a759dc9c6f0c',1,'osRtxMessage_t::priority()']]], + ['priority_5fbase',['priority_base',['../rtx__os_8h.html#ac67f8858081fb7a6e5a4ee8d2de3b348',1,'osRtxThread_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_d.html b/docs/RTOS2/html/search/variables_d.html new file mode 100644 index 0000000..f477999 --- /dev/null +++ b/docs/RTOS2/html/search/variables_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_d.js b/docs/RTOS2/html/search/variables_d.js new file mode 100644 index 0000000..e46e6f7 --- /dev/null +++ b/docs/RTOS2/html/search/variables_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['reserved',['reserved',['../group__CMSIS__RTOS__ThreadMgmt.html#a66f538babc389986738ec70104e0562b',1,'osThreadAttr_t::reserved()'],['../rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7',1,'osRtxEventFlags_t::reserved()'],['../rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7',1,'osRtxSemaphore_t::reserved()'],['../rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7',1,'osRtxMemoryPool_t::reserved()'],['../rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7',1,'osRtxMessageQueue_t::reserved()'],['../rtx__os_8h.html#acb7bc06bed6f6408d719334fc41698c7',1,'osRtxObject_t::reserved()']]], + ['reserved_5fstate',['reserved_state',['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxEventFlags_t::reserved_state()'],['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxMutex_t::reserved_state()'],['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxSemaphore_t::reserved_state()'],['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxMemoryPool_t::reserved_state()'],['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxMessage_t::reserved_state()'],['../rtx__os_8h.html#a0acbb12a103775ddce0fb5d0efa3540f',1,'osRtxMessageQueue_t::reserved_state()']]], + ['robin_5ftimeout',['robin_timeout',['../rtx__os_8h.html#a6b4c66676a5bc985c28b71ac4ac79159',1,'osRtxConfig_t']]] +]; diff --git a/docs/RTOS2/html/search/variables_e.html b/docs/RTOS2/html/search/variables_e.html new file mode 100644 index 0000000..1165006 --- /dev/null +++ b/docs/RTOS2/html/search/variables_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_e.js b/docs/RTOS2/html/search/variables_e.js new file mode 100644 index 0000000..3c90bb7 --- /dev/null +++ b/docs/RTOS2/html/search/variables_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['sp',['sp',['../rtx__os_8h.html#a382a07e24a852d580d7548b8d517384c',1,'osRtxThread_t']]], + ['stack_5fframe',['stack_frame',['../rtx__os_8h.html#a1071334ebd46d95b9ab1dcad788b2adc',1,'osRtxThread_t']]], + ['stack_5fmem',['stack_mem',['../group__CMSIS__RTOS__ThreadMgmt.html#ad7c9b42355a4c8b9467130ab3fb19e43',1,'osThreadAttr_t::stack_mem()'],['../rtx__os_8h.html#a447dbb69b4c036e118b3b1b8bd22fe60',1,'osRtxThread_t::stack_mem()']]], + ['stack_5fsize',['stack_size',['../group__CMSIS__RTOS__ThreadMgmt.html#aacbc9a219f2d6870e9ce89bb93f975c9',1,'osThreadAttr_t::stack_size()'],['../rtx__os_8h.html#ad63716408aae5b50857ca8ce74e3a3ff',1,'osRtxThread_t::stack_size()']]], + ['state',['state',['../rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830',1,'osRtxThread_t::state()'],['../rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830',1,'osRtxTimer_t::state()'],['../rtx__os_8h.html#a0b57aa10271a66f3dc936bba1d2f3830',1,'osRtxObject_t::state()']]] +]; diff --git a/docs/RTOS2/html/search/variables_f.html b/docs/RTOS2/html/search/variables_f.html new file mode 100644 index 0000000..537dd7c --- /dev/null +++ b/docs/RTOS2/html/search/variables_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/RTOS2/html/search/variables_f.js b/docs/RTOS2/html/search/variables_f.js new file mode 100644 index 0000000..c96ea11 --- /dev/null +++ b/docs/RTOS2/html/search/variables_f.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['thread',['thread',['../rtx__os_8h.html#a540b2b79850c654b3f5756c488314b8d',1,'osRtxInfo_t']]], + ['thread_5faddr',['thread_addr',['../rtx__os_8h.html#adf2ebf46aa7018845582f1c70de83598',1,'osRtxThread_t']]], + ['thread_5fflags',['thread_flags',['../rtx__os_8h.html#ae757685e50b875e953f4aff67ac24b1b',1,'osRtxThread_t']]], + ['thread_5fjoin',['thread_join',['../rtx__os_8h.html#a83ec0540c50d4e79bed99f1b384bd2b9',1,'osRtxThread_t']]], + ['thread_5flist',['thread_list',['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxEventFlags_t::thread_list()'],['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxMutex_t::thread_list()'],['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxSemaphore_t::thread_list()'],['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxMemoryPool_t::thread_list()'],['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxMessageQueue_t::thread_list()'],['../rtx__os_8h.html#a8afd5feb676df99867375957b0587451',1,'osRtxObject_t::thread_list()']]], + ['thread_5fnext',['thread_next',['../rtx__os_8h.html#a421971e8ae94fe0bd86b85a90445e71e',1,'osRtxThread_t']]], + ['thread_5fprev',['thread_prev',['../rtx__os_8h.html#aa230a0d899f6c0750e6d454af3ef9b05',1,'osRtxThread_t']]], + ['thread_5fstack_5fsize',['thread_stack_size',['../rtx__os_8h.html#a6aa2c0bcb2024f1e4c38f9e8f6769c09',1,'osRtxConfig_t']]], + ['tick',['tick',['../rtx__os_8h.html#a260e06ce96c2e4deebccaedeb059dc0b',1,'osRtxTimer_t']]], + ['tick_5ffreq',['tick_freq',['../rtx__os_8h.html#a5973e7102782a9936a5e0d1417863675',1,'osRtxConfig_t']]], + ['tick_5firqn',['tick_irqn',['../rtx__os_8h.html#ad88a39594ffe6ab1016cf59517219e21',1,'osRtxInfo_t']]], + ['timer',['timer',['../rtx__os_8h.html#ad2649f7342615613f26a8603203bba7b',1,'osRtxInfo_t']]], + ['timer_5fmq_5fattr',['timer_mq_attr',['../rtx__os_8h.html#a3e07bcf21ce5250f3dc0f1ec4ebc938d',1,'osRtxConfig_t']]], + ['timer_5fmq_5fmcnt',['timer_mq_mcnt',['../rtx__os_8h.html#a3d6d4ee231cd6db41ee358a5676b1a9d',1,'osRtxConfig_t']]], + ['timer_5fthread_5fattr',['timer_thread_attr',['../rtx__os_8h.html#a310b3e01cc8e274529353210db5a78c3',1,'osRtxConfig_t']]], + ['tokens',['tokens',['../rtx__os_8h.html#a4e2e4e1126848f81d9e943147e07f0e0',1,'osRtxSemaphore_t']]], + ['type',['type',['../rtx__os_8h.html#a1d127017fb298b889f4ba24752d08b8e',1,'osRtxTimer_t']]], + ['tz_5fmemory',['tz_memory',['../rtx__os_8h.html#adaa6c424a231e5f6c788532675f33e16',1,'osRtxThread_t']]], + ['tz_5fmodule',['tz_module',['../group__CMSIS__RTOS__ThreadMgmt.html#a697f2aad6119d655d212ea10245ae394',1,'osThreadAttr_t']]] +]; diff --git a/docs/RTOS2/html/semaphore_states.png b/docs/RTOS2/html/semaphore_states.png new file mode 100644 index 0000000..ce21c19 Binary files /dev/null and b/docs/RTOS2/html/semaphore_states.png differ diff --git a/docs/RTOS2/html/simple_signal.png b/docs/RTOS2/html/simple_signal.png new file mode 100644 index 0000000..a0305e4 Binary files /dev/null and b/docs/RTOS2/html/simple_signal.png differ diff --git a/docs/RTOS2/html/structosRtxInfo__t_8post__process.html b/docs/RTOS2/html/structosRtxInfo__t_8post__process.html new file mode 100644 index 0000000..791f3b9 --- /dev/null +++ b/docs/RTOS2/html/structosRtxInfo__t_8post__process.html @@ -0,0 +1,219 @@ + + + + + +osRtxInfo_t.post_process Struct Reference +CMSIS-RTOS2: osRtxInfo_t.post_process Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    osRtxInfo_t.post_process Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + +

    +Data Fields

    void(* thread )(osRtxThread_t *)
     < ISR Post Processing functions More...
     
    void(* event_flags )(osRtxEventFlags_t *)
     Event Flags Post Processing function. More...
     
    void(* semaphore )(osRtxSemaphore_t *)
     Semaphore Post Processing function. More...
     
    void(* memory_pool )(osRtxMemoryPool_t *)
     Memory Pool Post Processing function. More...
     
    void(* message )(osRtxMessage_t *)
     Message Post Processing function. More...
     
    +

    Field Documentation

    + +
    +
    + + + + +
    +
    +

    Thread Post Processing function

    + +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    +
    +
    + + + + diff --git a/docs/RTOS2/html/structosRtxInfo__t_8post__process.js b/docs/RTOS2/html/structosRtxInfo__t_8post__process.js new file mode 100644 index 0000000..c513d07 --- /dev/null +++ b/docs/RTOS2/html/structosRtxInfo__t_8post__process.js @@ -0,0 +1,8 @@ +var structosRtxInfo__t_8post__process = +[ + [ "thread", "structosRtxInfo__t_8post__process.html#a448b397ae9f093b1632dd42680d003bf", null ], + [ "event_flags", "structosRtxInfo__t_8post__process.html#a87c97ad39fd308d767c9b0870aa57932", null ], + [ "semaphore", "structosRtxInfo__t_8post__process.html#a701cf47135bf3d62510b25b6dcdc19a8", null ], + [ "memory_pool", "structosRtxInfo__t_8post__process.html#afa86c80888f72693bbf3bc6c05856159", null ], + [ "message", "structosRtxInfo__t_8post__process.html#a07c9d45abfb605d2bdb59d8f2e697fca", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/structosRtxInfo__t_8timer.html b/docs/RTOS2/html/structosRtxInfo__t_8timer.html new file mode 100644 index 0000000..e5a320e --- /dev/null +++ b/docs/RTOS2/html/structosRtxInfo__t_8timer.html @@ -0,0 +1,204 @@ + + + + + +osRtxInfo_t.timer Struct Reference +CMSIS-RTOS2: osRtxInfo_t.timer Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    + +
    +
    osRtxInfo_t.timer Struct Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Data Fields

    osRtxTimer_tlist
     < Timer Info More...
     
    osRtxThread_tthread
     Timer Thread. More...
     
    osRtxMessageQueue_tmq
     Timer Message Queue. More...
     
    void(* tick )(void)
     Timer Tick Function. More...
     
    +

    Field Documentation

    + +
    +
    + + + + +
    +
    +

    Active Timer List

    + +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    +
    +
    + + + + diff --git a/docs/RTOS2/html/structosRtxInfo__t_8timer.js b/docs/RTOS2/html/structosRtxInfo__t_8timer.js new file mode 100644 index 0000000..34417ae --- /dev/null +++ b/docs/RTOS2/html/structosRtxInfo__t_8timer.js @@ -0,0 +1,7 @@ +var structosRtxInfo__t_8timer = +[ + [ "list", "structosRtxInfo__t_8timer.html#a10ae9fc7d453b0dd525d0edf2ede7961", null ], + [ "thread", "structosRtxInfo__t_8timer.html#adc127f5d2483352fd20eaddb38feb6d2", null ], + [ "mq", "structosRtxInfo__t_8timer.html#a1d8a4975693ef1eb9ca54878098d608f", null ], + [ "tick", "structosRtxInfo__t_8timer.html#ae69dfeafefa7851fd9524a2b32a0eff9", null ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/sync_off.png b/docs/RTOS2/html/sync_off.png new file mode 100644 index 0000000..3fdd673 Binary files /dev/null and b/docs/RTOS2/html/sync_off.png differ diff --git a/docs/RTOS2/html/sync_on.png b/docs/RTOS2/html/sync_on.png new file mode 100644 index 0000000..e800b8b Binary files /dev/null and b/docs/RTOS2/html/sync_on.png differ diff --git a/docs/RTOS2/html/tab_a.png b/docs/RTOS2/html/tab_a.png new file mode 100644 index 0000000..9fd093d Binary files /dev/null and b/docs/RTOS2/html/tab_a.png differ diff --git a/docs/RTOS2/html/tab_b.png b/docs/RTOS2/html/tab_b.png new file mode 100644 index 0000000..e19d474 Binary files /dev/null and b/docs/RTOS2/html/tab_b.png differ diff --git a/docs/RTOS2/html/tab_h.png b/docs/RTOS2/html/tab_h.png new file mode 100644 index 0000000..156ad95 Binary files /dev/null and b/docs/RTOS2/html/tab_h.png differ diff --git a/docs/RTOS2/html/tab_s.png b/docs/RTOS2/html/tab_s.png new file mode 100644 index 0000000..181a562 Binary files /dev/null and b/docs/RTOS2/html/tab_s.png differ diff --git a/docs/RTOS2/html/tab_topnav.png b/docs/RTOS2/html/tab_topnav.png new file mode 100644 index 0000000..b257b77 Binary files /dev/null and b/docs/RTOS2/html/tab_topnav.png differ diff --git a/docs/RTOS2/html/tabs.css b/docs/RTOS2/html/tabs.css new file mode 100644 index 0000000..ffbab50 --- /dev/null +++ b/docs/RTOS2/html/tabs.css @@ -0,0 +1,71 @@ +.tabs, .tabs1, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 10px; +} + +.tabs1 { + background-image: url('tab_topnav.png'); + font-size: 12px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; + line-height: 24px; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + list-style: none; +} + +.tabs1 .tablist li { + float: left; + display: table-cell; + background-image: url('tab_topnav.png'); + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/docs/RTOS2/html/technicalData5.html b/docs/RTOS2/html/technicalData5.html new file mode 100644 index 0000000..08331f8 --- /dev/null +++ b/docs/RTOS2/html/technicalData5.html @@ -0,0 +1,136 @@ + + + + + +Technical Data +CMSIS-RTOS2: Technical Data + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Technical Data
    +
    +
    +

    The following section contains technical information about RTX v5.

    + +
    +
    + + + + diff --git a/docs/RTOS2/html/technicalData5.js b/docs/RTOS2/html/technicalData5.js new file mode 100644 index 0000000..b4c41f2 --- /dev/null +++ b/docs/RTOS2/html/technicalData5.js @@ -0,0 +1,21 @@ +var technicalData5 = +[ + [ "Hardware Requirements", "pHardwareRequirements.html", [ + [ "Processor Requirements", "pHardwareRequirements.html#tpProcessor", [ + [ "Cortex-M0/M0+/M23 target processor", "pHardwareRequirements.html#tpCortexM0_M0P_M23", null ], + [ "Cortex-M3/M4/M7/M33 target processor", "pHardwareRequirements.html#tpCortexM3_M4_M7_M33", null ], + [ "Cortex-A5/A7/A9 target processor", "pHardwareRequirements.html#tpCortexA5_A7_A9", null ] + ] ], + [ "Memory Requirements", "pHardwareRequirements.html#rMemory", null ] + ] ], + [ "Control Block Sizes", "pControlBlockSizes.html", null ], + [ "Directory Structure and File Overview", "pDirectory_Files.html", [ + [ "RTX v5 Directory Structure", "pDirectory_Files.html#Folders", null ], + [ "RTX v5 Library Files", "pDirectory_Files.html#libFiles", null ] + ] ], + [ "Supported Toolchains", "pToolchains.html", [ + [ "Arm Compiler (Arm/Keil MDK, uVision5)", "pToolchains.html#technicalData_Toolchain_ARM", null ], + [ "IAR Embedded Workbench", "pToolchains.html#technicalData_Toolchain_IAR", null ], + [ "GNU Compiler Collection", "pToolchains.html#technicalData_Toolchain_GCC", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/RTOS2/html/theory_of_operation.html b/docs/RTOS2/html/theory_of_operation.html new file mode 100644 index 0000000..aaa8e5c --- /dev/null +++ b/docs/RTOS2/html/theory_of_operation.html @@ -0,0 +1,899 @@ + + + + + +Theory of Operation +CMSIS-RTOS2: Theory of Operation + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + +
    + + + + +
    + +
    + +
    +
    +
    Theory of Operation
    +
    +
    +

    Many aspects of the kernel are configurable and the configuration options are mentioned where applicable.

    +

    +System Startup

    +

    Since main is no longer a thread RTX5 does not interfere with the system startup until main is reached. Once the execution reaches main() there is a recommended order to initialize the hardware and start the kernel. This is also reflected in the user code template file "CMSIS-RTOS2 'main' function" supplied with the RTX5 component.

    +

    Your application's main() should implement at least the following in the given order:

    +
      +
    1. Initialization and configuration of hardware including peripherals, memory, pins, clocks and the interrupt system.
    2. +
    3. Update the system core clock using the respective CMSIS-Core (Cortex-M) or CMSIS-Core (Cortex-A) function.
    4. +
    5. Initialize the CMSIS-RTOS kernel using osKernelInitialize.
    6. +
    7. Optionally, create a new thread app_main, which is used as a main thread using osThreadNew. Alternatively, threads can be created in main() directly.
    8. +
    9. Start the RTOS scheduler using osKernelStart which also configure system tick timer and RTOS specific interrupts. This function does not return in case of successful execution. Any application code after osKernelStart will therefore not be executed.
    10. +
    +
    Note
    Interrupts are initialized in osKernelStart. Modifying basic In case priorities and groupings in the NVIC are altered by the application after the above sequence it might be necessary to call osKernelInitialize again. Incorrect ossibly catched by osRtxErrorNotify or causing a hard fault.
    +
    +The tick timer is configured during osKernelStart.
    +

    +Scheduler

    +

    RTX5 implements a low-latency preemptive scheduler. Major parts of RTX5 are executed in handler mode such as

    + +

    In order to be low-latency with respect to ISR execution those system exceptions are configured to use the lowest priority groups available. The priorities are configured such that no preemption happens between them. Thus no interrupt critical sections (i.e. interrupt locks) are needed to protect the scheduler.

    +
    +scheduling.png +
    +Thread scheduling and interrupt execution
    +

    The scheduler combines priority and round-robin based context switches. The example depicted in the image above contains four threads (1, 2, 3, and 4). Threads 1 and 2 share the same priority, thread 3 has a higher one and thread 4 the highest (osThreadAttr_t::priority). As long as threads 3 and 4 are blocked the scheduler switches between thread 1 and 2 on a time-slice basis (round-robin). The time-slice for round-robin scheduling can be configured, see Round-Robin Timeout in System Configuration.

    +

    Thread 2 unblocks thread 3 by an arbitrary RTOS-call (executed in SVC handler mode) at time index 2. The scheduler switches to thread 3 immediately because thread 3 has the highest priority. Thread 4 is still blocked.

    +

    At time index 4 an interrupt (ISR) occurs and preempts the SysTick_Handler. RTX does not add any latency to the interrupt service execution. The ISR routine uses an RTOS-call that unblocks thread 4. Instead of switching to thread 4 immediately the PendSV flag is set to defer the context switching. The PendSV_Handler is executed right after the SysTick_Handler returns and the deferred context switch to thread 4 is carried out. As soon as highest priority thread 4 blocks again by using a blocking RTOS-call execution is switched back to thread 3 immediately during time index 5.

    +

    At time index 5 thread 3 uses a blocking RTOS-call as well. Thus the scheduler switches back to thread 2 for time index 6. At time index 7 the scheduler uses the round-robin mechanism to switch to thread 1 and so on.

    +

    +Memory Allocation

    +

    RTX5 objects (thread, mutex, semaphore, timer, message queue, thread and event flags, as well as memory pool) require dedicated RAM memory. Objects can be created using osObjectNew() calls and deleted using osObjectDelete() calls. The related object memory needs to be available during the lifetime of the object.

    +

    RTX5 offers three different memory allocation methods for objects:

    +
      +
    • Global Memory Pool uses a single global memory pool for all objects. It is easy to configure, but may have the disadvantage for memory fragmentation when objects with different sizes are created and destroyed.
    • +
    • Object-specific Memory Pools uses a fixed-size memory pool for each object type. The method is time deterministic and avoids memory fragmentation.
    • +
    • Static Object Memory reserves memory during compile time and completely avoids that a system can be out of memory. This is typically a required for some safety critical systems.
    • +
    +

    It possible to intermix all the memory allocation methods in the same application.

    +

    +Global Memory Pool

    +

    The global memory pool allocates all objects from a memory area. This method of memory allocation is the default configuration setting of RTX5.

    +
    +MemAllocGlob.png +
    +Global Memory Pool for all objects
    +

    When the memory pool does not provide sufficient memory, the creation of the object fails and the related osObjectNew() function returns NULL.

    +

    Enabled in System Configuration.

    +

    +Object-specific Memory Pools

    +

    Object-specific memory pools avoids memory fragmentation with a dedicated fixed-size memory management for each object type. This type of memory pools are fully time deterministic, which means that object creation and destruction takes always the same fixed amount of time. As a fixed-size memory pool is specific to an object type, the handling of out-of-memory situations is simplified.

    +
    +MemAllocSpec.png +
    +One memory pool per object type
    +

    Object-specific memory pools are selectively enabled for each object type, e.g: mutex or thread using the RTX configuration file:

    + +

    When the memory pool does not provide sufficient memory, the creation of the object fails and the related osObjectNew() function returns NULL.

    +

    +Static Object Memory

    +

    In contrast to the dynamic memory allocations, the static memory allocation requires compile-time allocation of object memory.

    +
    +MemAllocStat.png +
    +Statically allocated memory for all objects
    +

    Static memory allocation can be achieved by providing user-defined memory using attributes at object creation, see Manual User-defined Allocation. Please take special note of the following restrictions:

    + + + + + + + + + + + +
    Memory type Requirements
    Control Block (osXxxAttr_t::cb_mem) 4-Byte alignment. Size defined by osRtxThreadCbSize, osRtxTimerCbSize, osRtxEventFlagsCbSize, osRtxMutexCbSize, osRtxSemaphoreCbSize, osRtxMemoryPoolCbSize, osRtxMessageQueueCbSize.
    Thread Stack (osThreadAttr_t::stack_mem) 8-Byte alignment. Size is application specific, i.e. amount of stack variables and frames.
    Memory Pool (osMemoryPoolAttr_t::mp_mem) 4-Byte alignment. Size calculated with osRtxMemoryPoolMemSize.
    Message Queue (osMessageQueueAttr_t::mq_mem) 4-Byte alignment. Size calculated with osRtxMessageQueueMemSize.
    +

    In order to allow RTX5 aware debugging, i.e. Component Viewer, to recognize control blocks these needs to be placed in individual memory sections, i.e. using __attribute__((section(...))).

    + + + + + + + + + + + + + + + + + +
    RTX Object Linker Section
    Thread .bss.os.thread.cb
    Timer .bss.os.timer.cb
    Event Flags .bss.os.evflags.cb
    Mutex .bss.os.mutex.cb
    Semaphore .bss.os.semaphore.cb
    Memory Pool .bss.os.mempool.cb
    Message Queue .bss.os.msgqueue.cb
    +

    The following code example shows how to create an OS object using static memory.

    +

    Code Example:

    +
    /*----------------------------------------------------------------------------
    +
    * CMSIS-RTOS 'main' function template
    +
    *---------------------------------------------------------------------------*/
    +
    +
    #include "RTE_Components.h"
    +
    #include CMSIS_device_header
    +
    #include "cmsis_os2.h"
    +
    +
    //include rtx_os.h for types of RTX objects
    +
    #include "rtx_os.h"
    +
    +
    //The thread function instanced in this example
    +
    void worker(void *arg)
    +
    {
    +
    while(1)
    +
    {
    +
    //work
    +
    osDelay(10000);
    +
    }
    +
    }
    +
    +
    // Define objects that are statically allocated for worker thread 1
    +
    __attribute__((section(".bss.os.thread.cb")))
    +
    osRtxThread_t worker_thread_tcb_1;
    +
    +
    // Reserve two areas for the stacks of worker thread 1
    +
    // uint64_t makes sure the memory alignment is 8
    +
    uint64_t worker_thread_stk_1[64];
    +
    +
    // Define the attributes which are used for thread creation
    +
    // Optional const saves RAM memory and includes the values in periodic ROM tests
    +
    const osThreadAttr_t worker_attr_1 = {
    +
    "wrk1",
    + +
    &worker_thread_tcb_1,
    +
    sizeof(worker_thread_tcb_1),
    +
    &worker_thread_stk_1[0],
    +
    sizeof(worker_thread_stk_1),
    + +
    0
    +
    };
    +
    +
    // Define ID object for thread
    + +
    +
    /*----------------------------------------------------------------------------
    +
    * Application main thread
    +
    *---------------------------------------------------------------------------*/
    +
    void app_main (void *argument) {
    +
    uint32_t param = NULL;
    +
    +
    // Create an instance of the worker thread with static resources (TCB and stack)
    +
    th1 = osThreadNew(worker, &param, &worker_attr_1);
    +
    +
    for (;;) {}
    +
    }
    +
    +
    int main (void) {
    +
    // System Initialization
    +
    SystemCoreClockUpdate();
    +
    // ...
    +
    +
    osKernelInitialize(); // Initialize CMSIS-RTOS
    +
    osThreadNew(app_main, NULL, NULL); // Create application main thread
    +
    osKernelStart(); // Start thread execution
    +
    for (;;) {}
    +
    }
    +

    +Thread Stack Management

    +

    For Cortex-M processors without floating point unit the thread context requires 64 bytes on the local stack.

    +
    Note
    For Cortex-M4/M7 with FP the thread context requires 200 bytes on the local stack. For these devices the default stack space should be increased to a minimum of 300 bytes.
    +

    Each thread is provided with a separate stack that holds the thread context and stack space for automatic variables and return addresses for function call nesting. The stack sizes of RTX threads are flexibly configurable as explained in the section Thread Configuration. RTX offers a configurable checking for stack overflows and stack utilization.

    +

    +Low-Power Operation

    +

    The system thread osRtxIdleThread can be use to switch the system into a low-power mode. The easiest form to enter a low-power mode is the execution of the __WFE function that puts the processor into a sleep mode where it waits for an event.

    +

    Code Example:

    +
    #include "RTE_Components.h"
    +
    #include CMSIS_device_header /* Device definitions */
    +
    +
    void osRtxIdleThread (void) {
    +
    /* The idle demon is a system thread, running when no other thread is */
    +
    /* ready to run. */
    +
    +
    for (;;) {
    +
    __WFE(); /* Enter sleep mode */
    +
    }
    +
    }
    +
    Note
    __WFE() is not available in every Cortex-M implementation. Check device manuals for availability.
    +

    +RTX Kernel Timer Tick

    +

    RTX uses the generic OS Tick API to configure and control its periodic Kernel Tick.

    +

    To use an alternative timer as the Kernel Tick Timer one simply needs to implement a custom version of the OS Tick API.

    +
    Note
    The OS Tick implementation provided must asure that the used timer interrupt uses the same (low) priority group as the service interrupts, i.e. interrupts used by RTX must not preempt each other. Refer to the Scheduler section for more details.
    +

    +Tick-less Low-Power Operation

    +

    RTX5 provides extension for tick-less operation which is useful for applications that use extensively low-power modes where the SysTick timer is also disabled. To provide a time-tick in such power-saving modes, a wake-up timer is used to derive timer intervals. The CMSIS-RTOS2 functions osKernelSuspend and osKernelResume control the tick-less operation.

    +

    Using this functions allows the RTX5 thread scheduler to stop the periodic kernel tick interrupt. When all active threads are suspended, the system enters power-down and calculates how long it can stay in this power-down mode. In the power-down mode the processor and peripherals can be switched off. Only a wake-up timer must remain powered, because this timer is responsible to wake-up the system after the power-down period expires.

    +

    The tick-less operation is controlled from the osRtxIdleThread thread. The wake-up timeout value is set before the system enters the power-down mode. The function osKernelSuspend calculates the wake-up timeout measured in RTX Timer Ticks; this value is used to setup the wake-up timer that runs during the power-down mode of the system.

    +

    Once the system resumes operation (either by a wake-up time out or other interrupts) the RTX5 thread scheduler is started with the function osKernelResume. The parameter sleep_time specifies the time (in RTX Timer Ticks) that the system was in power-down mode.

    +

    Code Example:

    +
    #include "msp.h" // Device header
    +
    +
    /*----------------------------------------------------------------------------
    +
    * MSP432 Low-Power Extension Functions
    +
    *---------------------------------------------------------------------------*/
    +
    static void MSP432_LP_Entry(void) {
    +
    /* Enable PCM rude mode, which allows to device to enter LPM3 without waiting for peripherals */
    +
    PCM->CTL1 = PCM_CTL1_KEY_VAL | PCM_CTL1_FORCE_LPM_ENTRY;
    +
    /* Enable all SRAM bank retentions prior to going to LPM3 */
    +
    SYSCTL->SRAM_BANKRET |= SYSCTL_SRAM_BANKRET_BNK7_RET;
    +
    __enable_interrupt();
    +
    NVIC_EnableIRQ(RTC_C_IRQn);
    +
    /* Do not wake up on exit from ISR */
    +
    SCB->SCR |= SCB_SCR_SLEEPONEXIT_Msk;
    +
    /* Setting the sleep deep bit */
    +
    SCB->SCR |= (SCB_SCR_SLEEPDEEP_Msk);
    +
    }
    +
    +
    static volatile unsigned int tc;
    +
    static volatile unsigned int tc_wakeup;
    +
    +
    void RTC_C_IRQHandler(void)
    +
    {
    +
    if (tc++ > tc_wakeup)
    +
    {
    +
    SCB->SCR &= ~SCB_SCR_SLEEPONEXIT_Msk;
    +
    NVIC_DisableIRQ(RTC_C_IRQn);
    +
    NVIC_ClearPendingIRQ(RTC_C_IRQn);
    +
    return;
    +
    }
    +
    if (RTC_C->PS0CTL & RTC_C_PS0CTL_RT0PSIFG)
    +
    {
    +
    RTC_C->CTL0 = RTC_C_KEY_VAL; // Unlock RTC key protected registers
    +
    RTC_C->PS0CTL &= ~RTC_C_PS0CTL_RT0PSIFG;
    +
    RTC_C->CTL0 = 0;
    +
    SCB->SCR |= (SCB_SCR_SLEEPDEEP_Msk);
    +
    }
    +
    }
    +
    +
    uint32_t g_enable_sleep = 0;
    +
    +
    void osRtxIdleThread (void) {
    +
    +
    for (;;) {
    +
    tc_wakeup = osKernelSuspend();
    +
    /* Is there some time to sleep? */
    +
    if (tc_wakeup > 0) {
    +
    tc = 0;
    +
    /* Enter the low power state */
    +
    MSP432_LP_Entry();
    +
    __WFE();
    +
    }
    +
    /* Adjust the kernel ticks with the amount of ticks slept */
    + +
    }
    +
    }
    +
    Note
    __WFE() is not available in every Arm Cortex-M implementation. Check device manuals for availability. The alternative using __WFI() has other issues, please take note of http://www.keil.com/support/docs/3591.htm as well.
    +

    +RTX5 Header File

    +

    Every implementation of the CMSIS-RTOS2 API can bring its own additional features. RTX5 adds a couple of functions for the idle more, for error notifications, and special system timer functions. It also is using macros for control block and memory sizes.

    +

    If you require some of the RTX specific functions in your application code, #include the header file rtx_os.h:

    +
    /*
    +
    * Copyright (c) 2013-2018 Arm Limited. All rights reserved.
    +
    *
    +
    * SPDX-License-Identifier: Apache-2.0
    +
    *
    +
    * Licensed under the Apache License, Version 2.0 (the License); you may
    +
    * not use this file except in compliance with the License.
    +
    * You may obtain a copy of the License at
    +
    *
    +
    * www.apache.org/licenses/LICENSE-2.0
    +
    *
    +
    * Unless required by applicable law or agreed to in writing, software
    +
    * distributed under the License is distributed on an AS IS BASIS, WITHOUT
    +
    * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +
    * See the License for the specific language governing permissions and
    +
    * limitations under the License.
    +
    *
    +
    * -----------------------------------------------------------------------------
    +
    *
    +
    * Project: CMSIS-RTOS RTX
    +
    * Title: RTX OS definitions
    +
    *
    +
    * -----------------------------------------------------------------------------
    +
    */
    +
    +
    #ifndef RTX_OS_H_
    +
    #define RTX_OS_H_
    +
    +
    #include <stdint.h>
    +
    #include <stddef.h>
    +
    #include "cmsis_os2.h"
    +
    +
    #ifdef __cplusplus
    +
    extern "C"
    +
    {
    +
    #endif
    +
    +
    +
    /// Kernel Information
    +
    #define osRtxVersionAPI 20010003 ///< API version (2.1.3)
    +
    #define osRtxVersionKernel 50040000 ///< Kernel version (5.4.0)
    +
    #define osRtxKernelId "RTX V5.4.0" ///< Kernel identification string
    +
    +
    +
    // ==== Common definitions ====
    +
    +
    /// Object Identifier definitions
    +
    #define osRtxIdInvalid 0x00U
    +
    #define osRtxIdThread 0x01U
    +
    #define osRtxIdTimer 0x02U
    +
    #define osRtxIdEventFlags 0x03U
    +
    #define osRtxIdMutex 0x04U
    +
    #define osRtxIdSemaphore 0x05U
    +
    #define osRtxIdMemoryPool 0x06U
    +
    #define osRtxIdMessage 0x07U
    +
    #define osRtxIdMessageQueue 0x08U
    +
    +
    /// Object Flags definitions
    +
    #define osRtxFlagSystemObject 0x01U
    +
    #define osRtxFlagSystemMemory 0x02U
    +
    +
    +
    // ==== Kernel definitions ====
    +
    +
    /// Kernel State definitions
    +
    #define osRtxKernelInactive ((uint8_t)osKernelInactive)
    +
    #define osRtxKernelReady ((uint8_t)osKernelReady)
    +
    #define osRtxKernelRunning ((uint8_t)osKernelRunning)
    +
    #define osRtxKernelLocked ((uint8_t)osKernelLocked)
    +
    #define osRtxKernelSuspended ((uint8_t)osKernelSuspended)
    +
    +
    +
    // ==== Thread definitions ====
    +
    +
    /// Thread State definitions (extending osThreadState)
    +
    #define osRtxThreadStateMask 0x0FU
    +
    +
    #define osRtxThreadInactive ((uint8_t)osThreadInactive)
    +
    #define osRtxThreadReady ((uint8_t)osThreadReady)
    +
    #define osRtxThreadRunning ((uint8_t)osThreadRunning)
    +
    #define osRtxThreadBlocked ((uint8_t)osThreadBlocked)
    +
    #define osRtxThreadTerminated ((uint8_t)osThreadTerminated)
    +
    +
    #define osRtxThreadWaitingDelay ((uint8_t)(osRtxThreadBlocked | 0x10U))
    +
    #define osRtxThreadWaitingJoin ((uint8_t)(osRtxThreadBlocked | 0x20U))
    +
    #define osRtxThreadWaitingThreadFlags ((uint8_t)(osRtxThreadBlocked | 0x30U))
    +
    #define osRtxThreadWaitingEventFlags ((uint8_t)(osRtxThreadBlocked | 0x40U))
    +
    #define osRtxThreadWaitingMutex ((uint8_t)(osRtxThreadBlocked | 0x50U))
    +
    #define osRtxThreadWaitingSemaphore ((uint8_t)(osRtxThreadBlocked | 0x60U))
    +
    #define osRtxThreadWaitingMemoryPool ((uint8_t)(osRtxThreadBlocked | 0x70U))
    +
    #define osRtxThreadWaitingMessageGet ((uint8_t)(osRtxThreadBlocked | 0x80U))
    +
    #define osRtxThreadWaitingMessagePut ((uint8_t)(osRtxThreadBlocked | 0x90U))
    +
    +
    /// Thread Flags definitions
    +
    #define osRtxThreadFlagDefStack 0x10U ///< Default Stack flag
    +
    +
    /// Stack Marker definitions
    +
    #define osRtxStackMagicWord 0xE25A2EA5U ///< Stack Magic Word (Stack Base)
    +
    #define osRtxStackFillPattern 0xCCCCCCCCU ///< Stack Fill Pattern
    +
    +
    /// Thread Control Block
    +
    typedef struct osRtxThread_s {
    +
    uint8_t id; ///< Object Identifier
    +
    uint8_t state; ///< Object State
    +
    uint8_t flags; ///< Object Flags
    +
    uint8_t attr; ///< Object Attributes
    +
    const char *name; ///< Object Name
    +
    struct osRtxThread_s *thread_next; ///< Link pointer to next Thread in Object list
    +
    struct osRtxThread_s *thread_prev; ///< Link pointer to previous Thread in Object list
    +
    struct osRtxThread_s *delay_next; ///< Link pointer to next Thread in Delay list
    +
    struct osRtxThread_s *delay_prev; ///< Link pointer to previous Thread in Delay list
    +
    struct osRtxThread_s *thread_join; ///< Thread waiting to Join
    +
    uint32_t delay; ///< Delay Time
    +
    int8_t priority; ///< Thread Priority
    +
    int8_t priority_base; ///< Base Priority
    +
    uint8_t stack_frame; ///< Stack Frame (EXC_RETURN[7..0])
    +
    uint8_t flags_options; ///< Thread/Event Flags Options
    +
    uint32_t wait_flags; ///< Waiting Thread/Event Flags
    +
    uint32_t thread_flags; ///< Thread Flags
    +
    struct osRtxMutex_s *mutex_list; ///< Link pointer to list of owned Mutexes
    +
    void *stack_mem; ///< Stack Memory
    +
    uint32_t stack_size; ///< Stack Size
    +
    uint32_t sp; ///< Current Stack Pointer
    +
    uint32_t thread_addr; ///< Thread entry address
    +
    uint32_t tz_memory; ///< TrustZone Memory Identifier
    +
    #ifdef RTX_TF_M_EXTENSION
    +
    uint32_t tz_module; ///< TrustZone Module Identifier
    +
    #endif
    + +
    +
    +
    // ==== Timer definitions ====
    +
    +
    /// Timer State definitions
    +
    #define osRtxTimerInactive 0x00U ///< Timer Inactive
    +
    #define osRtxTimerStopped 0x01U ///< Timer Stopped
    +
    #define osRtxTimerRunning 0x02U ///< Timer Running
    +
    +
    /// Timer Type definitions
    +
    #define osRtxTimerPeriodic ((uint8_t)osTimerPeriodic)
    +
    +
    /// Timer Function Information
    +
    typedef struct {
    +
    osTimerFunc_t func; ///< Function Pointer
    +
    void *arg; ///< Function Argument
    + +
    +
    /// Timer Control Block
    +
    typedef struct osRtxTimer_s {
    +
    uint8_t id; ///< Object Identifier
    +
    uint8_t state; ///< Object State
    +
    uint8_t flags; ///< Object Flags
    +
    uint8_t type; ///< Timer Type (Periodic/One-shot)
    +
    const char *name; ///< Object Name
    +
    struct osRtxTimer_s *prev; ///< Pointer to previous active Timer
    +
    struct osRtxTimer_s *next; ///< Pointer to next active Timer
    +
    uint32_t tick; ///< Timer current Tick
    +
    uint32_t load; ///< Timer Load value
    +
    osRtxTimerFinfo_t finfo; ///< Timer Function Info
    + +
    +
    +
    // ==== Event Flags definitions ====
    +
    +
    /// Event Flags Control Block
    +
    typedef struct {
    +
    uint8_t id; ///< Object Identifier
    +
    uint8_t reserved_state; ///< Object State (not used)
    +
    uint8_t flags; ///< Object Flags
    +
    uint8_t reserved;
    +
    const char *name; ///< Object Name
    +
    osRtxThread_t *thread_list; ///< Waiting Threads List
    +
    uint32_t event_flags; ///< Event Flags
    + +
    +
    +
    // ==== Mutex definitions ====
    +
    +
    /// Mutex Control Block
    +
    typedef struct osRtxMutex_s {
    +
    uint8_t id; ///< Object Identifier
    +
    uint8_t reserved_state; ///< Object State (not used)
    +
    uint8_t flags; ///< Object Flags
    +
    uint8_t attr; ///< Object Attributes
    +
    const char *name; ///< Object Name
    +
    osRtxThread_t *thread_list; ///< Waiting Threads List
    +
    osRtxThread_t *owner_thread; ///< Owner Thread
    +
    struct osRtxMutex_s *owner_prev; ///< Pointer to previous owned Mutex
    +
    struct osRtxMutex_s *owner_next; ///< Pointer to next owned Mutex
    +
    uint8_t lock; ///< Lock counter
    +
    uint8_t padding[3];
    + +
    +
    +
    // ==== Semaphore definitions ====
    +
    +
    /// Semaphore Control Block
    +
    typedef struct {
    +
    uint8_t id; ///< Object Identifier
    +
    uint8_t reserved_state; ///< Object State (not used)
    +
    uint8_t flags; ///< Object Flags
    +
    uint8_t reserved;
    +
    const char *name; ///< Object Name
    +
    osRtxThread_t *thread_list; ///< Waiting Threads List
    +
    uint16_t tokens; ///< Current number of tokens
    +
    uint16_t max_tokens; ///< Maximum number of tokens
    + +
    +
    +
    // ==== Memory Pool definitions ====
    +
    +
    /// Memory Pool Information
    +
    typedef struct {
    +
    uint32_t max_blocks; ///< Maximum number of Blocks
    +
    uint32_t used_blocks; ///< Number of used Blocks
    +
    uint32_t block_size; ///< Block Size
    +
    void *block_base; ///< Block Memory Base Address
    +
    void *block_lim; ///< Block Memory Limit Address
    +
    void *block_free; ///< First free Block Address
    + +
    +
    /// Memory Pool Control Block
    +
    typedef struct {
    +
    uint8_t id; ///< Object Identifier
    +
    uint8_t reserved_state; ///< Object State (not used)
    +
    uint8_t flags; ///< Object Flags
    +
    uint8_t reserved;
    +
    const char *name; ///< Object Name
    +
    osRtxThread_t *thread_list; ///< Waiting Threads List
    +
    osRtxMpInfo_t mp_info; ///< Memory Pool Info
    + +
    +
    +
    // ==== Message Queue definitions ====
    +
    +
    /// Message Control Block
    +
    typedef struct osRtxMessage_s {
    +
    uint8_t id; ///< Object Identifier
    +
    uint8_t reserved_state; ///< Object State (not used)
    +
    uint8_t flags; ///< Object Flags
    +
    uint8_t priority; ///< Message Priority
    +
    struct osRtxMessage_s *prev; ///< Pointer to previous Message
    +
    struct osRtxMessage_s *next; ///< Pointer to next Message
    + +
    +
    /// Message Queue Control Block
    +
    typedef struct {
    +
    uint8_t id; ///< Object Identifier
    +
    uint8_t reserved_state; ///< Object State (not used)
    +
    uint8_t flags; ///< Object Flags
    +
    uint8_t reserved;
    +
    const char *name; ///< Object Name
    +
    osRtxThread_t *thread_list; ///< Waiting Threads List
    +
    osRtxMpInfo_t mp_info; ///< Memory Pool Info
    +
    uint32_t msg_size; ///< Message Size
    +
    uint32_t msg_count; ///< Number of queued Messages
    +
    osRtxMessage_t *msg_first; ///< Pointer to first Message
    +
    osRtxMessage_t *msg_last; ///< Pointer to last Message
    + +
    +
    +
    // ==== Generic Object definitions ====
    +
    +
    /// Generic Object Control Block
    +
    typedef struct {
    +
    uint8_t id; ///< Object Identifier
    +
    uint8_t state; ///< Object State
    +
    uint8_t flags; ///< Object Flags
    +
    uint8_t reserved;
    +
    const char *name; ///< Object Name
    +
    osRtxThread_t *thread_list; ///< Threads List
    + +
    +
    +
    // ==== OS Runtime Information definitions ====
    +
    +
    /// OS Runtime Information structure
    +
    typedef struct {
    +
    const char *os_id; ///< OS Identification
    +
    uint32_t version; ///< OS Version
    +
    struct { ///< Kernel Info
    +
    uint8_t state; ///< State
    +
    volatile uint8_t blocked; ///< Blocked
    +
    uint8_t pendSV; ///< Pending SV
    +
    uint8_t reserved;
    +
    uint32_t tick; ///< Tick counter
    +
    } kernel;
    +
    int32_t tick_irqn; ///< Tick Timer IRQ Number
    +
    struct { ///< Thread Info
    +
    struct { ///< Thread Run Info
    +
    osRtxThread_t *curr; ///< Current running Thread
    +
    osRtxThread_t *next; ///< Next Thread to Run
    +
    } run;
    +
    osRtxObject_t ready; ///< Ready List Object
    +
    osRtxThread_t *idle; ///< Idle Thread
    +
    osRtxThread_t *delay_list; ///< Delay List
    +
    osRtxThread_t *wait_list; ///< Wait List (no Timeout)
    +
    osRtxThread_t *terminate_list; ///< Terminate Thread List
    +
    struct { ///< Thread Round Robin Info
    +
    osRtxThread_t *thread; ///< Round Robin Thread
    +
    uint32_t tick; ///< Round Robin Time Tick
    +
    uint32_t timeout; ///< Round Robin Timeout
    +
    } robin;
    +
    } thread;
    +
    struct { ///< Timer Info
    +
    osRtxTimer_t *list; ///< Active Timer List
    +
    osRtxThread_t *thread; ///< Timer Thread
    +
    osRtxMessageQueue_t *mq; ///< Timer Message Queue
    +
    void (*tick)(void); ///< Timer Tick Function
    +
    } timer;
    +
    struct { ///< ISR Post Processing Queue
    +
    uint16_t max; ///< Maximum Items
    +
    uint16_t cnt; ///< Item Count
    +
    uint16_t in; ///< Incoming Item Index
    +
    uint16_t out; ///< Outgoing Item Index
    +
    void **data; ///< Queue Data
    +
    } isr_queue;
    +
    struct { ///< ISR Post Processing functions
    +
    void (*thread)(osRtxThread_t*); ///< Thread Post Processing function
    +
    void (*event_flags)(osRtxEventFlags_t*); ///< Event Flags Post Processing function
    +
    void (*semaphore)(osRtxSemaphore_t*); ///< Semaphore Post Processing function
    +
    void (*memory_pool)(osRtxMemoryPool_t*); ///< Memory Pool Post Processing function
    +
    void (*message)(osRtxMessage_t*); ///< Message Post Processing function
    +
    } post_process;
    +
    struct { ///< Memory Pools (Variable Block Size)
    +
    void *stack; ///< Stack Memory
    +
    void *mp_data; ///< Memory Pool Data Memory
    +
    void *mq_data; ///< Message Queue Data Memory
    +
    void *common; ///< Common Memory
    +
    } mem;
    +
    struct { ///< Memory Pools (Fixed Block Size)
    +
    osRtxMpInfo_t *stack; ///< Stack for Threads
    +
    osRtxMpInfo_t *thread; ///< Thread Control Blocks
    +
    osRtxMpInfo_t *timer; ///< Timer Control Blocks
    +
    osRtxMpInfo_t *event_flags; ///< Event Flags Control Blocks
    +
    osRtxMpInfo_t *mutex; ///< Mutex Control Blocks
    +
    osRtxMpInfo_t *semaphore; ///< Semaphore Control Blocks
    +
    osRtxMpInfo_t *memory_pool; ///< Memory Pool Control Blocks
    +
    osRtxMpInfo_t *message_queue; ///< Message Queue Control Blocks
    +
    } mpi;
    + +
    +
    extern osRtxInfo_t osRtxInfo; ///< OS Runtime Information
    +
    +
    /// OS Runtime Object Memory Usage structure
    +
    typedef struct {
    +
    uint32_t cnt_alloc; ///< Counter for alloc
    +
    uint32_t cnt_free; ///< Counter for free
    +
    uint32_t max_used; ///< Maximum used
    + +
    +
    /// OS Runtime Object Memory Usage variables
    + + + + + + + +
    +
    +
    // ==== OS API definitions ====
    +
    +
    // Object Limits definitions
    +
    #define osRtxThreadFlagsLimit 31U ///< number of Thread Flags available per thread
    +
    #define osRtxEventFlagsLimit 31U ///< number of Event Flags available per object
    +
    #define osRtxMutexLockLimit 255U ///< maximum number of recursive mutex locks
    +
    #define osRtxSemaphoreTokenLimit 65535U ///< maximum number of tokens per semaphore
    +
    +
    // Control Block sizes
    +
    #define osRtxThreadCbSize sizeof(osRtxThread_t)
    +
    #define osRtxTimerCbSize sizeof(osRtxTimer_t)
    +
    #define osRtxEventFlagsCbSize sizeof(osRtxEventFlags_t)
    +
    #define osRtxMutexCbSize sizeof(osRtxMutex_t)
    +
    #define osRtxSemaphoreCbSize sizeof(osRtxSemaphore_t)
    +
    #define osRtxMemoryPoolCbSize sizeof(osRtxMemoryPool_t)
    +
    #define osRtxMessageQueueCbSize sizeof(osRtxMessageQueue_t)
    +
    +
    /// Memory size in bytes for Memory Pool storage.
    +
    /// \param block_count maximum number of memory blocks in memory pool.
    +
    /// \param block_size memory block size in bytes.
    +
    #define osRtxMemoryPoolMemSize(block_count, block_size) \
    +
    (4*(block_count)*(((block_size)+3)/4))
    +
    +
    /// Memory size in bytes for Message Queue storage.
    +
    /// \param msg_count maximum number of messages in queue.
    +
    /// \param msg_size maximum message size in bytes.
    +
    #define osRtxMessageQueueMemSize(msg_count, msg_size) \
    +
    (4*(msg_count)*(3+(((msg_size)+3)/4)))
    +
    +
    +
    // ==== OS External Functions ====
    +
    +
    // OS Error Codes
    +
    #define osRtxErrorStackUnderflow 1U ///< Stack overflow, i.e. stack pointer below its lower memory limit for descending stacks.
    +
    #define osRtxErrorISRQueueOverflow 2U ///< ISR Queue overflow detected when inserting object.
    +
    #define osRtxErrorTimerQueueOverflow 3U ///< User Timer Callback Queue overflow detected for timer.
    +
    #define osRtxErrorClibSpace 4U ///< Standard C/C++ library libspace not available: increase \c OS_THREAD_LIBSPACE_NUM.
    +
    #define osRtxErrorClibMutex 5U ///< Standard C/C++ library mutex initialization failed.
    +
    +
    /// OS Error Callback function
    +
    extern uint32_t osRtxErrorNotify (uint32_t code, void *object_id);
    +
    +
    /// OS Idle Thread
    +
    extern void osRtxIdleThread (void *argument);
    +
    +
    /// OS Exception handlers
    +
    extern void SVC_Handler (void);
    +
    extern void PendSV_Handler (void);
    +
    extern void SysTick_Handler (void);
    +
    +
    /// OS Trusted Firmware M Extension
    +
    #ifdef RTX_TF_M_EXTENSION
    +
    extern uint32_t osRtxTzGetModuleId (void);
    +
    #endif
    +
    +
    +
    // ==== OS External Configuration ====
    +
    +
    /// OS Configuration flags
    +
    #define osRtxConfigPrivilegedMode (1UL<<0) ///< Threads in Privileged mode
    +
    #define osRtxConfigStackCheck (1UL<<1) ///< Stack overrun checking
    +
    #define osRtxConfigStackWatermark (1UL<<2) ///< Stack usage Watermark
    +
    +
    /// OS Configuration structure
    +
    typedef struct {
    +
    uint32_t flags; ///< OS Configuration Flags
    +
    uint32_t tick_freq; ///< Kernel Tick Frequency
    +
    uint32_t robin_timeout; ///< Round Robin Timeout Tick
    +
    struct { ///< ISR Post Processing Queue
    +
    void **data; ///< Queue Data
    +
    uint16_t max; ///< Maximum Items
    +
    uint16_t padding;
    +
    } isr_queue;
    +
    struct { ///< Memory Pools (Variable Block Size)
    +
    void *stack_addr; ///< Stack Memory Address
    +
    uint32_t stack_size; ///< Stack Memory Size
    +
    void *mp_data_addr; ///< Memory Pool Memory Address
    +
    uint32_t mp_data_size; ///< Memory Pool Memory Size
    +
    void *mq_data_addr; ///< Message Queue Data Memory Address
    +
    uint32_t mq_data_size; ///< Message Queue Data Memory Size
    +
    void *common_addr; ///< Common Memory Address
    +
    uint32_t common_size; ///< Common Memory Size
    +
    } mem;
    +
    struct { ///< Memory Pools (Fixed Block Size)
    +
    osRtxMpInfo_t *stack; ///< Stack for Threads
    +
    osRtxMpInfo_t *thread; ///< Thread Control Blocks
    +
    osRtxMpInfo_t *timer; ///< Timer Control Blocks
    +
    osRtxMpInfo_t *event_flags; ///< Event Flags Control Blocks
    +
    osRtxMpInfo_t *mutex; ///< Mutex Control Blocks
    +
    osRtxMpInfo_t *semaphore; ///< Semaphore Control Blocks
    +
    osRtxMpInfo_t *memory_pool; ///< Memory Pool Control Blocks
    +
    osRtxMpInfo_t *message_queue; ///< Message Queue Control Blocks
    +
    } mpi;
    +
    uint32_t thread_stack_size; ///< Default Thread Stack Size
    +
    const
    +
    osThreadAttr_t *idle_thread_attr; ///< Idle Thread Attributes
    +
    const
    +
    osThreadAttr_t *timer_thread_attr; ///< Timer Thread Attributes
    +
    const
    +
    osMessageQueueAttr_t *timer_mq_attr; ///< Timer Message Queue Attributes
    +
    uint32_t timer_mq_mcnt; ///< Timer Message Queue maximum Messages
    + +
    +
    extern const osRtxConfig_t osRtxConfig; ///< OS Configuration
    +
    +
    +
    #ifdef __cplusplus
    +
    }
    +
    #endif
    +
    +
    #endif // RTX_OS_H_
    +

    +Timeout Value

    +

    Timeout values are an argument to several osXxx functions to allow time for resolving a request. A timeout value of 0 means that the RTOS does not wait and the function returns instantly, even when no resource is available. A timeout value of osWaitForever means that the RTOS waits infinitely until a resource becomes available. Or one forces the thread to resume using osThreadResume which is discouraged.

    +

    The timeout value specifies the number of timer ticks until the time delay elapses. The value is an upper bound and depends on the actual time elapsed since the last timer tick.

    +

    Examples:

    +
      +
    • timeout value 0 : the system does not wait, even when no resource is available the RTOS function returns instantly.
    • +
    • timeout value 1 : the system waits until the next timer tick occurs; depending on the previous timer tick, it may be a very short wait time.
    • +
    • timeout value 2 : actual wait time is between 1 and 2 timer ticks.
    • +
    • timeout value osWaitForever : system waits infinite until a resource becomes available.
    • +
    +
    +TimerValues.png +
    +Example of timeout using osDelay()
    +

    +Calls from Interrupt Service Routines

    +

    The following CMSIS-RTOS2 functions can be called from threads and Interrupt Service Routines (ISR):

    + +

    Functions that cannot be called from an ISR are verifying the interrupt status and return the status code osErrorISR, in case they are called from an ISR context. In some implementations, this condition might be caught using the HARD_FAULT vector.

    +
    +
    + + + + diff --git a/docs/RTOS2/html/validation_8txt.html b/docs/RTOS2/html/validation_8txt.html new file mode 100644 index 0000000..1f1b046 --- /dev/null +++ b/docs/RTOS2/html/validation_8txt.html @@ -0,0 +1,129 @@ + + + + + +validation.txt File Reference +CMSIS-RTOS2: validation.txt File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    CMSIS-RTOS2 +  Version 2.1.3 +
    +
    Real-Time Operating System: API and RTX Reference Implementation
    +
    +
    + +
    +
      + +
    +
    + + + +
    +
    + +
    +
    +
    + + + + + + -- cgit