123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /**
- * @file os_port_windows.h
- * @brief RTOS abstraction layer (Windows)
- *
- * @section License
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- *
- * Copyright (C) 2010-2023 Oryx Embedded SARL. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * @author Oryx Embedded SARL (www.oryx-embedded.com)
- * @version 2.2.4
- **/
- #ifndef _OS_PORT_WINDOWS_H
- #define _OS_PORT_WINDOWS_H
- //Use dynamic memory allocation for tasks
- #define OS_STATIC_TASK_SUPPORT DISABLED
- //Invalid task identifier
- #define OS_INVALID_TASK_ID NULL
- //Self task identifier
- #define OS_SELF_TASK_ID NULL
- //Task priority (normal)
- #ifndef OS_TASK_PRIORITY_NORMAL
- #define OS_TASK_PRIORITY_NORMAL 0
- #endif
- //Task priority (high)
- #ifndef OS_TASK_PRIORITY_HIGH
- #define OS_TASK_PRIORITY_HIGH 0
- #endif
- //Milliseconds to system ticks
- #ifndef OS_MS_TO_SYSTICKS
- #define OS_MS_TO_SYSTICKS(n) (n)
- #endif
- //System ticks to milliseconds
- #ifndef OS_SYSTICKS_TO_MS
- #define OS_SYSTICKS_TO_MS(n) (n)
- #endif
- //Retrieve 64-bit system time (not implemented)
- #ifndef osGetSystemTime64
- #define osGetSystemTime64() osGetSystemTime()
- #endif
- //Task prologue
- #define osEnterTask()
- //Task epilogue
- #define osExitTask()
- //Interrupt service routine prologue
- #define osEnterIsr()
- //Interrupt service routine epilogue
- #define osExitIsr(flag)
- //C++ guard
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * @brief System time
- **/
- typedef uint32_t systime_t;
- /**
- * @brief Task identifier
- **/
- typedef void *OsTaskId;
- /**
- * @brief Event object
- **/
- typedef struct
- {
- void *handle;
- } OsEvent;
- /**
- * @brief Semaphore object
- **/
- typedef struct
- {
- void *handle;
- } OsSemaphore;
- /**
- * @brief Mutex object
- **/
- typedef struct
- {
- void *handle;
- } OsMutex;
- /**
- * @brief Task routine
- **/
- typedef void (*OsTaskCode)(void *param);
- //Kernel management
- void osInitKernel(void);
- void osStartKernel(void);
- //Task management
- OsTaskId osCreateTask(const char_t *name, OsTaskCode taskCode,
- void *param, size_t stackSize, int_t priority);
- void osDeleteTask(OsTaskId taskId);
- void osDelayTask(systime_t delay);
- void osSwitchTask(void);
- void osSuspendAllTasks(void);
- void osResumeAllTasks(void);
- //Event management
- bool_t osCreateEvent(OsEvent *event);
- void osDeleteEvent(OsEvent *event);
- void osSetEvent(OsEvent *event);
- void osResetEvent(OsEvent *event);
- bool_t osWaitForEvent(OsEvent *event, systime_t timeout);
- bool_t osSetEventFromIsr(OsEvent *event);
- //Semaphore management
- bool_t osCreateSemaphore(OsSemaphore *semaphore, uint_t count);
- void osDeleteSemaphore(OsSemaphore *semaphore);
- bool_t osWaitForSemaphore(OsSemaphore *semaphore, systime_t timeout);
- void osReleaseSemaphore(OsSemaphore *semaphore);
- //Mutex management
- bool_t osCreateMutex(OsMutex *mutex);
- void osDeleteMutex(OsMutex *mutex);
- void osAcquireMutex(OsMutex *mutex);
- void osReleaseMutex(OsMutex *mutex);
- //System time
- systime_t osGetSystemTime(void);
- //Memory management
- void *osAllocMem(size_t size);
- void osFreeMem(void *p);
- //Miscellaneous definitions
- #define strlwr _strlwr
- #define strcasecmp _stricmp
- #define strncasecmp _strnicmp
- #define strtok_r(str, delim, p) strtok(str, delim)
- //C++ guard
- #ifdef __cplusplus
- }
- #endif
- #endif
|