Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
pal/Source/PAL-Impl/Modules/RTOS/pal_rtos.c@0:06ee5f8a484a, 2017-03-18 (annotated)
- Committer:
- djmeyers
- Date:
- Sat Mar 18 22:37:16 2017 +0000
- Revision:
- 0:06ee5f8a484a
Initial commit
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| djmeyers | 0:06ee5f8a484a | 1 | /* |
| djmeyers | 0:06ee5f8a484a | 2 | * Copyright (c) 2016 ARM Limited. All rights reserved. |
| djmeyers | 0:06ee5f8a484a | 3 | * SPDX-License-Identifier: Apache-2.0 |
| djmeyers | 0:06ee5f8a484a | 4 | * Licensed under the Apache License, Version 2.0 (the License); you may |
| djmeyers | 0:06ee5f8a484a | 5 | * not use this file except in compliance with the License. |
| djmeyers | 0:06ee5f8a484a | 6 | * You may obtain a copy of the License at |
| djmeyers | 0:06ee5f8a484a | 7 | * |
| djmeyers | 0:06ee5f8a484a | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| djmeyers | 0:06ee5f8a484a | 9 | * |
| djmeyers | 0:06ee5f8a484a | 10 | * Unless required by applicable law or agreed to in writing, software |
| djmeyers | 0:06ee5f8a484a | 11 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT |
| djmeyers | 0:06ee5f8a484a | 12 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| djmeyers | 0:06ee5f8a484a | 13 | * See the License for the specific language governing permissions and |
| djmeyers | 0:06ee5f8a484a | 14 | * limitations under the License. |
| djmeyers | 0:06ee5f8a484a | 15 | */ |
| djmeyers | 0:06ee5f8a484a | 16 | |
| djmeyers | 0:06ee5f8a484a | 17 | |
| djmeyers | 0:06ee5f8a484a | 18 | #include "pal_rtos.h" |
| djmeyers | 0:06ee5f8a484a | 19 | #include "pal_plat_rtos.h" |
| djmeyers | 0:06ee5f8a484a | 20 | |
| djmeyers | 0:06ee5f8a484a | 21 | #if PAL_UNIQUE_THREAD_PRIORITY |
| djmeyers | 0:06ee5f8a484a | 22 | //! Threads priorities array. |
| djmeyers | 0:06ee5f8a484a | 23 | uint8_t g_palThreadPriorities[PAL_MAX_NUMBER_OF_THREADS] = {0}; |
| djmeyers | 0:06ee5f8a484a | 24 | #endif //PAL_UNIQUE_THREAD_PRIORITY |
| djmeyers | 0:06ee5f8a484a | 25 | |
| djmeyers | 0:06ee5f8a484a | 26 | void pal_osReboot(void) |
| djmeyers | 0:06ee5f8a484a | 27 | { |
| djmeyers | 0:06ee5f8a484a | 28 | pal_plat_osReboot(); |
| djmeyers | 0:06ee5f8a484a | 29 | } |
| djmeyers | 0:06ee5f8a484a | 30 | |
| djmeyers | 0:06ee5f8a484a | 31 | uint32_t pal_osKernelSysTick(void) |
| djmeyers | 0:06ee5f8a484a | 32 | { |
| djmeyers | 0:06ee5f8a484a | 33 | uint32_t result; |
| djmeyers | 0:06ee5f8a484a | 34 | result = pal_plat_osKernelSysTick(); |
| djmeyers | 0:06ee5f8a484a | 35 | return result; |
| djmeyers | 0:06ee5f8a484a | 36 | } |
| djmeyers | 0:06ee5f8a484a | 37 | |
| djmeyers | 0:06ee5f8a484a | 38 | |
| djmeyers | 0:06ee5f8a484a | 39 | uint64_t pal_osKernelSysTick64(void) |
| djmeyers | 0:06ee5f8a484a | 40 | { |
| djmeyers | 0:06ee5f8a484a | 41 | |
| djmeyers | 0:06ee5f8a484a | 42 | #if PAL_RTOS_64BIT_TICK_SUPPORTED |
| djmeyers | 0:06ee5f8a484a | 43 | uint64_t result; |
| djmeyers | 0:06ee5f8a484a | 44 | result = pal_plat_osKernelSysTick64(); |
| djmeyers | 0:06ee5f8a484a | 45 | return result; |
| djmeyers | 0:06ee5f8a484a | 46 | #else |
| djmeyers | 0:06ee5f8a484a | 47 | static uint64_t lastValue = 0; |
| djmeyers | 0:06ee5f8a484a | 48 | static uint64_t wraparoundsDetected = 0; |
| djmeyers | 0:06ee5f8a484a | 49 | const uint64_t one = 1; |
| djmeyers | 0:06ee5f8a484a | 50 | uint64_t tmp = pal_plat_osKernelSysTick() + (wraparoundsDetected << 32); |
| djmeyers | 0:06ee5f8a484a | 51 | if (tmp < lastValue) //erez's "wraparound algorithm" if we detect a wrap around add 1 to the higher 32 bits |
| djmeyers | 0:06ee5f8a484a | 52 | { |
| djmeyers | 0:06ee5f8a484a | 53 | tmp = tmp + (one << 32); |
| djmeyers | 0:06ee5f8a484a | 54 | wraparoundsDetected++; |
| djmeyers | 0:06ee5f8a484a | 55 | } |
| djmeyers | 0:06ee5f8a484a | 56 | lastValue = tmp; |
| djmeyers | 0:06ee5f8a484a | 57 | return (uint64_t)tmp; |
| djmeyers | 0:06ee5f8a484a | 58 | #endif |
| djmeyers | 0:06ee5f8a484a | 59 | } |
| djmeyers | 0:06ee5f8a484a | 60 | |
| djmeyers | 0:06ee5f8a484a | 61 | uint64_t pal_osKernelSysTickMicroSec(uint64_t microseconds) |
| djmeyers | 0:06ee5f8a484a | 62 | { |
| djmeyers | 0:06ee5f8a484a | 63 | uint64_t result; |
| djmeyers | 0:06ee5f8a484a | 64 | result = pal_plat_osKernelSysTickMicroSec(microseconds); |
| djmeyers | 0:06ee5f8a484a | 65 | return result; |
| djmeyers | 0:06ee5f8a484a | 66 | } |
| djmeyers | 0:06ee5f8a484a | 67 | |
| djmeyers | 0:06ee5f8a484a | 68 | uint64_t pal_osKernelSysMilliSecTick(uint64_t sysTicks) |
| djmeyers | 0:06ee5f8a484a | 69 | { |
| djmeyers | 0:06ee5f8a484a | 70 | uint64_t result; |
| djmeyers | 0:06ee5f8a484a | 71 | result = pal_plat_osKernelSysMilliSecTick(sysTicks); |
| djmeyers | 0:06ee5f8a484a | 72 | return result; |
| djmeyers | 0:06ee5f8a484a | 73 | } |
| djmeyers | 0:06ee5f8a484a | 74 | |
| djmeyers | 0:06ee5f8a484a | 75 | uint64_t pal_osKernelSysTickFrequency(void) |
| djmeyers | 0:06ee5f8a484a | 76 | { |
| djmeyers | 0:06ee5f8a484a | 77 | uint64_t result; |
| djmeyers | 0:06ee5f8a484a | 78 | result = pal_plat_osKernelSysTickFrequency(); |
| djmeyers | 0:06ee5f8a484a | 79 | return result; |
| djmeyers | 0:06ee5f8a484a | 80 | } |
| djmeyers | 0:06ee5f8a484a | 81 | |
| djmeyers | 0:06ee5f8a484a | 82 | palStatus_t pal_osThreadCreate(palThreadFuncPtr function, void* funcArgument, palThreadPriority_t priority, uint32_t stackSize, uint32_t* stackPtr, palThreadLocalStore_t* store, palThreadID_t* threadID) |
| djmeyers | 0:06ee5f8a484a | 83 | { |
| djmeyers | 0:06ee5f8a484a | 84 | palStatus_t status = PAL_SUCCESS; |
| djmeyers | 0:06ee5f8a484a | 85 | |
| djmeyers | 0:06ee5f8a484a | 86 | #if PAL_UNIQUE_THREAD_PRIORITY |
| djmeyers | 0:06ee5f8a484a | 87 | //! check if the priority have been used by other thread before |
| djmeyers | 0:06ee5f8a484a | 88 | if(PAL_osPriorityError == priority) |
| djmeyers | 0:06ee5f8a484a | 89 | { |
| djmeyers | 0:06ee5f8a484a | 90 | status = PAL_ERR_INVALID_ARGUMENT; |
| djmeyers | 0:06ee5f8a484a | 91 | } |
| djmeyers | 0:06ee5f8a484a | 92 | |
| djmeyers | 0:06ee5f8a484a | 93 | if ((PAL_SUCCESS == status) && (g_palThreadPriorities[priority+PRIORYT_INDEX_OFFSET])) |
| djmeyers | 0:06ee5f8a484a | 94 | { |
| djmeyers | 0:06ee5f8a484a | 95 | *threadID = NULLPTR; |
| djmeyers | 0:06ee5f8a484a | 96 | status = PAL_ERR_RTOS_PRIORITY; |
| djmeyers | 0:06ee5f8a484a | 97 | } |
| djmeyers | 0:06ee5f8a484a | 98 | #endif //PAL_IGNORE_UNIQUE_THREAD_PRIORITY |
| djmeyers | 0:06ee5f8a484a | 99 | |
| djmeyers | 0:06ee5f8a484a | 100 | if (PAL_SUCCESS == status) |
| djmeyers | 0:06ee5f8a484a | 101 | { |
| djmeyers | 0:06ee5f8a484a | 102 | status = pal_plat_osThreadCreate(function, funcArgument, priority, stackSize, stackPtr, store, threadID); |
| djmeyers | 0:06ee5f8a484a | 103 | } |
| djmeyers | 0:06ee5f8a484a | 104 | return status; |
| djmeyers | 0:06ee5f8a484a | 105 | } |
| djmeyers | 0:06ee5f8a484a | 106 | |
| djmeyers | 0:06ee5f8a484a | 107 | palStatus_t pal_osThreadTerminate(palThreadID_t* threadID) |
| djmeyers | 0:06ee5f8a484a | 108 | { |
| djmeyers | 0:06ee5f8a484a | 109 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 110 | status = pal_plat_osThreadTerminate(threadID); |
| djmeyers | 0:06ee5f8a484a | 111 | return status; |
| djmeyers | 0:06ee5f8a484a | 112 | } |
| djmeyers | 0:06ee5f8a484a | 113 | |
| djmeyers | 0:06ee5f8a484a | 114 | palThreadID_t pal_osThreadGetId(void) |
| djmeyers | 0:06ee5f8a484a | 115 | { |
| djmeyers | 0:06ee5f8a484a | 116 | palThreadID_t result; |
| djmeyers | 0:06ee5f8a484a | 117 | result = pal_plat_osThreadGetId(); |
| djmeyers | 0:06ee5f8a484a | 118 | return result; |
| djmeyers | 0:06ee5f8a484a | 119 | } |
| djmeyers | 0:06ee5f8a484a | 120 | |
| djmeyers | 0:06ee5f8a484a | 121 | void* pal_osThreadGetLocalStore(void) |
| djmeyers | 0:06ee5f8a484a | 122 | { |
| djmeyers | 0:06ee5f8a484a | 123 | void* result; |
| djmeyers | 0:06ee5f8a484a | 124 | result = pal_plat_osThreadGetLocalStore(); |
| djmeyers | 0:06ee5f8a484a | 125 | return result; |
| djmeyers | 0:06ee5f8a484a | 126 | } |
| djmeyers | 0:06ee5f8a484a | 127 | |
| djmeyers | 0:06ee5f8a484a | 128 | palStatus_t pal_osDelay(uint32_t milliseconds) |
| djmeyers | 0:06ee5f8a484a | 129 | { |
| djmeyers | 0:06ee5f8a484a | 130 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 131 | status = pal_plat_osDelay(milliseconds); |
| djmeyers | 0:06ee5f8a484a | 132 | return status; |
| djmeyers | 0:06ee5f8a484a | 133 | } |
| djmeyers | 0:06ee5f8a484a | 134 | |
| djmeyers | 0:06ee5f8a484a | 135 | |
| djmeyers | 0:06ee5f8a484a | 136 | palStatus_t pal_osTimerCreate(palTimerFuncPtr function, void* funcArgument, palTimerType_t timerType, palTimerID_t* timerID) |
| djmeyers | 0:06ee5f8a484a | 137 | { |
| djmeyers | 0:06ee5f8a484a | 138 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 139 | status = pal_plat_osTimerCreate(function, funcArgument, timerType, timerID); |
| djmeyers | 0:06ee5f8a484a | 140 | return status; |
| djmeyers | 0:06ee5f8a484a | 141 | } |
| djmeyers | 0:06ee5f8a484a | 142 | |
| djmeyers | 0:06ee5f8a484a | 143 | palStatus_t pal_osTimerStart(palTimerID_t timerID, uint32_t millisec) |
| djmeyers | 0:06ee5f8a484a | 144 | { |
| djmeyers | 0:06ee5f8a484a | 145 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 146 | status = pal_plat_osTimerStart(timerID, millisec); |
| djmeyers | 0:06ee5f8a484a | 147 | return status; |
| djmeyers | 0:06ee5f8a484a | 148 | } |
| djmeyers | 0:06ee5f8a484a | 149 | |
| djmeyers | 0:06ee5f8a484a | 150 | palStatus_t pal_osTimerStop(palTimerID_t timerID) |
| djmeyers | 0:06ee5f8a484a | 151 | { |
| djmeyers | 0:06ee5f8a484a | 152 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 153 | status = pal_plat_osTimerStop(timerID); |
| djmeyers | 0:06ee5f8a484a | 154 | return status; |
| djmeyers | 0:06ee5f8a484a | 155 | } |
| djmeyers | 0:06ee5f8a484a | 156 | |
| djmeyers | 0:06ee5f8a484a | 157 | palStatus_t pal_osTimerDelete(palTimerID_t* timerID) |
| djmeyers | 0:06ee5f8a484a | 158 | { |
| djmeyers | 0:06ee5f8a484a | 159 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 160 | status = pal_plat_osTimerDelete(timerID); |
| djmeyers | 0:06ee5f8a484a | 161 | return status; |
| djmeyers | 0:06ee5f8a484a | 162 | } |
| djmeyers | 0:06ee5f8a484a | 163 | |
| djmeyers | 0:06ee5f8a484a | 164 | palStatus_t pal_osMutexCreate(palMutexID_t* mutexID) |
| djmeyers | 0:06ee5f8a484a | 165 | { |
| djmeyers | 0:06ee5f8a484a | 166 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 167 | status = pal_plat_osMutexCreate(mutexID); |
| djmeyers | 0:06ee5f8a484a | 168 | return status; |
| djmeyers | 0:06ee5f8a484a | 169 | } |
| djmeyers | 0:06ee5f8a484a | 170 | |
| djmeyers | 0:06ee5f8a484a | 171 | palStatus_t pal_osMutexWait(palMutexID_t mutexID, uint32_t millisec) |
| djmeyers | 0:06ee5f8a484a | 172 | { |
| djmeyers | 0:06ee5f8a484a | 173 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 174 | status = pal_plat_osMutexWait(mutexID, millisec); |
| djmeyers | 0:06ee5f8a484a | 175 | return status; |
| djmeyers | 0:06ee5f8a484a | 176 | } |
| djmeyers | 0:06ee5f8a484a | 177 | |
| djmeyers | 0:06ee5f8a484a | 178 | palStatus_t pal_osMutexRelease(palMutexID_t mutexID) |
| djmeyers | 0:06ee5f8a484a | 179 | { |
| djmeyers | 0:06ee5f8a484a | 180 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 181 | status = pal_plat_osMutexRelease(mutexID); |
| djmeyers | 0:06ee5f8a484a | 182 | return status; |
| djmeyers | 0:06ee5f8a484a | 183 | } |
| djmeyers | 0:06ee5f8a484a | 184 | |
| djmeyers | 0:06ee5f8a484a | 185 | palStatus_t pal_osMutexDelete(palMutexID_t* mutexID) |
| djmeyers | 0:06ee5f8a484a | 186 | { |
| djmeyers | 0:06ee5f8a484a | 187 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 188 | status = pal_plat_osMutexDelete(mutexID); |
| djmeyers | 0:06ee5f8a484a | 189 | return status; |
| djmeyers | 0:06ee5f8a484a | 190 | } |
| djmeyers | 0:06ee5f8a484a | 191 | palStatus_t pal_osSemaphoreCreate(uint32_t count, palSemaphoreID_t* semaphoreID) |
| djmeyers | 0:06ee5f8a484a | 192 | { |
| djmeyers | 0:06ee5f8a484a | 193 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 194 | status = pal_plat_osSemaphoreCreate(count, semaphoreID); |
| djmeyers | 0:06ee5f8a484a | 195 | return status; |
| djmeyers | 0:06ee5f8a484a | 196 | } |
| djmeyers | 0:06ee5f8a484a | 197 | |
| djmeyers | 0:06ee5f8a484a | 198 | palStatus_t pal_osSemaphoreWait(palSemaphoreID_t semaphoreID, uint32_t millisec, int32_t* countersAvailable) |
| djmeyers | 0:06ee5f8a484a | 199 | { |
| djmeyers | 0:06ee5f8a484a | 200 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 201 | status = pal_plat_osSemaphoreWait(semaphoreID, millisec, countersAvailable); |
| djmeyers | 0:06ee5f8a484a | 202 | return status; |
| djmeyers | 0:06ee5f8a484a | 203 | } |
| djmeyers | 0:06ee5f8a484a | 204 | |
| djmeyers | 0:06ee5f8a484a | 205 | palStatus_t pal_osSemaphoreRelease(palSemaphoreID_t semaphoreID) |
| djmeyers | 0:06ee5f8a484a | 206 | { |
| djmeyers | 0:06ee5f8a484a | 207 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 208 | status = pal_plat_osSemaphoreRelease(semaphoreID); |
| djmeyers | 0:06ee5f8a484a | 209 | return status; |
| djmeyers | 0:06ee5f8a484a | 210 | } |
| djmeyers | 0:06ee5f8a484a | 211 | |
| djmeyers | 0:06ee5f8a484a | 212 | palStatus_t pal_osSemaphoreDelete(palSemaphoreID_t* semaphoreID) |
| djmeyers | 0:06ee5f8a484a | 213 | { |
| djmeyers | 0:06ee5f8a484a | 214 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 215 | status = pal_plat_osSemaphoreDelete(semaphoreID); |
| djmeyers | 0:06ee5f8a484a | 216 | return status; |
| djmeyers | 0:06ee5f8a484a | 217 | } |
| djmeyers | 0:06ee5f8a484a | 218 | |
| djmeyers | 0:06ee5f8a484a | 219 | palStatus_t pal_osPoolCreate(uint32_t blockSize, uint32_t blockCount, palMemoryPoolID_t* memoryPoolID) |
| djmeyers | 0:06ee5f8a484a | 220 | { |
| djmeyers | 0:06ee5f8a484a | 221 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 222 | status = pal_plat_osPoolCreate(blockSize, blockCount, memoryPoolID); |
| djmeyers | 0:06ee5f8a484a | 223 | return status; |
| djmeyers | 0:06ee5f8a484a | 224 | } |
| djmeyers | 0:06ee5f8a484a | 225 | |
| djmeyers | 0:06ee5f8a484a | 226 | void* pal_osPoolAlloc(palMemoryPoolID_t memoryPoolID) |
| djmeyers | 0:06ee5f8a484a | 227 | { |
| djmeyers | 0:06ee5f8a484a | 228 | void* result; |
| djmeyers | 0:06ee5f8a484a | 229 | result = pal_plat_osPoolAlloc(memoryPoolID); |
| djmeyers | 0:06ee5f8a484a | 230 | return result; |
| djmeyers | 0:06ee5f8a484a | 231 | } |
| djmeyers | 0:06ee5f8a484a | 232 | |
| djmeyers | 0:06ee5f8a484a | 233 | void* pal_osPoolCAlloc(palMemoryPoolID_t memoryPoolID) |
| djmeyers | 0:06ee5f8a484a | 234 | { |
| djmeyers | 0:06ee5f8a484a | 235 | void* result; |
| djmeyers | 0:06ee5f8a484a | 236 | //TODO(nirson01): debug print in case of failed alloc? |
| djmeyers | 0:06ee5f8a484a | 237 | result = pal_plat_osPoolCAlloc(memoryPoolID); |
| djmeyers | 0:06ee5f8a484a | 238 | return result; |
| djmeyers | 0:06ee5f8a484a | 239 | } |
| djmeyers | 0:06ee5f8a484a | 240 | |
| djmeyers | 0:06ee5f8a484a | 241 | palStatus_t pal_osPoolFree(palMemoryPoolID_t memoryPoolID, void* block) |
| djmeyers | 0:06ee5f8a484a | 242 | { |
| djmeyers | 0:06ee5f8a484a | 243 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 244 | //TODO(nirson01): debug print in case of failed alloc? |
| djmeyers | 0:06ee5f8a484a | 245 | status = pal_plat_osPoolFree(memoryPoolID, block); |
| djmeyers | 0:06ee5f8a484a | 246 | return status; |
| djmeyers | 0:06ee5f8a484a | 247 | } |
| djmeyers | 0:06ee5f8a484a | 248 | |
| djmeyers | 0:06ee5f8a484a | 249 | palStatus_t pal_osPoolDestroy(palMemoryPoolID_t* memoryPoolID) |
| djmeyers | 0:06ee5f8a484a | 250 | { |
| djmeyers | 0:06ee5f8a484a | 251 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 252 | status = pal_plat_osPoolDestroy(memoryPoolID); |
| djmeyers | 0:06ee5f8a484a | 253 | return status; |
| djmeyers | 0:06ee5f8a484a | 254 | } |
| djmeyers | 0:06ee5f8a484a | 255 | |
| djmeyers | 0:06ee5f8a484a | 256 | palStatus_t pal_osMessageQueueCreate(uint32_t messageQSize, palMessageQID_t* messageQID) |
| djmeyers | 0:06ee5f8a484a | 257 | { |
| djmeyers | 0:06ee5f8a484a | 258 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 259 | status = pal_plat_osMessageQueueCreate(messageQSize, messageQID); |
| djmeyers | 0:06ee5f8a484a | 260 | return status; |
| djmeyers | 0:06ee5f8a484a | 261 | } |
| djmeyers | 0:06ee5f8a484a | 262 | |
| djmeyers | 0:06ee5f8a484a | 263 | palStatus_t pal_osMessagePut(palMessageQID_t messageQID, uint32_t info, uint32_t timeout) |
| djmeyers | 0:06ee5f8a484a | 264 | { |
| djmeyers | 0:06ee5f8a484a | 265 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 266 | status = pal_plat_osMessagePut(messageQID, info, timeout); |
| djmeyers | 0:06ee5f8a484a | 267 | return status; |
| djmeyers | 0:06ee5f8a484a | 268 | } |
| djmeyers | 0:06ee5f8a484a | 269 | |
| djmeyers | 0:06ee5f8a484a | 270 | palStatus_t pal_osMessageGet(palMessageQID_t messageQID, uint32_t timeout, uint32_t* messageValue) |
| djmeyers | 0:06ee5f8a484a | 271 | { |
| djmeyers | 0:06ee5f8a484a | 272 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 273 | status = pal_plat_osMessageGet(messageQID, timeout, messageValue); |
| djmeyers | 0:06ee5f8a484a | 274 | return status; |
| djmeyers | 0:06ee5f8a484a | 275 | } |
| djmeyers | 0:06ee5f8a484a | 276 | |
| djmeyers | 0:06ee5f8a484a | 277 | palStatus_t pal_osMessageQueueDestroy(palMessageQID_t* messageQID) |
| djmeyers | 0:06ee5f8a484a | 278 | { |
| djmeyers | 0:06ee5f8a484a | 279 | palStatus_t status; |
| djmeyers | 0:06ee5f8a484a | 280 | status = pal_plat_osMessageQueueDestroy(messageQID); |
| djmeyers | 0:06ee5f8a484a | 281 | return status; |
| djmeyers | 0:06ee5f8a484a | 282 | } |
| djmeyers | 0:06ee5f8a484a | 283 | |
| djmeyers | 0:06ee5f8a484a | 284 | int32_t pal_osAtomicIncrement(int32_t* valuePtr, int32_t increment) |
| djmeyers | 0:06ee5f8a484a | 285 | { |
| djmeyers | 0:06ee5f8a484a | 286 | int32_t result; |
| djmeyers | 0:06ee5f8a484a | 287 | result = pal_plat_osAtomicIncrement(valuePtr, increment); |
| djmeyers | 0:06ee5f8a484a | 288 | return result; |
| djmeyers | 0:06ee5f8a484a | 289 | } |
| djmeyers | 0:06ee5f8a484a | 290 | |
| djmeyers | 0:06ee5f8a484a | 291 | |
| djmeyers | 0:06ee5f8a484a | 292 | |
| djmeyers | 0:06ee5f8a484a | 293 | #ifdef DEBUG |
| djmeyers | 0:06ee5f8a484a | 294 | #include "stdarg.h" |
| djmeyers | 0:06ee5f8a484a | 295 | #endif |
| djmeyers | 0:06ee5f8a484a | 296 | |
| djmeyers | 0:06ee5f8a484a | 297 | void dbgPrintf( const char* function, uint32_t line, const char * format, ... ) |
| djmeyers | 0:06ee5f8a484a | 298 | { |
| djmeyers | 0:06ee5f8a484a | 299 | #ifdef DEBUG |
| djmeyers | 0:06ee5f8a484a | 300 | static palMutexID_t printfMutex = NULLPTR; |
| djmeyers | 0:06ee5f8a484a | 301 | |
| djmeyers | 0:06ee5f8a484a | 302 | va_list args; |
| djmeyers | 0:06ee5f8a484a | 303 | if (!printfMutex) |
| djmeyers | 0:06ee5f8a484a | 304 | { |
| djmeyers | 0:06ee5f8a484a | 305 | pal_osMutexCreate(&printfMutex); |
| djmeyers | 0:06ee5f8a484a | 306 | } |
| djmeyers | 0:06ee5f8a484a | 307 | pal_osMutexWait(printfMutex, PAL_MAX_UINT32); |
| djmeyers | 0:06ee5f8a484a | 308 | #ifdef VERBOSE |
| djmeyers | 0:06ee5f8a484a | 309 | pal_plat_printf("%s:%ld\t",function,line); |
| djmeyers | 0:06ee5f8a484a | 310 | #endif |
| djmeyers | 0:06ee5f8a484a | 311 | va_start (args, format); |
| djmeyers | 0:06ee5f8a484a | 312 | pal_plat_vprintf (format, args); |
| djmeyers | 0:06ee5f8a484a | 313 | va_end (args); |
| djmeyers | 0:06ee5f8a484a | 314 | pal_osMutexRelease(printfMutex); |
| djmeyers | 0:06ee5f8a484a | 315 | #endif |
| djmeyers | 0:06ee5f8a484a | 316 | } |
| djmeyers | 0:06ee5f8a484a | 317 | |
| djmeyers | 0:06ee5f8a484a | 318 | |
| djmeyers | 0:06ee5f8a484a | 319 |