From 58ca309470df23d2c096691e63b0f7f1a28ef5ae Mon Sep 17 00:00:00 2001 From: ChenHengming Date: Mon, 27 Jul 2015 10:22:37 +0000 Subject: [PATCH] [osal]: add rk_log, rk_list, rk_thread to osal directory linux test ok window can not compile, need more check git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@3 6e48237b-75ef-9749-8fc9-41990f28c85a --- CMakeLists.txt | 211 +++ build/linux/make-Makefiles.bash | 4 + build/vc12-x86_64/build-all.bat | 14 + build/vc12-x86_64/make-solutions.bat | 8 + inc/rk_type.h | 7 +- osal/CMakeLists.txt | 38 + osal/inc/rk_list.h | 159 +++ osal/inc/rk_log.h | 72 + osal/inc/rk_thread.h | 37 + osal/rk_list.cpp | 465 +++++++ osal/rk_log.cpp | 72 + osal/test/CMakeLists.txt | 18 + osal/test/rk_log_test.c | 37 + osal/test/rk_thread_test.c | 78 ++ osal/window/pthread/dll/x64/pthreadGC2.dll | Bin 0 -> 185976 bytes osal/window/pthread/dll/x64/pthreadVC2.dll | Bin 0 -> 82944 bytes osal/window/pthread/dll/x86/pthreadGC2.dll | Bin 0 -> 119888 bytes osal/window/pthread/dll/x86/pthreadGCE2.dll | Bin 0 -> 121953 bytes osal/window/pthread/dll/x86/pthreadVC2.dll | Bin 0 -> 55808 bytes osal/window/pthread/dll/x86/pthreadVCE2.dll | Bin 0 -> 61952 bytes osal/window/pthread/dll/x86/pthreadVSE2.dll | Bin 0 -> 57344 bytes osal/window/pthread/inc/pthread.h | 1368 +++++++++++++++++++ osal/window/pthread/inc/sched.h | 183 +++ osal/window/pthread/inc/semaphore.h | 169 +++ osal/window/pthread/lib/x64/pthreadVC2.lib | Bin 0 -> 29738 bytes osal/window/pthread/lib/x86/pthreadVC2.lib | Bin 0 -> 30334 bytes osal/window/pthread/lib/x86/pthreadVCE2.lib | Bin 0 -> 30460 bytes osal/window/pthread/lib/x86/pthreadVSE2.lib | Bin 0 -> 30460 bytes osal/window/stdint.h | 13 + 29 files changed, 2949 insertions(+), 4 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 build/linux/make-Makefiles.bash create mode 100644 build/vc12-x86_64/build-all.bat create mode 100644 build/vc12-x86_64/make-solutions.bat create mode 100644 osal/CMakeLists.txt create mode 100644 osal/inc/rk_list.h create mode 100644 osal/inc/rk_log.h create mode 100644 osal/inc/rk_thread.h create mode 100644 osal/rk_list.cpp create mode 100644 osal/rk_log.cpp create mode 100644 osal/test/CMakeLists.txt create mode 100644 osal/test/rk_log_test.c create mode 100644 osal/test/rk_thread_test.c create mode 100644 osal/window/pthread/dll/x64/pthreadGC2.dll create mode 100644 osal/window/pthread/dll/x64/pthreadVC2.dll create mode 100644 osal/window/pthread/dll/x86/pthreadGC2.dll create mode 100644 osal/window/pthread/dll/x86/pthreadGCE2.dll create mode 100644 osal/window/pthread/dll/x86/pthreadVC2.dll create mode 100644 osal/window/pthread/dll/x86/pthreadVCE2.dll create mode 100644 osal/window/pthread/dll/x86/pthreadVSE2.dll create mode 100644 osal/window/pthread/inc/pthread.h create mode 100644 osal/window/pthread/inc/sched.h create mode 100644 osal/window/pthread/inc/semaphore.h create mode 100644 osal/window/pthread/lib/x64/pthreadVC2.lib create mode 100644 osal/window/pthread/lib/x86/pthreadVC2.lib create mode 100644 osal/window/pthread/lib/x86/pthreadVCE2.lib create mode 100644 osal/window/pthread/lib/x86/pthreadVSE2.lib create mode 100644 osal/window/stdint.h diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..70bd89c4 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,211 @@ +# ---------------------------------------------------------------------------- +# Root CMake file for Rockchip Media Process Platform (MPP) +# +# - 10:34 2015/7/27: Initial version +# +# ---------------------------------------------------------------------------- + +# vim: syntax=cmake +if(NOT CMAKE_BUILD_TYPE) + # default to Release build for GCC builds + set(CMAKE_BUILD_TYPE Debug CACHE STRING + "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." + FORCE) +endif() +message(STATUS "cmake version ${CMAKE_VERSION}") +if(NOT CMAKE_VERSION VERSION_LESS "2.8.12.20131121") + cmake_policy(SET CMP0025 OLD) # report Apple's Clang as just Clang + cmake_policy(SET CMP0042 OLD) # do not require MACOSX_RPATH +endif() + +project (rk_mpp) + +cmake_minimum_required (VERSION 2.8.8) # OBJECT libraries require 2.8.8 +include(CheckIncludeFiles) +include(CheckFunctionExists) +include(CheckSymbolExists) +include(CheckCXXCompilerFlag) + +# ---------------------------------------------------------------------------- +# add debug define in project +# ---------------------------------------------------------------------------- +if(NOT $(CMAKE_BUILD_TYPE) MATCHES “Release”) + option(RK_DEBUG "Enable run-time debug mode(debugging)" ON) + if(RK_DEBUG) + add_definitions(-DRK_DEBUG) + message(STATUS "rk_mpp debug mode is enabled") + endif() +endif() + +# ---------------------------------------------------------------------------- +# System architecture detection +# ---------------------------------------------------------------------------- +string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" SYSPROC) +set(X86_ALIASES x86 i386 i686 x86_64 amd64) +list(FIND X86_ALIASES "${SYSPROC}" X86MATCH) +if("${SYSPROC}" STREQUAL "" OR X86MATCH GREATER "-1") + message(STATUS "Detected x86 system processor") + set(X86 1) + add_definitions(-DARCH_X86=1) + if("${CMAKE_SIZEOF_VOID_P}" MATCHES 8) + set(X64 1) + add_definitions(-DARCH_X64=1) + message(STATUS "Define X86_64 to 1") + endif() +elseif(${SYSPROC} STREQUAL "armv6l") + message(STATUS "Detected ARM system processor") + set(ARM 1) + add_definitions(-DARCH_ARM=1 -DDHAVE_ARMV6=1) +else() + message(STATUS "CMAKE_SYSTEM_PROCESSOR value `${CMAKE_SYSTEM_PROCESSOR}` is unknown") + message(STATUS "Please add this value near ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE}") +endif() + +if(UNIX) + SET(PLATFORM_LIBS pthread) + if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + SET(PLATFORM_LIBS ${PLATFORM_LIBS} rt) + endif() +endif(UNIX) + +# ---------------------------------------------------------------------------- +# Compiler detection +# ---------------------------------------------------------------------------- +if(CMAKE_GENERATOR STREQUAL "Xcode") + set(XCODE 1) +endif() + +if (APPLE) + add_definitions(-DMACOS) +endif() + +if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(CLANG 1) +endif() +if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") + set(INTEL_CXX 1) +endif() +if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + set(GCC 1) +endif() + +if(INTEL_CXX AND WIN32) + # treat icl roughly like MSVC + set(MSVC 1) +endif() +if(MSVC) + option(STATIC_LINK_CRT "Statically link C runtime for release builds" OFF) + if (STATIC_LINK_CRT) + set(CompilerFlags CMAKE_CXX_FLAGS_RELEASE CMAKE_C_FLAGS_RELEASE) + foreach(CompilerFlag ${CompilerFlags}) + string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}") + endforeach() + endif (STATIC_LINK_CRT) + add_definitions(/W3) # Full warnings + add_definitions(/Ob2) # always inline + add_definitions(/MP) # multithreaded build + # disable Microsofts suggestions for proprietary secure APIs + add_definitions(/D_CRT_SECURE_NO_WARNINGS) +endif(MSVC) + +if(INTEL_CXX AND UNIX) + # treat icpc roughly like gcc + set(GCC 1) + add_definitions(-Wall -Wextra -Wshadow) +elseif(CLANG) + # treat clang roughly like gcc + set(GCC 1) + add_definitions(-Wall -Wextra -Wshadow -ffast-math) +elseif(CMAKE_COMPILER_IS_GNUCXX) + add_definitions(-Wall -Wextra -Wshadow -ffast-math) + check_cxx_compiler_flag(-Wno-narrowing GCC_HAS_NO_NARROWING) + check_cxx_compiler_flag(-mstackrealign GCC_HAS_STACK_REALIGN) + if (GCC_HAS_STACK_REALIGN) + add_definitions(-mstackrealign) + endif() + execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) +endif() + +if(GCC) + if(X64 AND NOT WIN32) + add_definitions(-fPIC) + endif(X64 AND NOT WIN32) + if(X86 AND NOT X64) + add_definitions(-march=i686) + endif() + if(ARM) + add_definitions(-march=armv6 -mfloat-abi=hard -mfpu=vfp) + endif() +endif(GCC) + +# ---------------------------------------------------------------------------- +# Build options +# ---------------------------------------------------------------------------- +set(HDR_INSTALL_DIR "./out/inc" CACHE STRING "Install location of headers") +set(LIB_INSTALL_DIR "./out/lib" CACHE STRING "Install location of libraries") +set(BIN_INSTALL_DIR "./out/bin" CACHE STRING "Install location of executables") + +# ---------------------------------------------------------------------------- +# Set Warning as Error +# ---------------------------------------------------------------------------- +option(WARNINGS_AS_ERRORS "Stop compiles on first warning" OFF) +if(WARNINGS_AS_ERRORS) + if(GCC) + add_definitions(-Werror) + elseif(MSVC) + add_definitions(/WX) + endif() +endif(WARNINGS_AS_ERRORS) + +# ---------------------------------------------------------------------------- +# Visual leak detector +# ---------------------------------------------------------------------------- +if (WIN32) + find_package(VLD QUIET) + if(VLD_FOUND) + add_definitions(-DHAVE_VLD) + include_directories(${VLD_INCLUDE_DIRS}) + set(PLATFORM_LIBS ${PLATFORM_LIBS} ${VLD_LIBRARIES}) + link_directories(${VLD_LIBRARY_DIRS}) + endif() + option(WINXP_SUPPORT "Make binaries compatible with Windows XP" OFF) + if(WINXP_SUPPORT) + # force use of workarounds for CONDITION_VARIABLE and atomic + # intrinsics introduced after XP + add_definitions(-D_WIN32_WINNT=_WIN32_WINNT_WINXP) + endif() +endif() + +# ---------------------------------------------------------------------------- +# look for stdint.h +# ---------------------------------------------------------------------------- +if(MSVC) + check_include_files(stdint.h HAVE_STDINT_H) + if(NOT HAVE_STDINT_H) + include_directories(osal/window) + endif(NOT HAVE_STDINT_H) +endif(MSVC) + +# ---------------------------------------------------------------------------- +# Share library option +# ---------------------------------------------------------------------------- +option(ENABLE_STATIC "Build shared library" ON) +option(ENABLE_SHARED "Build shared library" OFF) + + +# ---------------------------------------------------------------------------- +# Start module definition +# ---------------------------------------------------------------------------- +# project overall include file +include_directories(inc) + +# ---------------------------------------------------------------------------- +# osal library +# ---------------------------------------------------------------------------- +# Operation System Abstract Layer (OSAL) include +include_directories(osal/inc) +# OSAL is needed on all platform, do not need option +add_subdirectory(osal) + + + diff --git a/build/linux/make-Makefiles.bash b/build/linux/make-Makefiles.bash new file mode 100644 index 00000000..c0f8c3ad --- /dev/null +++ b/build/linux/make-Makefiles.bash @@ -0,0 +1,4 @@ +#!/bin/bash +# Run this from within a bash shell +cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=debug ../../ && ccmake ../../ + diff --git a/build/vc12-x86_64/build-all.bat b/build/vc12-x86_64/build-all.bat new file mode 100644 index 00000000..928d4812 --- /dev/null +++ b/build/vc12-x86_64/build-all.bat @@ -0,0 +1,14 @@ +@echo off +if "%VS120COMNTOOLS%" == "" ( + msg "%username%" "Visual Studio 12 not detected" + exit 1 +) +if not exist rk_mpp.sln ( + call make-solutions.bat +) +if exist rk_mpp.sln ( + call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" + rem MSBuild /property:Configuration="Release" rk_mpp.sln + MSBuild /property:Configuration="Debug" rk_mpp.sln + rem MSBuild /property:Configuration="RelWithDebInfo" rk_mpp.sln +) \ No newline at end of file diff --git a/build/vc12-x86_64/make-solutions.bat b/build/vc12-x86_64/make-solutions.bat new file mode 100644 index 00000000..d3a25597 --- /dev/null +++ b/build/vc12-x86_64/make-solutions.bat @@ -0,0 +1,8 @@ +@echo off +:: +:: run this batch file to create a Visual Studio solution file for this project. +:: See the cmake documentation for other generator targets +:: +cmake -G "Visual Studio 12 Win64" ../../ && cmake-gui ../../ + +::pause on diff --git a/inc/rk_type.h b/inc/rk_type.h index 92679856..955a958a 100644 --- a/inc/rk_type.h +++ b/inc/rk_type.h @@ -1,5 +1,4 @@ /* - * * Copyright 2010 Rockchip Electronics S.LSI Co. LTD * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -22,8 +21,8 @@ * Date : 2010-11-23 21:48:40 */ -#ifndef _RK_TYPE_H_ -#define _RK_TYPE_H_ +#ifndef __RK_TYPE_H__ +#define __RK_TYPE_H__ #if defined(_WIN32) && !defined(__MINGW32CE__) @@ -56,4 +55,4 @@ typedef void VOID; #endif -#endif /*_RK_TYPE_H_*/ +#endif /*__RK_TYPE_H__*/ diff --git a/osal/CMakeLists.txt b/osal/CMakeLists.txt new file mode 100644 index 00000000..6fe53f04 --- /dev/null +++ b/osal/CMakeLists.txt @@ -0,0 +1,38 @@ +# vim: syntax=cmake +set(OSAL_HDR + inc/rk_list.h + inc/rk_thread.h + inc/rk_log.h + ) + +set(OSAL_SRC + rk_list.cpp + rk_log.cpp + ) + +add_library(osal STATIC + ${OSAL_SRC} + ) + +# ---------------------------------------------------------------------------- +# On window import win32 pthread library +# ---------------------------------------------------------------------------- +if(MSVC) + set(WIN32_PTHREAD_INCLUDE_DIRS window/pthread/inc) + include_directories(${WIN32_PTHREAD_INCLUDE_DIRS}) + add_library(pthread STATIC IMPORTED) + message(STATUS "platform X86 ${X86} X64 ${X64}") + if(X64) + set_target_properties(pthread PROPERTIES + IMPORTED_LOCATION "window/pthread/lib/x64/pthreadVC2.lib") + else() + set_target_properties(pthread PROPERTIES + IMPORTED_LOCATION "window/pthread/lib/x86/pthreadVC2.lib") + endif() +endif() +target_link_libraries(osal pthread) +install(TARGETS osal + LIBRARY DESTINATION ${LIB_INSTALL_DIR} + ARCHIVE DESTINATION ${LIB_INSTALL_DIR}) + +add_subdirectory(test) diff --git a/osal/inc/rk_list.h b/osal/inc/rk_list.h new file mode 100644 index 00000000..39fafaeb --- /dev/null +++ b/osal/inc/rk_list.h @@ -0,0 +1,159 @@ +/* + * Copyright 2010 Rockchip Electronics S.LSI Co. LTD + * + * 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 + * + * http://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. + */ + +#ifndef __RK_LIST_H__ +#define __RK_LIST_H__ + +#include "rk_type.h" + +/* + * two list structures are defined, one for C++, the other for C + */ + +#ifdef __cplusplus + +#include "rk_thread.h" + +// desctructor of list node +typedef void *(*node_destructor)(void *); + +struct rk_list_node; +class rk_list { +public: + rk_list(node_destructor func); + ~rk_list(); + + // for FIFO or FILO implement + // adding functions support simple structure like C struct or C++ class pointer, + // do not support C++ object + RK_S32 add_at_head(void *data, RK_S32 size); + RK_S32 add_at_tail(void *data, RK_S32 size); + // deleting function will copy the stored data to input pointer with size as size + // if NULL is passed to deleting functions, the node will be delete directly + RK_S32 del_at_head(void *data, RK_S32 size); + RK_S32 del_at_tail(void *data, RK_S32 size); + + // for status check + RK_S32 list_is_empty(); + RK_S32 list_size(); + + // for vector implement - not implemented yet + // adding function will return a key + RK_S32 add_by_key(void *data, RK_S32 size, RK_U32 *key); + RK_S32 del_by_key(void *data, RK_S32 size, RK_U32 key); + RK_S32 show_by_key(void *data, RK_U32 key); + + RK_S32 flush(); + +private: + pthread_mutex_t mutex; + node_destructor destroy; + struct rk_list_node *head; + RK_S32 count; + static RK_U32 keys; + static RK_U32 get_key(); + + rk_list(); + rk_list(const rk_list &); + rk_list &operator=(const rk_list &); +}; +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +struct list_head +{ + struct list_head *next, *prev; +}; + +#define LIST_HEAD_INIT(name) { &(name), &(name) } + +#define LIST_HEAD(name) \ + struct list_head name = LIST_HEAD_INIT(name) + +#define INIT_LIST_HEAD(ptr) do { \ + (ptr)->next = (ptr); (ptr)->prev = (ptr); \ + } while (0) + +#define list_for_each_safe(pos, n, head) \ + for (pos = (head)->next, n = pos->next; pos != (head); \ + pos = n, n = pos->next) + +#define list_entry(ptr, type, member) \ + ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) + +#define list_for_each_entry(pos, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = list_entry(pos->member.next, typeof(*pos), member)) +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member), \ + n = list_entry(pos->member.next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = n, n = list_entry(n->member.next, typeof(*n), member)) + +static inline void __list_add(struct list_head * _new, + struct list_head * prev, + struct list_head * next) +{ + next->prev = _new; + _new->next = next; + _new->prev = prev; + prev->next = _new; +} + +static inline void list_add(struct list_head *_new, struct list_head *head) +{ + __list_add(_new, head, head->next); +} + +static inline void list_add_tail(struct list_head *_new, struct list_head *head) +{ + __list_add(_new, head->prev, head); +} + +static inline void __list_del(struct list_head * prev, struct list_head * next) +{ + next->prev = prev; + prev->next = next; +} + +static inline void list_del_init(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + + INIT_LIST_HEAD(entry); +} + +static inline int list_is_last(const struct list_head *list, const struct list_head *head) +{ + return list->next == head; +} + +static inline int list_empty(struct list_head *head) +{ + return head->next == head; +} + +#ifdef __cplusplus +} +#endif + + +#endif /*__RK_LIST_H__*/ diff --git a/osal/inc/rk_log.h b/osal/inc/rk_log.h new file mode 100644 index 00000000..258b505d --- /dev/null +++ b/osal/inc/rk_log.h @@ -0,0 +1,72 @@ +/* + * Copyright 2010 Rockchip Electronics S.LSI Co. LTD + * + * 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 + * + * http://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. + */ + +#ifndef __RK_LOG_H__ +#define __RK_LOG_H__ + +#include "rk_type.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * STATIC_LOG_LEVE is for + */ +#define STATIC_LOG_LEVE (0xffffffff) + +#ifdef STATIC_LOG_LEVE +#define rk_debug STATIC_LOG_LEVE +#else +extern RK_U32 rk_debug; +#endif + +void rk_set_log_flag(RK_U32 flag); +RK_U32 rk_get_log_flag(); + +/* + * Send the specified message to the log + * rk_log : general log function + * rk_err : log function for error information + */ +void rk_log(const char *fmt, ...); +void rk_err(const char *fmt, ...); + +/* + * debug flag usage: + * +------+-------------------+ + * | 8bit | 24bit | + * +------+-------------------+ + * 0~15 bit: software debug print + * 16~23 bit: hardware debug print + * 24~31 bit: information print format + */ +/* + * 0~ 3 bit: + */ +#define rk_dbg(flag, debug, fmt, ...) \ + do { \ + if (debug & flag) { \ + rk_log(fmt, ## __VA_ARGS__); \ + } \ + } while(0) + +#ifdef __cplusplus +} +#endif + + +#endif /*__RK_LOG_H__*/ diff --git a/osal/inc/rk_thread.h b/osal/inc/rk_thread.h new file mode 100644 index 00000000..47e91b71 --- /dev/null +++ b/osal/inc/rk_thread.h @@ -0,0 +1,37 @@ +/* + * Copyright 2010 Rockchip Electronics S.LSI Co. LTD + * + * 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 + * + * http://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. + */ + +/* + * File : rk_thread.h + * Description : thread library for different OS + * Author : herman.chen@rock-chips.com + * Date : 9:47 2015/7/27 + */ + +#ifndef __RK_THREAD_H__ +#define __RK_THREAD_H__ + +#if defined(_WIN32) && !defined(__MINGW32CE__) +/* + * NOTE: POSIX Threads for Win32 + * Downloaded from http://www.sourceware.org/pthreads-win32/ + */ +#include "window\pthread\inc\pthread.h" +#else +#include +#endif + +#endif /*__RK_THREAD_H__*/ diff --git a/osal/rk_list.cpp b/osal/rk_list.cpp new file mode 100644 index 00000000..71e0a0d1 --- /dev/null +++ b/osal/rk_list.cpp @@ -0,0 +1,465 @@ +/* + * Copyright 2010 Rockchip Electronics S.LSI Co. LTD + * + * 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 + * + * http://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. + */ + +#define ALOG_TAG "RK_LIST" +#include +#include +#include +#include + +#include "rk_log.h" +#include "rk_list.h" + + +#define LIST_DEBUG(fmt, ...) rk_log(fmt, ## __VA_ARGS__) +#define LIST_ERROR(fmt, ...) rk_err(fmt, ## __VA_ARGS__) + +RK_U32 rk_list::keys = 0; + +typedef struct rk_list_node { + rk_list_node* prev; + rk_list_node* next; + RK_U32 key; + RK_S32 size; +} rk_list_node; + +static inline void list_node_init(rk_list_node *node) +{ + node->prev = node->next = node; +} + +static inline void list_node_init_with_key_and_size(rk_list_node *node, RK_U32 key, RK_S32 size) +{ + list_node_init(node); + node->key = key; + node->size = size; +} + +static rk_list_node* create_list(void *data, RK_S32 size, RK_U32 key) +{ + rk_list_node *node = (rk_list_node*)malloc(sizeof(rk_list_node)+size); + if (node) { + void *dst = (void*)(node + 1); + list_node_init_with_key_and_size(node, key, size); + memcpy(dst, data, size); + } else { + LIST_ERROR("failed to allocate list node"); + } + return node; +} + +static inline void _rk_list_add(rk_list_node * _new, rk_list_node * prev, rk_list_node * next) +{ + next->prev = _new; + _new->next = next; + _new->prev = prev; + prev->next = _new; +} + +static inline void rk_list_add(rk_list_node *_new, rk_list_node *head) +{ + _rk_list_add(_new, head, head->next); +} + +static inline void rk_list_add_tail(rk_list_node *_new, rk_list_node *head) +{ + _rk_list_add(_new, head->prev, head); +} + +RK_S32 rk_list::add_at_head(void *data, RK_S32 size) +{ + RK_S32 ret = -EINVAL; + pthread_mutex_lock(&mutex); + if (head) { + rk_list_node *node = create_list(data, size, 0); + if (node) { + rk_list_add(node, head); + count++; + ret = 0; + } else { + ret = -ENOMEM; + } + } + pthread_mutex_unlock(&mutex); + return ret; +} + +RK_S32 rk_list::add_at_tail(void *data, RK_S32 size) +{ + RK_S32 ret = -EINVAL; + pthread_mutex_lock(&mutex); + if (head) { + rk_list_node *node = create_list(data, size, 0); + if (node) { + rk_list_add_tail(node, head); + count++; + ret = 0; + } else { + ret = -ENOMEM; + } + } + pthread_mutex_unlock(&mutex); + return ret; +} + +static void release_list(rk_list_node*node, void *data, RK_S32 size) +{ + void *src = (void*)(node + 1); + if (node->size == size) { + memcpy(data, src, size); + } else { + LIST_ERROR("node size check failed when release_list"); + size = (size < node->size) ? (size) : (node->size); + memcpy(data, src, size); + } + free(node); +} + +static inline void _rk_list_del(rk_list_node *prev, rk_list_node *next) +{ + next->prev = prev; + prev->next = next; +} + +static inline void rk_list_del_init(rk_list_node *node) +{ + _rk_list_del(node->prev, node->next); + list_node_init(node); +} + +static inline int list_is_last(const rk_list_node *list, const rk_list_node *head) +{ + return list->next == head; +} + +static inline void _list_del_node_no_lock(rk_list_node *node, void *data, RK_S32 size) +{ + rk_list_del_init(node); + release_list(node, data, size); +} + +RK_S32 rk_list::del_at_head(void *data, RK_S32 size) +{ + RK_S32 ret = -EINVAL; + pthread_mutex_lock(&mutex); + if (head && count) { + _list_del_node_no_lock(head->next, data, size); + count--; + ret = 0; + } + pthread_mutex_unlock(&mutex); + return ret; +} + +RK_S32 rk_list::del_at_tail(void *data, RK_S32 size) +{ + RK_S32 ret = -EINVAL; + pthread_mutex_lock(&mutex); + if (head && count) { + _list_del_node_no_lock(head->prev, data, size); + count--; + pthread_mutex_unlock(&mutex); + ret = 0; + } + pthread_mutex_unlock(&mutex); + return ret; +} + +RK_S32 rk_list::list_is_empty() +{ + pthread_mutex_lock(&mutex); + RK_S32 ret = (count == 0); + pthread_mutex_unlock(&mutex); + return ret; +} + +RK_S32 rk_list::list_size() +{ + pthread_mutex_lock(&mutex); + RK_S32 ret = count; + pthread_mutex_unlock(&mutex); + return ret; +} + +RK_S32 rk_list::add_by_key(void *data, RK_S32 size, RK_U32 *key) +{ + RK_S32 ret = 0; + pthread_mutex_lock(&mutex); + if (head) { + RK_U32 list_key = get_key(); + *key = list_key; + rk_list_node *node = create_list(data, size, list_key); + if (node) { + rk_list_add_tail(node, head); + count++; + ret = 0; + } else { + ret = -ENOMEM; + } + } + pthread_mutex_unlock(&mutex); + return ret; +} + +RK_S32 rk_list::del_by_key(void *data, RK_S32 size, RK_U32 key) +{ + RK_S32 ret = 0; + pthread_mutex_lock(&mutex); + if (head && count) { + struct rk_list_node *tmp = head->next; + ret = -EINVAL; + while (tmp->next != head) { + if (tmp->key == key) { + _list_del_node_no_lock(tmp, data, size); + count--; + break; + } + } + } + pthread_mutex_unlock(&mutex); + return ret; +} + + +RK_S32 rk_list::show_by_key(void *data, RK_U32 key) +{ + RK_S32 ret = -EINVAL; + (void)data; + (void)key; + return ret; +} + +RK_S32 rk_list::flush() +{ + pthread_mutex_lock(&mutex); + if (head) { + while (count) { + rk_list_node* node = head->next; + rk_list_del_init(node); + if (destroy) { + destroy((void*)(node + 1)); + } + free(node); + count--; + } + } + pthread_mutex_unlock(&mutex); + return 0; +} + +RK_U32 rk_list::get_key() +{ + return keys++; +} + +rk_list::rk_list(node_destructor func) + : destroy(NULL), + head(NULL), + count(0) +{ + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&mutex, &attr); + pthread_mutexattr_destroy(&attr); + destroy = func; + head = (rk_list_node*)malloc(sizeof(rk_list_node)); + if (NULL == head) { + LIST_ERROR("failed to allocate list header"); + } else { + list_node_init_with_key_and_size(head, 0, 0); + } +} + +rk_list::~rk_list() +{ + flush(); + if (head) free(head); + head = NULL; + destroy = NULL; + pthread_mutex_destroy(&mutex); +} + +#if BUILD_RK_LIST_TEST +#include "vpu_mem.h" +#include +#include +#include + +#define LOOP_RK_LIST 600 + +#define COUNT_ADD 100 +#define COUNT_DEL 99 + +volatile int err = 0; + +static int rk_list_fifo_test(rk_list *list_0) +{ + int count; + VPUMemLinear_t m; + for (count = 0; count < COUNT_ADD; count++) { + err |= VPUMallocLinear(&m, 100); + if (err) { + printf("VPUMallocLinear in rk_list_fifo_test\n"); + break; + } + err |= list_0->add_at_head(&m, sizeof(m)); + if (err) { + printf("add_at_head in rk_list_fifo_test\n"); + break; + } + } + + if (!err) { + for (count = 0; count < COUNT_DEL; count++) { + err |= list_0->del_at_tail(&m, sizeof(m)); + if (err) { + printf("del_at_tail in rk_list_fifo_test\n"); + break; + } + err |= VPUFreeLinear(&m); + if (err) { + printf("VPUFreeLinear in rk_list_fifo_test\n"); + break; + } + } + } + return err; +} + +static int rk_list_filo_test(rk_list *list_0) +{ + int count; + VPUMemLinear_t m; + for (count = 0; count < COUNT_ADD + COUNT_DEL; count++) { + if (count & 1) { + err |= list_0->del_at_head(&m, sizeof(m)); + if (err) { + printf("del_at_head in rk_list_filo_test\n"); + break; + } + err |= VPUFreeLinear(&m); + if (err) { + printf("VPUFreeLinear in rk_list_fifo_test\n"); + break; + } + } else { + err |= VPUMallocLinear(&m, 100); + if (err) { + printf("VPUMallocLinear in rk_list_filo_test\n"); + break; + } + err |= list_0->add_at_head(&m, sizeof(m)); + if (err) { + printf("add_at_head in rk_list_fifo_test\n"); + break; + } + } + } + + return err; +} + + +void *rk_list_test_loop_0(void *pdata) +{ + int i; + rk_list *list_0 = (rk_list *)pdata; + + printf("rk_list test 0 loop start\n"); + for (i = 0; i < LOOP_RK_LIST; i++) { + err |= rk_list_filo_test(list_0); + if (err) break; + } + + if (err) { + printf("thread: found vpu mem operation err %d\n", err); + } else { + printf("thread: test done and found no err\n"); + } + return NULL; +} + +int rk_list_test_0() +{ + int i, err = 0; + printf("rk_list test 0 FIFO start\n"); + + rk_list *list_0 = new rk_list((node_destructor)VPUFreeLinear); + + pthread_t mThread; + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); + + pthread_create(&mThread, &attr, rk_list_test_loop_0, (void*)list_0); + pthread_attr_destroy(&attr); + + for (i = 0; i < LOOP_RK_LIST; i++) { + err |= rk_list_fifo_test(list_0); + if (err) break; + } + if (err) { + printf("main : found rk_list operation err %d\n", err); + } else { + printf("main : test done and found no err\n"); + } + + void *dummy; + pthread_join(mThread, &dummy); + + printf("rk_list test 0 end size %d\n", list_0->list_size()); + delete list_0; + return err; +} + +#define TOTAL_RK_LIST_TEST_COUNT 1 + +typedef int (*RK_LIST_TEST_FUNC)(void); +RK_LIST_TEST_FUNC test_func[TOTAL_RK_LIST_TEST_COUNT] = { + rk_list_test_0, +}; + +int main(int argc, char *argv[]) +{ + int i, start = 0, end = 0; + if (argc < 2) { + end = TOTAL_RK_LIST_TEST_COUNT; + } else if (argc == 2) { + start = atoi(argv[1]); + end = start + 1; + } else if (argc == 3) { + start = atoi(argv[1]); + end = atoi(argv[2]); + } else { + printf("too many argc %d\n", argc); + return -1; + } + if (start < 0 || start > TOTAL_RK_LIST_TEST_COUNT || end < 0 || end > TOTAL_RK_LIST_TEST_COUNT) { + printf("invalid input: start %d end %d\n", start, end); + return -1; + } + for (i = start; i < end; i++) { + int err = test_func[i](); + if (err) { + printf("test case %d return err %d\n", i, err); + break; + } + } + return 0; +} +#endif + diff --git a/osal/rk_log.cpp b/osal/rk_log.cpp new file mode 100644 index 00000000..2d545f78 --- /dev/null +++ b/osal/rk_log.cpp @@ -0,0 +1,72 @@ +/* + * Copyright 2010 Rockchip Electronics S.LSI Co. LTD + * + * 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 + * + * http://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. + */ + +#include +#include +#include "rk_log.h" + +#ifdef ANDROID +#include +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +static RK_U32 mpp_log_flag = 0; + +void rk_log(const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); +#ifdef ANDROID + ALOGI(fmt, args); +#else + vfprintf(stdout, fmt, args); +#endif + va_end(args); + return ; +} + +void rk_err(const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); +#ifdef ANDROID + ALOGE(fmt, args); +#else + vfprintf(stderr, fmt, args); +#endif + va_end(args); + return ; +} + +void rk_set_log_flag(RK_U32 flag) +{ + mpp_log_flag = flag; + return ; +} + +RK_U32 rk_get_log_flag() +{ + return mpp_log_flag; +} + + +#ifdef __cplusplus +} +#endif diff --git a/osal/test/CMakeLists.txt b/osal/test/CMakeLists.txt new file mode 100644 index 00000000..676b0324 --- /dev/null +++ b/osal/test/CMakeLists.txt @@ -0,0 +1,18 @@ +# vim: syntax=cmake +# ---------------------------------------------------------------------------- +# OSAL built-in unit test case +# ---------------------------------------------------------------------------- +# log system unit test +option(OSAL_LOG_TEST "Build osal rk_log unit test" ON) +if(OSAL_THREAD_TEST) + add_executable(rk_log_test rk_log_test.c) + target_link_libraries(rk_log_test osal) +endif() + +# thread implement unit test +option(OSAL_THREAD_TEST "Build osal rk_thread unit test" ON) +if(OSAL_THREAD_TEST) + add_executable(rk_thread_test rk_thread_test.c) + target_link_libraries(rk_thread_test pthread osal) +endif() + diff --git a/osal/test/rk_log_test.c b/osal/test/rk_log_test.c new file mode 100644 index 00000000..517c38cc --- /dev/null +++ b/osal/test/rk_log_test.c @@ -0,0 +1,37 @@ +/* + * Copyright 2010 Rockchip Electronics S.LSI Co. LTD + * + * 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 + * + * http://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. + */ + +#include "rk_log.h" + + +int main() +{ + RK_U32 flag = 0xffff; + + rk_err("mpp error log test start\n"); + + rk_log("mpp log flag: %08x\n", rk_get_log_flag()); + + rk_log("set flag to %08x\n", flag); + + rk_set_log_flag(flag); + + rk_log("mpp log flag: %08x\n", rk_get_log_flag()); + + rk_err("mpp error log test done\n"); + + return 0; +} diff --git a/osal/test/rk_thread_test.c b/osal/test/rk_thread_test.c new file mode 100644 index 00000000..52d0e00b --- /dev/null +++ b/osal/test/rk_thread_test.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2010 Rockchip Electronics S.LSI Co. LTD + * + * 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 + * + * http://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. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "rk_type.h" +#include "rk_log.h" +#include "rk_thread.h" + +#define MAX_THREAD_NUM 10 +void *thread_test(void *pdata) +{ + (void)pdata; + for (;;) { + int fd = open("/dev/vpu_service", O_RDWR); + if (fd < 0) { + rk_log("failed to open /dev/vpu_service ret %d\n", fd); + return NULL; + } + close(fd); + } + return NULL; +} + +int main() +{ + int i; + + rk_log("vpu test start\n"); + pthread_t threads[MAX_THREAD_NUM]; + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); + + for (i = 0; i < MAX_THREAD_NUM; i++) { + pthread_create(&threads[i], &attr, thread_test, NULL); + } + pthread_attr_destroy(&attr); + for (i = 0; i < 2; i++) + sleep(1); + + void *dummy; + + for (i = 0; i < MAX_THREAD_NUM; i++) { + pthread_join(threads[i], &dummy); + } + + rk_log("vpu test end\n"); + return 0; +} + diff --git a/osal/window/pthread/dll/x64/pthreadGC2.dll b/osal/window/pthread/dll/x64/pthreadGC2.dll new file mode 100644 index 0000000000000000000000000000000000000000..841d4a21699017e835f330b3262e5b46e988a753 GIT binary patch literal 185976 zcmeFad3;pW`9D4ZB2ktbiUUCqV~rYIFmX);bpi?8XwWFAh+Etccf=dPiWoXG!tHfz zY}IO|EwPGFn;O;uw<3z7SjE=mUI!GlBA_zA_xm~L&fJ-V#c$isU%$MRx%cen zInQ>U=Q-z&8rK@?914ZH;Qw?w6q<`){zc^9o&VEBw+29^M_A1j&H`awh zm)^E_=#!@xoffL?6gp&&P-s)=pwe!gI)y{qQRp!IzgH;qL~r~Svyyo+|CQ%XYTSG+ z4B>@;#h4A+s4_asyh5Q;Nmg~GK;FAI`9w(s!|=gGNa9>KrTP-D~JOE0o6LgEw5C@u)e zw7cLp@D~X+whf-73Su|_fiAa4yK<4i7vFG$R0WJf6}kC-lP#g9w!xRF_5?kUzrj8y%E8?l=|;ea&($y4=Sdl&eznn8@+ZMmgfcmi%%N%(vo5 zq26z^y-G=;Q@w-Py<&IQKA-E3OW&cClm&>;P|3CdV zAuxJg2#ah+H}89t4j#M`VxOy`7?h8KjMXHMlhW4}mfo{QenZ<+R5mOSP_RkGQ23V(#h=$1}K zY%i3aw;yV_Gqyp1v91j5f(y^DId4gHTY)4sr!F&{E(caH*O^dM*~az`Ujr6VnP%VB zX7#ejvjtWq#;{;mL8z|s!&JBNtw=Ru=*b^QgS}oV&O$|0Ykt2n?G( zQEzXW&l0Bnc6wE`@RWgQlGBq(ovY@kW^bd#)H9~j!#x=7U-GdufCaVck@harPGg$A z+>Cx!WLAGQxwq-;!9G4`LV6XFZrq4&+(wQzS@;mD@DGo_(2vQ&d-anV>^*qPABJ-_7L7$WnDNzicq!zZX`feCYT8rFD(u%y`|7eP)3(aW zP5bW+_N8T!276iaMNZ+l`(lMQW0d7s5%)KrghKVUYrkXKTiw=1c403!Vt+(u(Qi9j z*T>gc*Vvnqg%_cD^qDptcHyvD2mP21dTDUbI!0|SG4=~3hNq)j3T`ZMhoj}_w*@uE zT}zvP;~tm-Ebl?SdkUV|iS=-%-;(dsX(lzlnEGWVv9lyvW8#~Q*iX=NCSxx&U@!N^ zBMt4<#XdA*r>p$R)ttqPr^%Gm%X8mJP4%+s(@@Ae5M?Vjdk0JPh`*Y!(j%Ai95 zNi8nPtg!$sBvbLNx1LD!F8ufz<}%5&V`U{6NjiM(Nu+Vp(RCf& z;PjXDuuC82}4tGBRz1ho5dlQ>Hf}~n( z+Fm-Gg5r>RLg;C}8YvPlz}QmjG2aPTpvU%M)$=g2gr>1Z!Wf{qx@@ebuqG2IQfh*h zu*y{c9w@!Gj0{p9%H?53G04@b0;ue9MLuAni%ayNeBkVX{yEyjRmGK?In8ESLCbWy zK2LGMv3GYGORCQR*<~JNRxhz0G^0yo#SX=I ztOL}F_4O`CF=M|L0Z4R8Q9-}W(T_WO)ktj(c6OfMnaj=&;G7STzJ?$p^|$PLN#f&} zig!KQkR_C)`?;>K5Q8)F6v%)j1>_f_WV*o?vDHhXy&WOAlH z=}q%lFhM|5BWzv}^G!XVz0BmW5&>{>Sh4=4Di|_nV79BR<2dw5xfm!aK>!2a zRWmAzL zA1{*Mg=NL^`)FASejDru%S!p~aM6v}x!}5HVk*i1J+O;ueF{SJsG)ylK4d25lyT!h z&Mv>nSeZ*EjXx95>jTeg{b$Gm#VL+gtCS?Rf|r6%2tPbtV=PGcSi&`NZEdZ!=<#p`~50pc|`* z7Y$%G@s$?&-f`-^T)&?x?|L~P1!XxLy&R5S4o5G?^rc+AzA?=E7YLN1nA3!gMmELR;89XUO95|_|IU>BlRRevh^#d86Rl_M7u5L%0D@vOT(?+&%DffIZ$epQ7Cw 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 literal 0 HcmV?d00001 diff --git a/osal/window/pthread/dll/x64/pthreadVC2.dll b/osal/window/pthread/dll/x64/pthreadVC2.dll new file mode 100644 index 0000000000000000000000000000000000000000..165b4d26ec41c4e563782f116b4a2e96936b0fef GIT binary patch literal 82944 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 Pg~k_;L-p5Zd<6apgZj`N literal 0 HcmV?d00001 diff --git a/osal/window/pthread/dll/x86/pthreadGC2.dll b/osal/window/pthread/dll/x86/pthreadGC2.dll new file mode 100644 index 0000000000000000000000000000000000000000..67b9289dfd9f6f1ad12c1d137f4e57ad1a54271c GIT binary patch literal 119888 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

PI35m#66 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 literal 0 HcmV?d00001 diff --git a/osal/window/pthread/dll/x86/pthreadGCE2.dll b/osal/window/pthread/dll/x86/pthreadGCE2.dll new file mode 100644 index 0000000000000000000000000000000000000000..9e18ea24b8b99b7de0998b4f2f2cebce93583edb GIT binary patch literal 121953 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 z≫⃒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

tXN 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 z literal 0 HcmV?d00001 diff --git a/osal/window/pthread/dll/x86/pthreadVC2.dll b/osal/window/pthread/dll/x86/pthreadVC2.dll new file mode 100644 index 0000000000000000000000000000000000000000..fcb5d9dcc1c18b0be18845a34c3aaf0ae37be200 GIT binary patch literal 55808 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 literal 0 HcmV?d00001 diff --git a/osal/window/pthread/dll/x86/pthreadVSE2.dll b/osal/window/pthread/dll/x86/pthreadVSE2.dll new file mode 100644 index 0000000000000000000000000000000000000000..8129116fd41891ebbeccaef3422b1636b28f2b21 GIT binary patch literal 57344 zcmeHw3w%_?z5j%4!U7Aszy?>15OHIpA|}~QvYX8dNkUKvn}qCwNMay?BtR0AJv^)g z=_c0GSf{#?R#TMhoB$9# z9`;5Q!fgSy+gi7}83nH!jRfF|m+Ku=?&9c_k*DD>u!sH*Uu$OU@SA5Ldb|$NPv#)n zhmmr4KFDx5r5I7g8Hm~o5dEbdQQ;y)H%>+L4mjZO#}^^GI~mb)RPI~>Q4B?^snVY; zK{P!bQSOnslpo}`InRxZ^9aMPjd5B`D_eUuDCm8;4 z`8q_;Uxw({(-Fm9i0H{lh&B*d9hr#!gZlie7tx=Ygmlv5W%4kBC@H{KM@XYT7&4f^ASyf_eegg!RraM>)m2}PqBgFuZQM$ z)>DkJ4#hNKA#coAQ6Zg0l{Yf6Mc1hKy9{n+e?*@nJ9h4%exc;xJ}s%P8q}#FAy*SC zDy0hva_X~5n(A$2fp(o&c^Oqt^|&ik*j-0`=lgdWJo4ZA6~(^;2u2CQvcF3|7}3>L zOP37W1>i?7&9mxk`^w#AqF!_xL^ooc+R*XdGrRl;BS}U01VScC4Dqt+rWaP>Y+T5}k9F0oi2+5#TDx4s?GoXq;fwp8trWv&-0F#w4ThPmqY-KuK!A zofuee?dxVOJeWJxs!?f( zdx+h~YC|+ImjONtHD*)F-9Sbv`kjN|K(MRB#?|9nM7{8eC7~gMwBRsT+1ZOa>}v1Q zy!cbcvvd@rve4=nrgMGq>dO!biBeYQF=NO1v0#T{olWtg#T;;Z8Fi`HRp*B;|rmIIN<>>W>@l{5d8oJIK)S=<9MXja+Szc|V?T>&HAYFlRd-%B%pqxh! zyd{bzsa+?XCN0pFgX}3v!sRF+$hPJ+bvPEhiG@+Ftp^r z6qG4Lw~G;Au2jHg5N3zPFMz>PlT@sYd58^+;u4cI!FeSO-&v`2N5glPT`D$9r3SS? zP;!7loGmnbOAMG7XzYe?Is^4{_`nxI_)^?K_-G*gm*Cad8TedL2IAJ(aU)XIzVc3f z11uk&K~ciOn!`X#^UDy_9Bv?RYSKs;l8eC2W@hX>`!hwMxyQf5F^up$$vilc zH8ckNN6cGN4>FT&2Lzv~Lb@EHakk#${b?hMOWHD;)fZfBWd41u+%3P^1ZgskbS7!G zu3m=dbeBn=%0EDI?9s`eLI4`dl>|GD4-7v{M3|y6I<%7VGJ3t&_%P)?`_tIo$Nu~M~!-nH$KEqKGf!`yA_LPBD7)e@xXw6vk2`SR3l z@Ba1oeG%;AKcc58L+^$t)|c6iDG9JlnIKMUNt|~1k}+%QY`eKOLi20q)4rHlv0cJ( zq?@Fj;@B!osNLJfVUp!{U)BQ;DWnG5G1mzp9>7ki>TXO_5>mN7qjT*P^wnIUsp@`& z^dGTB55-YzF^DZDvBWHvSb7*~NaE<~VYC*m1a%(sO_1Wzd%dbq`9^QUqLWp1_aFup z;sGDYG0>+6wmZg#sSLo7K7xv-a{bJr>1QU;gM_JGDlmvKq^wc(5m*glL3@7!e?Qor zc(uG%OPv3c7~x$=S5y>!QM)_o`vp3xg7;w1i>LBFyMqOhJv2|EwHj=XZ2&v8D zC~13DH-{-zjFEN@p$8*V=dm3Fv8PBeU<8v}Obam&y`gaywKdeAhR*~}enE70-gF}~)ouX*%v2mOS8##v4HWHi2TFBi@>Luly+4l$nLS0l4@_dFK;lvnW#EnC4eCCe~5vL4c%Sz!LIGTC*6;{~(O{G+uZ40ntz1{$QdmUg2z{*8y2 zZ>&`Gx?8F2g+Ns~ba2r~pufRA@tdpAY7n>#c44B#5}3M*S#q%S49f2fn(WxxLQE7{ za0{hGya;})sPuR_kEkqn%%;exhZSWDgPH)Y^Y_R2&cZSmn4kp6?s##$4!6>Jlh|UG zS`6AM>vAjX9+*}w>Kc={%v2sUIUt=_?;@4;R?1PV7ghrY8hNBwt08nq2aN3WSHLI1 zN8=-rKs2bMN-jh5QoBK_GBsWSR+67z!I(P#R+(Z-O=7#Dr`SRU9e2MjJ)pG1s1Qjmgc1A{j1Eah_JKf}O701dsO0mFSQm@6u6 z2W;;;F9*lOFAdC|vZR|75VPwupII91>h?|WJ7R<})l0Xf0K6sLp2ozWeMLG7V!J*R zCV}P5VrtbBG-Fg_urKKrr;1fNvC4v43V1EqQh`n^)=NhJ27Qchk^focg1wC<(W6&Y z8?o3TF49SeQ>9XixY!_hEEp={W%|BYu}WWoKe5W7uHnUEv#VQ}=y`$+7onNPc1-Jq z+JUb?@Bu|VjfSZC5GvO&^C9%EAtsIg-{(W>pREgX=V{Uy#1m--?cBG1jQ`V7n{;BC zCZ56rK2+Y!%TG|t`{Jd!I&tiv*%tBy^>ew8$}RjAK1rjAv6!eg#ffDD^qYwC3A{W< zH!NeLrCEA$RFp6RtvZiEo^fpwQ&pUQm(n-JEnoK*A0e<$aqBE{V!AIJ1*xan6R(f^ z0eB@0QzXerUP8Z`Woc9zWBgq@Oz>oo#bU!}wC(fvk22o+bl_see{fUxw$34H;qRNI zi!FRo647f^`$}4_3~YZfPQ}h%SbPICN*wF|9vk26RcS@=Alm zjg;{cl>IC9WM$k9{6puz(op5RI7f&_zIaK_&{gvK7-?u-LQugGx$Y{k-(^Ghspvvt6R=I#2KKo zi%)eztfaFp4!sgd?mg;U7*68#kN07cJ7!i#Rqq$zMlaTYniBG@$ada(Ta&{t2TJjobZ-(0LD zv_S4*r^n%eO@`cGl!Vnt0Wi~)gnHcBcKiF|jJIwN_{Lz1g?b{Uq8C-&keRd_hNcb7 zH!;{rQW$vl@Wuo5dbswnPxe*YKWRHb1T~^svYQ8aVL)#Oq4b;PmsQvfh?iS+s)j`h z*5Ynju<5;S`I^5$tz2zQ^zWb{IQ=Q&4o{;#O2NW>H!V<^M4T| zyj&e9`VOU1%4y&?i`Wix4OJqhp}f?MJW`{}wv3Os)kgPwQiZ34feCjK-khFyB^(Zfcp{eJ*r5>;g)Wcz9ZV>mUa`ku{ zO;ErT)gZxjOrXF(!znPwP>mjdt9>A#7*7VlM9))XTGPz#fC@c=9blBygKbc4=uH%h zb+|Q%?b!WOGf*3DsIo8XlmAFkC1{jFJ0}^yt$(9|89R=lP5(w6?vCJ2GZ4<#m&xCG z9mvG;7uduq^v}rDcIdR_wiFN4CzboV65aA=2NcC4Hz39s#7=>MuZB{vCcv2c4lk$e zxFu0!0SPXxf|X%urS7UktmsVLpdu zdrj?>iIS)RhN{^lo_uDg(P2%H;Fk;9{^ctetnk0+95jxc)L)43*FK?>iL% zRIl!a{zrle258z~qTMf#)UPC5jhiaad#Da@9ZQPmR#%VLEspM)L+cpUGe@spv<-Vw z3SB#WXZzcAOh^DxNr+&-67pm}rTLC6kvuxltNW7ecdRe{xtBxT0Pnnt7Pef0dyM|c zZuxAL8a;88M2&B$4dulJ^C*e(VE%|$px*zN==JyMQZ9{P+D~nvB_lWn2J{m#!qL#y zl*(=9Q(A$_yH_)D9{+Lu00XZVo4A zLb}RKkfn)O@nip;`IS+=@sPkiF1C|^^kc;fV|&>nx)MKY$98N`|!9Xp;E}RYtSAbG*?$)Q{$paH1zc>8biUy!AryjG9N5M zz*kK$XaH9E#x+732fJ>thI>vv1|;}#<^B}75_!VCH=yrr3%^p||J(c94Yxnw`f1&% zInr%DvKJ@_vQUS051u^IL)O=E#Q@d0J-~_~2Hw$1!gVAvuzo4?^mJHv08u6yiu5h0QzYc^IaR7$`&Fi#F*j@CYI5s=N&8c&zUXOxZ)w8nf$IxcO-G z6{}LD3@(z6`KI8731uWeqnQ6O(l9jU=%`xg8!xR*f#3}?2x%6!uEtom%G{U3{iM)p zMSwqo#?;uVTS|L%i{NYdHQ73Z0WwC~6xh9Qd zFOzL*EffKh?ZB4xkfi>un2EVp<7O*8dA(x%7J6!o@j_=1+e^guLa}{bPqCY8RqaV) zd!pFx5ZiNtwkRu{Jx(X*0gs`qT)zHgl9PIBYpHGDl5TE`l=ctr4HW_-bOU;Z?W@=_u& zo*G~{!#i32{u9Ea`XtyXE9CELK=k(|`TM^>vXv*-hLXp)o)O}n;)a5=G~W^IL2x_n ze%CY7g)~)S7l9aoteGz(D?;bEb6dCm3+8jql2rW!)rja7xE{(AuTXTUgFl3 zFLIv{lRK~=sZ3r&PjD0~@0nwvJzu#NJO?|re^UmX)g&$WUFe1<4Tr3+kxu#sD0MEkXC!I%3=3vr zvbve1F@Z9p|I?}K;^7~3N=tbE5euqJ1pa8jTuJJtos>;-(BqRPxm8H-L5)~9dK)d; z`^G8zLo0mOQRDUh0b;1xWCIwOed9Hhed7Igga5>djiaBSeX2gA|AcYlSpSJp?Qu_F z7GYSb(ZpjZ^FNJ!JpT*8F_aEz4zX?}G-U^8PvHz+CeSiPt_K;Qs08;?EVPcai0eww zdvlq5$-rC;R&LC|h_!tAlyy?7M9IHfxcrm%{TUse2k951Nxun|W%BX8s;rg!Mq{}Y z8>pWWQfN^CcWUW+s*tblgHqcKhdd-x4qvhCl&8%z=&U z5f$hlYo&a3ln#aFP?{zj;S52D?8dkw#|BV<%nIrPg)(4Z*soeSf+mL1Ptm#$T2h2{ zVZ3HtARCD7n5Zg7ir}ES@IGyT0p7U4dc(=zG;X0q5>0Pk3vxc^aE_ui z%7vP^?+vX{DuN4MSZ|EdI)l_~B2;tLNB%RKhmQ0P=CekQpE1P?#o|KPxQIr%sfM;ZsYZb!aYTp}fq{PvW~ zmN2P#`ynEIg&T~YpmGgH1Ru@tc%S0hSfN!f-})>81pj6$K(hGT=P}_7shG4)^3gOt zMZ&L-7@x1{@wNkw4I}`{Fx@8+(7XJHu@a~4{<*&Ck$XnfeAB23Tx*4@`ujPgs-}=1 zIXSUe2@^2z`~mM_fM5zO#T0rz^@esX;gg~>20DV7P?pJx&{I5*IxdeRCLk1ntD;t# zLnzx33$f^R7+H}*OGp5iN}%Fu$AzvAx~dvC@1T6^b9@9>b3q*h>y=^+EJ#;cX=3rw zttEX08hw+Zpb5OV-Le@I7Z5jSOdS3U-nkJC_>UOK9%q({2ug08f%qTGp@Nag&<&ln zHK9_T23i2W-~>$P#?DC)eAw3)m{g_rb{;TZ_c72TTq@;~R?`^cA)A}A<1HYOzVYA> zy?Bt$;?k?wOdpiMQ{C8kEl8*p5&ntJVGgi$xsc|Re(ruMaNLDUaeJCyQo3(lby=Af92kHUtUR$oPu30&7?T30>5~d*Sd-Y7Da>M!Z=nHkCo)#TP5`a>5X& z;c2eVjGZN5+n6dcFNerjDX->bi1(!9bY+sqv??|RT`8wH|nrL$ZF90 zCRfVV$a;Lw^d*PY=b;dy0zWngyl{p_ctAipsJYw?_;*tG4Uzqg7+n7gZ%JN|(rvN5 z>(Be5b+Si}0}3P=vH>RjPCv;7uaqZMWBbE+ofGT=f@$pTRoQ(B$}}q4Ln$7lb!JRA zE+QD{8+1a5eTGmAgHO;2!PvQn3k$F9U8+dfMdowzg)?;HE-bO+7rIr+LFNlD6t^U7 z7+FKyc$&D*AXb}t=I~J*t^?~h=Q@Kh&GnpcCZEimbM(f}kI-by99={)6&SVuaL1v( z8#}%WjvLVb**gaHA9gE(T!O!Zxt3i1yM&|%1mjc&O zRKjNnC_;{%LAmoiX+dz6TD{~65;{S$Y5GC+nO#f#2d}T<8Um+ht}1QP2!PON^T^lo z#tdO%$cMITr0(^C$n<4an9yYJC2^BfR#ASK_67*o>T2Cxf$2jg6mrosjZFFDl}IuZ zN72;5y8}~Ek`yZy4B^zmcX8p=vORF6;(vQnU)+<_b?H6mvB{ArB#B`K8f6JPT9|r% zhX&NTv6gIPkjp`Ioi5EG>~S$2jV=rl{pJ%?KeRGUl$MoOXq+t9b9fB!*wU*0UnqXQ z6r?hIfVtX=eJX)@G5zzs9sh|hjQ$zKOI2Jd-Ax#D(W*>iaAU`r$Tf-yRHitHeNqQv zkrF*I(hjk_<|zz>c9XN%VC>wE+FYL+J0HQ7)Q~Yssm|E>ES}JU_O)uLA@KpEho>EC z;%=l2(ZpCZ!Bq!%NunKLsp~aiF|=Vg8IAHktpmgG*;Nrv_g2cccM&V=@qwHM(cz0A zkg$y+#GyArK_jb_*Q#YAz}}ETJvlr9Mb!=fSgsK8UGNi%k1ugGjR5m8C4VUazF~o& zKI-4dz5xBWLQ4AQe-Jvt`ey~Y8qz--S?7WE%b%d$SBABY>6m~ztVo3ER(|{mz$g~e zL~Rf~CQWy9yAQD5lCQ;~*7j zF3;mC5|^FA^ss=aM04_`gWG_V=LDuPg6@PAu5U=eulD-pBRbGHxFqec(wQ?A9(l^+ zKuK>sJz=?JaQDQKOBqpENw9FO(wEw3sJ{m0U|N3if>3o6`Gz2AiDbvoV~`}G@K!Pr z_r-BDvXpU?`ue2$)!df+%GPU;%k%uXbjyUZd*bNkV;t%ONljbdWL)lvqiWCt)@Q3< zsJ@Hrcx5k|o5(8&zt{JyKbIHxjrMbIxKYyeRz0Apf*T2~f3cq2yn{ghmPZu#|A7pH zL;msJGH`rPF*l3KS3FAI5tku`pcvjy1B?*%znc3Pl_viyI}IExLe`y2AgiCiU}`l< zqrhi+-05Hlz?|9wx`9WB_r>Dk*}%m!rpU>G_9?1Ikm!JXfqT=E?m(5ULT)4a_hZ1r z6(QeQ#DuddO@YYAxdU z^wKx{^4~Z%u>2LKI^%s4F)Ha}eRbi8t%!K9{P{NC!;`rz&}JgOoVTe}ULUG*MpSih z0>4z}6=USz1Z!NHpDh`{cq zsQ{Oj;{e&rN04ApCIr?`0mi3eOjO9q!yNc;jPYo|qTo?i)nseO=F1HMG|PRiAWG$n z!Pr4}td#^%0yx&}mK)Sw1({2lfO5*F3tn|SyXkys`|;k`7sLtRopW40?Qn9!GG3)> z5XAHH0*e6RV+0~N9maZ#2Ic`@a*z{6i;A(wXsR5T_?5UV8g_ajZ3Y&WcYRBwjSRS5 zsIE%qS9k*JbRPLquz3*dbPvIuD6jp`h;dT2q&hTC@cm4_ya>5K4Y`_$4w6RIP~o}v zVPwI<9T_Htj}IuO<@|fDd9;^0-Xr@oBy|b-QYN<4NL2~k0qlT*8b`q(1X1GqNQ$q< zm0XRgU}lOHCir&(r1dHre(9HPYKH)d&I6g0E2W|rS^g6W+_Gt&z=xir$iku-A=(qs zRQqIVW)g44{U?s4DtyOtvZjLY&EfFP(%`#AMKKqQnJP%Uof6-fCBBIz!s)yTqgo2p z)3otrEvfL}`(SD^5wo6N{aOYKSc5!`_m&(>PX`+&xk^p=AZcx3>G8jwdCdRzJN}(u z(kHQ$Cigg6NL11ei5a$8`qGR{^O`A!K1MS`RKpJu^QKwzgG(xxD<9(M;QKa-!)+tO zX%a$vjogI7fPL&X7{=%`TywVz93_}sSZpEH8cYQs_zDHv7H+u%Uo>Ij!CPc>#yZ~@ z2Ol1hrj8_HN9Z@7KFEvk`nC}){0_!;YG4@l`^w3xq4-D=$>9_lT&W(ftJjw(-;UO~ z=^N{L;ZlrR4jeYAlDegSba(2>c7g?*1mSy5nyIbLHBMVKtb(jFx3^5P|RKI9%09G0()umLYf6E-`^%gQ%N zu73dPsatNr1(e0^tyE_6e;T_s?olEhwyrIYkm_;4F4%)&Kap}qiw;;yFA?6aR`-$y z)T}yKU98+i-*n910lbhOpGVzNDVKK=`imY?w;LY&BLQN@?gGgVY3W1WK;<@VVGg&H z^QoX$JHaO~{~`W0U1e9fd06v4 z^`onr>rbCOP}D04N95a2z|&kJn0iZmQ?Q(X+nZFmN4zSfZ-P{`M_iwRb5-W=kv62z z%j%buFx6=OLQ>CwPa)?YvOO>7%>+PiEj?8ytRX3LYKc+vHT1hGO~0$I3eJ*Tm--Qy zCOB{X)vL~1Pu@rPA5yD1};r?NE<%aN?8+KO?A6rMc zN6w%L2WEj(Ttd5Z+O8aLRZ)2adv9G!F;OOBsde!Mv?m8Cjw5`CSN3pAv3!A+9F5Lz z{b^|WT=@G)`jC-{=)>J!3G?KL6sFHPC>)}X8}y-lS&;~HFUnE*uSKAjK=vWGP5-R~ zs^ZKBukJ8`w&45kAqeyXE%{p~NmPZ=^zq0)`mIJ8E+KXR!DRI5k2Q8~BchPEX}|-0 z=?0V|VbDG=#@KNaFGjmfw2{pVMGp*lC1@Ch?2x46P(K>^>V?o9A$YVH? z=nyvOFUHQFfzRdi-*DY=igxY_^$Z>R*>|X8)^68PVVvtzVKjG1=o@9DLzWEc^qhzn zImX@Chn#|{Xc!nfX-|cm1js`GUcodT_}(jjaR3$GM1P{F5cEm^YMug#QJw-Pkx5W& z;nJaj_~^MRh*G;A)3qLq!cQY4iJD6i8e1;RTi*p2=ICC7oUl6q9E)2{;s`b2eFI*L zs(wkZ`clhNq<^_y*f?48Sj)wB>>bf&0+hiCeR|H#x~p~YlGlS#F^BEpcqM}*8Gaxl zL5>MpW#5Q3zLl3fQU>?-Ii@ZX0eL+^K7@>_hKikn)v=zzQHN&rF%k}?Q1)WR#d&W0 z+Ye}~FWt+z=wzSdM)g}m3oKUnu1|~?OLe>^FJBWRLL21WIjvmkRo%Kn{z6Oec@!_| zam&?eqbIWq1sg4+g$Z0TR>4Tr2A#6q?1h(_SzgAgfbq#U2C7sMBU`-GM3c5YP^922 zfWEnKf7slvgLxxg$PHA%^SJBReDLEPv%12^huN^%VG#^WrPynZMLZ39q4P z3mmn*vMreAqc6qy8!>o;K9jThcbYu%C%+h2HE|;^XrijemC5&qT92nz#ZhP%SwTR* z<`u4gpODYQ+hB28@*6u|#~m&EcI`Wedp0zTTvETkWuP~ z-KSKq9>&zSY*q=EH%Ng6aUm48_Kks3eCN06S3xLG(-4?iA)ls#F72d~L4iXe$$2=I z6t-Mm`B*7Wt9P_AL9Mr4Um+j72NO##secEsWy4SZbn@yU8htpof!tXo3)y3;x+~-d zP#R_FLGv*Brijzytrr+t_6NGe}if-@!M=E?rdC zsH?Pf)yGc4y3Q@mwurM+u}47Igg>E0Y$Kyd5^7BV7t(e+{JfaELf*;AXo8YXqExk` zeC*#j4iK1pW&FD+=|g-OW#wN+VGmh8K@=>sx`+5OY6fUXUq)d#jtzgNhr%=>u(6+)&B+QV6G}B3sAvg6^=sZ;8fH1RU^y;jHJ&Z~rH;>&{lJ0UYpVl0Cre(*`E5 z)visr%BQOjlJfByW_k-jL3kHoK$TICn!hpBS*tV}J|g|tdi@oV7|IIfFu1;c^7G)J z8sqQZWbBM1R`FS_oD-d;dSSA&ROg$3eM{gjFv|!OnYzV`Fntwb!m^ghKi(1^Nkz^k zi|Tg@aqq#oOXOOrZs8WHbKYbz3-xfFpVwqN(DxiZqChbuW4Q6!sR+MA3#PJq`c6dt z9hxD1Bmaw5op@1S+!JKPi}HykyG_)AGoUwYYlA)u{p4;AF}JM^>k}1v z`pw((aeCo4|6k9Xef+RAp<%ZSO~kwX(@D~&+y6B!_S4u;WE*h7SEh+*){GPR48eMC z*Xkj)&TH)akgyH?CA{V&WgIMoqXWq~bUalw$T?K+j#i%J_dvyOLFKbVseCD#+RfE% zsNH-y8gdTBx4Y{(@93&kGp2^9NARH#A&P5zzQnNSC}I6hEmQrP9&cDR|53k|@oh80 zDb@#jG|7J8-R!Qv4dVh|Pu+YMP@hqc2aFGrmyod5z&&L4#q27a9#{~A@+R5ck8*1* zuyXM-!ar2oGpIm9-C^(; zOxEm|wBuGTErnx=@6tdUcBTFfE(}sQ&l$UMsz;u12k+ujG%u(f3vXiMOjkfeQxKR* zI7|Nf?P}TZ4q>=#PZ13q))PyJkhh^EzCpvA0AC`Z`zj7KP{)A3-{gA_YYq(?VEC^L zw`yOP2ieyx!=3+Eq?c0V3~(vrbyCQjD_XEuKfuzA^ZB@K_hFUUrCxFAA?Sjg*8(_c zzTWGM5zdqU@>7lo6#@O(z=F!a&RP?VPHC7XN$@eWjI{ER_Qksj=%^uZwgsER_dNYBY*QP~!|C}fi% zrPS+;1!eMYJ7vmDl_#l%VT->+6nXfBen=jpQbN3c<3WB5$e>pkjERz!?mP5Y!{!?b;BI_vS( zYVJosTl1uwawAPWeYq!}@e`sDG*U&NGyM(a;xu`JN?a@OkLLzPCMtZLOq zn%DZZIT!oOWbwe~@RyTt^9Ic`z5>kU+$!^O=vW7+1?OXaGN05SGn@BP-}j%S{(kua zi2Kjrixb}}+Tg~tx!luejruwrtrpX~fJuBT|LRmHF)S6k=o5`%J#Eq8Tpuy7ryv84}{t34bULSpJ&QM>Z{WUs3;FuF5+=XArgPWQijLMD&f-#D}A=1PHIfsVo)pnjvz}#;zVXLVg2zn%bjo2v*4Xw{YxM z%9-j-2(3_Cpd7i?H6rQ4@^wGLDYnI&ep13}q==rxEp#P4ihlK=#p2H;MVW~ilnfr@ zdNZlVZn<0~BPsh!mxRH?cH*7ikP5@UuIcj_JSkAZa8xPR%^}F{re!!j{l(`cwhL8M}* z0Obh+Xicxd94GCB(q#;qhs>&1CCN$uH(KKi&mCW$Q|ZA08poWg>3rL&K+zQVl!2GM zu4jA+&J-Mf3j2wAlm#Et$j#-;3p(ZYRsMmm>tjJJ6&}+|yDMl(fs-}xb)DE`wjDrO zT8g;75Jo>n<@!?jDI6Dx%{sB!A~x&A=HTjLjv2>iO!Ph$wN8MkGEe%<^@iZU@~pB# zK2B8DYD~n^tkNwjH-?gY7gWfjRUYxkCpdL<8YKab1q4}w^KgRzfsi(32}V7w2ZO0! zj<{1S0c_%YCVplKMkfwpp%F>DU8=F0cDtZt7&{&XRoSxXZTeP&Yq^eOTBVmfbx3ff8YvwO8tEB_N8(8SAP?Y zh9WcopmAQC-tWL-TeJj61exOGnW$A85yjAFr5;G&(1_6djMWkGH4YOv1)6BIP&-V+ z7f0jV3}}Fe=<^fq(?I-&=O;XWJ%{(?w!)x9_!=Oq>x-0AUSCLmkv_m$9g78QwfvPh zU_$3^W5-Ll^M9fU_zkmO4!Dl5C*WVwZ!&g1M&&XC?Iy4MoTSo^pZ~@8IItERc&t0Q zHvcMEP!!S8{HG(Zg#i1J zeW=3dLlnQ#00Y1N{Rczv>s>0Yq;JTtXQ6I%`rpQ{eBTu+{S3aPdoKCkPVvZZsI7v~ zD#LYfh8t+3^T;#Q(F8@gPAN8QZa0vLrNS%BERTHQ_c?wBxm3c?<%9!v19-%>y*(a$g5N2iNpyRAO3h?>xUrf!eNPu^BRf_?utMu9aYOKHbl|% z&2NRKmA&Qvtu&1svO~+``6^OFlp0PRf6<{)bVzyJ4tht(<3IR$;UVSm&B%)oPkyy% zP(1mxH@}8>8XCSe!G3G=&27YYgXFPCJ}X#G*ihl+a%CJ+f*pkd{@V9~2=J(#^|#}L z!`Waue1tR>l0=(u{OtzTo>d|LMlCP(dtmCCAm5=q@_9!N;7O|+e*UzIRO_S|<}C~) zd~^~?yi>kcl4;eZ{&1?2Og}N_8c)AkCye^A`|tr>#E)V_KOwg<)3{xT4LBFF(5gHB z=F=utar{j-n|*Se+jZ8yW#az*hv33kL%iKoz=I!|d6sZqB6)#~>k{ZAT7DXbZQt?td4ncg_xH`hJ>|gYfEr9M_PzL*7vFiYciaKt zBjg`NrxK-I$gv!MJNCua3HWlwyiVUb8sD*)*2a|D_DMSz2&0d`cD&dB8e39Tjb1Cs z^s8}_0tu%GW<@YT`&9&ez5WK+>IpgWE+7UjCri8cD9JN8{z&0flF2n+Nv5-Gm1O!t zRY@lIl-ez1H|mxYPyIExfwMRg7vl$#l>`RU>Q?p^qN9i4xQ8RLY+VKTM(SK9&x~XE zg}+rWFQyNfc=yV1NP3qCUiAhc-5K{gD1q(gsI4jE=}B6o^VfaO zqzw8f=&2)U;xH{3ZC!`ENce6vz(xE)+|^3ssf*HLomv#$Ic{FOZz6ul<~068gX(@Y ztZZI*zjO)z>>J%vM2l3m<#p8CIEs#K9Md>Wo)M2#ytCf)5Rj#RfWD@sd@3l9L)PNO zB)PAGdRDLdBZ{#50o4(LO3a{wwgZcuOAUe^&G0YWooDHQ9$#WTUF6YJ5Dkq7RXm^x z_7ah-aL^C)@3~Lb-OoearLWS)qqCc+zQgyUb4mu0LCW|XM|ml)kb4qT4nNNz(qPN9 z7c+oZWD=L^{e3#uQbTL0-^F|%!mSA8bjJD)D>izuUri8WmCAm#QsosTgX*BXSETv< z&iVAKVnur2!{U6CI3JbjrQW{Z5SQ@{zr|_|oFzDO*t)h7YMe!%3wpPP7w`!_N#6}$ zo<>vsb(n?a=fITGC(;MlAwnjWL$=*eO2mu;aI9GLx$Aww;DEN`t%y3#!FSfjC}d^N|$Py>;8)fu!*dQJio;#b^DF;*4KYoO=)A71t;1<(Kh0 z_~op-`6cd7eo4NKUoN}_mpgBa+l31b+S>X!zv{Mj;fk}~x9*|m&V!%Bm>j3aJsoen zg)+B3j^Wx9cR%7WI@Z+__Ym$lyOO{WJA3iU7CXOv9k)ut5%B3&hBq5ykv-Ds}ApBU;Y zIKK=W7Kca!Cuyi89D+<)+*jMEmzUCOM3f-EgI83RrvY&=P;?OAa2;|J2{K6HDX+NY zbMOxKDX^QU2#1tcIG-!RLEO<$iKg!BvK?LNMoa(16>Ol2X1!bvOwjMF9PeFR0t=+# z*>>9_%=F}KkJ6Fj{jQyDMly8M>9PJEo$EyF`{c-pQg=UwQg=Uol2S@C327yn#0$wjID6urxWpEL$@?5CwBX0hr0-Ct$*3}Ju(h7Tj4CR@L$8h{1EpU(lW7%%vh5(fI75A0$600b?>XLT1+np@3r^Bgj- z;P=O@+vRD;_xcaUXha!oG~q+lwr{f&(zHwc9UzQUt@u#e>PoVnV^_yx#^cYy7-4Mf z*`xkyAvg+uG_jKpY5?JagJJMK#}60+Dn;m*im?3RzcmOc8~RPd?#R9ZgZMJ8Op^@S z>Gl4)elAWbyib+BUGNy}S&D*vtMQ%PzA?x5Zlw{|SLX>7^~1^IAjXR%d~OpU;#<&L z+fmq_wCf?{*^Z)Nl#{7k(MPtTqqd{i*c$!h0@U1R>iiJD#<6q!#5s&@KWG|vRLr2E zef$+MgId9cB#p&>8Xn0X@%Si@kMLOLF?shZ$uyZO$>egPB$x1b9*^mRL?xNd+o)Nv4fmC3!WE2@)mQ$K&-pzM99^@VJA=*YWsz9^b@c2aoMM zPUZ0o9;fiw%Ht#+C-T_BV>6FUJT~xH&tn~r8ISn{oJ_I_c;GQfH6@t@o{~(sRgwwY zN;1(Sl4C~hM=&sgfe{RhU|<9TBN!OLzz7CLFff9F5e$rAU<3mr7#P982nPO#V}MM7 zBYz_p7{R~@2L7!WsJRi_W+Q(i7#M&7=L6dpP!gRAunfVBO?30G7%LO%gu2SMy4G3l z*+uKCiyN96sMx^txlIkeA<}sgyS%KjqNu!R(agem^VAf^Xgip;iRqa(gQ;EYo6=$F ztOVif{?W$MP21EB=C51F|AqI;D+()K`11<3D86ytwg-Rs^Uv=Yn?!V&n|*nCb6eZx z>zZ3vwYAhNue;p6u%x_bR$;}=!iF|qYr`_ZS9f`fufDaernW6~Gc!GS>!~P8pV?AN zJT&q*GzLsJ4xK)dI)Z@_42)pl|0)LHy+)rqux;8k_WI$YG2s2X#gpgzr0D#;1K!_pvzmVsuJ<4W;n*{v z+|S`M8wqD`M850C%v6d%`6GW{9RorAw||GKkFG}*6iT`nOL>|xJ<>}jG4`E_jO_!K zzlZPy?yp4JYJ_dLe;#RfBkaWUFK|^5=!AwuJU@v1R)p7Z|2KrQ5fO-49~a0$Y#2p=MUJHmSilMogl?Lw4IK{$$_M_LoEHzECLg#SRe9bpfG8|h;a zX5d~z_%6!ch2X;dy$G)&?+19+;eHIlLWCTotwh?VxPBkuK7=pud?Ui?xc@b->9`)k z^*Mxl@Xi5*eBAdV6yV;1@FdDC$F&||Dblm>oQC^HaD5YD7s6Y3{siF`oBa|UDB8UjLA>4y-baYrjea0F5Xup%5n2&C5pG8KEy8w$mk|DmpdchX%h>q{g$OkW?FhFc zJcRHZf{YON9QYH#g;0sG3}FL80AVY_lL&u7_yA$t9+XAMLMTUQLAVa#mk19cJd1D; z;W)y0oO5tCLMB29!et1}2!4bgBRqug62eCalm867A(SDsA#@_#hHxLkPK3W896{(u z81(|i48oZRR)h-?G7(A;JP6AW)*#Tx9)(q=j>WNfHk#?#7&exTV+J;!O<+a{&xvdj zo6O8CflXnjF$+7Lox#pziR>&kl}%$w>})ojox`jwnVrkN!&2CJ?0j|so53z*GucHf zm8G$CW@C1i!7^DEb1)~%W-gY)a#HY&BcM znpiVyVOO$N*2a8HU~AbrrmfQWimZ0^>frP2nx^G-t8136u3Ol!rmogogQdGxG@KQg zT3zGwwN}^GVfoj*Ay`yRTv_Ldbn_C9Ag!Y%Os;RAQ9b6aXv^88c;2jt;LSU<~w4DSNpH z-MoBNs2^$)r~Xjsts90&6`BSo4#^k1@*rcZY5?O#kTEKAAk#->wl*&lB3L~t&$l5$ zzJ+rJgB|3y;kz-!*b7&P%wfBMyr^z832UlbTAP>GwY4?3wnf4WW(-T#)^&u&K~sg6 z90h@v)><2dcrBF^?<864T8DhAb;B_4v~C#sjR9oWS|76PkldiY5M+me6pzRq0`wsD z2ENr+w|Yg0mq7T+{+6IgdNV8fR5LBY2xutsf>bjaH zfkZt|5!&iQNt`OYnwHjvX6Q*9s@K%4XG0}J%!ZQrjj*~7svhZ8Xj!FiMAC+ay4AI; zt!@q4YHq9JcR^uFsp$IJn$?1u!D&mW&_&P;Zd#fln}RnG(yM(9EvwbS;YpS9L2^Ew z(mg2M(6oxb#?wgO9{C%=zz7CLF!0}t0ovE3K!3q2-P4{k{pqo1Y(`L@7^BZ6|9JXS zg~4Z-S@~b^dF1*(3j>Akhx>cTFZgpUwTAWT3#NeFg?5(E#zxBd4l`u8-#LkPb? zxE7%Wp$fr`a4|wA!np_*gcHE?UlH~pJd5xs!u<%pM7R^-283%7u15GKeA1Y}CQE z^x*Qs4i$aPn&u{EkA=QXorBrJ$4;lVNO{MSUcig@kE$lk*jLxOhW#;oUtPzZiK(tx z)3y@TlG9UKOm+3_mX<}!TYSY0t5KYN7DE+cA+=0cxe~Uy`sU_U*eO6cz8I*cMH}i~ z(OlhBvj!^$^u4Z?%vUU+BQ=_g8B0(a-EVHNa%9!xt4j^fV{<^nk8nbzNNxD;|X;w`xO} zwPFR~cEkLdHejYJ20632Nh?@@jiS=?U=A#5ZEbF4?3&mGSe}7f z+_sbMi;3ad2vZR?{V}$@rlE}xq^{f;`yrKB$UT~7Hv^OFfzxZL{Q+sqVyMD-4a-_< zS~swwAUwbeR+Zr8pN8vkYYRGdL%5z$n#>A?7TC6764a=&BLW_^Q3fsxV?|8^h|H)f zuWJiY{&B79Cw3m}sajt_(PrvL#Rgc}))Y3hg67Sw8)mT+vE{JN)wI=B z)UBy$sc&w@`21HSh37WGqPK=~*<@;2SW_45-=n$;0TzU&S}ozX8V`l4LaXnvB0i+t zuoKeAc$O8`(GUwhcj*>lcr`Qu6G76l{kqB~)euk{qLDVR*e?jf!)M3NZ7b9Uof{;f zZvQG49*nIU+;y!hnp@Y9-FbGi!29wePML<~t9Sx-xWX7(2=O$l4UO_05_V}(d1=u+ zTe>PwzR7Gg^6q~>24c9PZ-GdO?h74Q#IT1qI2}g|ai7$dm>BjrIjN5PofHF)$J&wa z!A@p1;v&AMIT!nzrFfo;xES~J_k`|WCul`BhOflJ*Ll16qfgo3JYirGfS1r5I4sj^O0iWkgr(p-w}(8*esa4^_ZUst>)X!R{%< z9{$|uR|V=>#FDTFTaR*e$b}sZ&s1|Ou3p}1EuPl#^m%w|4t8+qFB^Nw1MByo4%(A# zz#B~{laAfuB=m~nG#*pWpgZ$-gRl&IYxwsr#@=;I2nU5|tqpJyZdw3cuvLZ~<_fep z8=(ReDZzC;_NOy>+XWaAF&uwB-rFWXy*dIjR8trmMAss~F%$dP^El)s{QU*I)s-AS z^nMT)s!hf4m(^2`o%I;>u^HuC@KzJs5YY?xry#WssRTna=+_EJ>$Im8=;J!PLo`c5 zI@PfTWtz|*AL>a$Pv?MEL@6J3?qhIQ2kxPsQj0ApLs+9-bxi+5q$T04+1T+<(m1FQ z?-K{9tu^6}-d~0`eW;IUo&+qZJ^}F6fyY1)Ho^v#$284b!?qWA=OX;KMZgt=W+ty~ zC32(j*9NbHbsXC^v~v;aDny9Eh$Acnu^%24@Qr}y13Yn%OSo+Vjo<^!3}X70~?GxJ#H7n$~~vMgWLrmRP^ z;vLU8K5%^E_^$I7=N-;RoPTwG;f&2bJv%MikzJ7eo9w5vcW1wqeI$Fl>kOC8wc6F` zy5990*CE#zE?v&_oXt7k&)JdlM$Vy}QMtC%>bldq?yvo(zm83 z+nl!bwwrCE?33)%>=)W++n3tEYroaL)&8daef#J3xQxt6 z>&%BUpU!*^a2vBy9d3u{c+nv{Qk`CBqw_&$w{xE}H~ZG?JF>TD|0BCNr!(idoXNRG zxj)E#2t7WLdqJKn?~=TS@+|qY@*DFvBs_F(!H+g#g9 zyJ-KB{Vw|->|OR}?0f9{><8@su*>%M?8oh&+2b<|8K-5OmvK>s4ct+fQJZ;7<};aR zXSIMI%#JL_amQ4r&H1?VpUz_N<@v65*MqKIt}!_;<`{BM%T3CCBzG;a_Jh0^^Lq1Q z^C#!0<>%$k&A*p$bp>pjxD=-PQtwL5OS>n{n0`@uUi$p>Md>x^Ytw&`UTC}Dw%7JI z+k3W8fVxQcV`&3QQIA2|uR8M$xf>hkn?hCEZ=FY+GE z`#5i6zBRut|0U{Q3+#lr7*qYJ&!oPT`nOa$^^4RQX{~AF)6Ym>kiHC*eZaQg_7B@< zwmka+`zrhQ?Kj!a%gD{B%vhIkt2T}%XD-gXDf5NQwHQZ%tPithI(&`_(D3`t$=PRQ zPsfP9Ec@Q*@)Po>0fVLa z>>A!Zc5&*RsrRLRmTF7CJbk<^*XFkU(Dn-b9+hpr-EV)?{scxc%bbFUfc3d-7N13;9>&Z_2+FlH%$7z4>qC|DAAg z6X+C!eTvkHsnb)lQx~KzOua0%HFX_u^P|+Crrw?UaOxAOFQy(&jY%7wc1Buu+NEip zw5qgg(*kKXr~M@DuC(8#J)ZWLw71hvq?M(&r|(QZk*>3iwV7;FY>BpWZ0Fn3Yz|w# zt=Kl-R%u&mtFv8cyUMo7)@i%ZcAIUh?LON>wjH+Jwij$K+xl!D*gnN?`i!?*>{IP& z;EFQ)O8X{o@lN}5_9GZkri>{W+cKWWcmdGIWRA{k%JgMkm3d9(4>SLe`9Wp^WXQ~{ z%&feuOS0NPm1`m2ZU)cXm32?nZ?f*s`p>M#v!2e{mG$SWm$F{VI+*o#){(3avih@5 zWa%7Z9VW*VN1|i8BgHY(VRvLZ3LM3bd5&_(p(;nMqtVggSnIeNGV(gd4O~v%4IccR z;{gY7ct2m;F@x=vjN3AfWE{=t%6&ceARIH3@(S{<$h#)*?z~^;{Vs1;-l04>59JTS S9*;{>sx=jtk-z`J82EocyWblC literal 0 HcmV?d00001 diff --git a/osal/window/pthread/inc/pthread.h b/osal/window/pthread/inc/pthread.h new file mode 100644 index 00000000..436ea8b6 --- /dev/null +++ b/osal/window/pthread/inc/pthread.h @@ -0,0 +1,1368 @@ +/* This is an implementation of the threads API of POSIX 1003.1-2001. + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2005 Pthreads-win32 contributors + * + * Contact Email: rpj@callisto.canberra.edu.au + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#if !defined( PTHREAD_H ) +#define PTHREAD_H + +/* + * See the README file for an explanation of the pthreads-win32 version + * numbering scheme and how the DLL is named etc. + */ +#define PTW32_VERSION 2,9,1,0 +#define PTW32_VERSION_STRING "2, 9, 1, 0\0" + +/* There are three implementations of cancel cleanup. + * Note that pthread.h is included in both application + * compilation units and also internally for the library. + * The code here and within the library aims to work + * for all reasonable combinations of environments. + * + * The three implementations are: + * + * WIN32 SEH + * C + * C++ + * + * Please note that exiting a push/pop block via + * "return", "exit", "break", or "continue" will + * lead to different behaviour amongst applications + * depending upon whether the library was built + * using SEH, C++, or C. For example, a library built + * with SEH will call the cleanup routine, while both + * C++ and C built versions will not. + */ + +/* + * Define defaults for cleanup code. + * Note: Unless the build explicitly defines one of the following, then + * we default to standard C style cleanup. This style uses setjmp/longjmp + * in the cancelation and thread exit implementations and therefore won't + * do stack unwinding if linked to applications that have it (e.g. + * C++ apps). This is currently consistent with most/all commercial Unix + * POSIX threads implementations. + */ +#if !defined( __CLEANUP_SEH ) && !defined( __CLEANUP_CXX ) && !defined( __CLEANUP_C ) +# define __CLEANUP_C +#endif + +#if defined( __CLEANUP_SEH ) && ( !defined( _MSC_VER ) && !defined(PTW32_RC_MSC)) +#error ERROR [__FILE__, line __LINE__]: SEH is not supported for this compiler. +#endif + +/* + * Stop here if we are being included by the resource compiler. + */ +#if !defined(RC_INVOKED) + +#undef PTW32_LEVEL + +#if defined(_POSIX_SOURCE) +#define PTW32_LEVEL 0 +/* Early POSIX */ +#endif + +#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309 +#undef PTW32_LEVEL +#define PTW32_LEVEL 1 +/* Include 1b, 1c and 1d */ +#endif + +#if defined(INCLUDE_NP) +#undef PTW32_LEVEL +#define PTW32_LEVEL 2 +/* Include Non-Portable extensions */ +#endif + +#define PTW32_LEVEL_MAX 3 + +#if ( defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112 ) || !defined(PTW32_LEVEL) +#define PTW32_LEVEL PTW32_LEVEL_MAX +/* Include everything */ +#endif + +#if defined(_UWIN) +# define HAVE_STRUCT_TIMESPEC 1 +# define HAVE_SIGNAL_H 1 +# undef HAVE_PTW32_CONFIG_H +# pragma comment(lib, "pthread") +#endif + +/* + * ------------------------------------------------------------- + * + * + * Module: pthread.h + * + * Purpose: + * Provides an implementation of PThreads based upon the + * standard: + * + * POSIX 1003.1-2001 + * and + * The Single Unix Specification version 3 + * + * (these two are equivalent) + * + * in order to enhance code portability between Windows, + * various commercial Unix implementations, and Linux. + * + * See the ANNOUNCE file for a full list of conforming + * routines and defined constants, and a list of missing + * routines and constants not defined in this implementation. + * + * Authors: + * There have been many contributors to this library. + * The initial implementation was contributed by + * John Bossom, and several others have provided major + * sections or revisions of parts of the implementation. + * Often significant effort has been contributed to + * find and fix important bugs and other problems to + * improve the reliability of the library, which sometimes + * is not reflected in the amount of code which changed as + * result. + * As much as possible, the contributors are acknowledged + * in the ChangeLog file in the source code distribution + * where their changes are noted in detail. + * + * Contributors are listed in the CONTRIBUTORS file. + * + * As usual, all bouquets go to the contributors, and all + * brickbats go to the project maintainer. + * + * Maintainer: + * The code base for this project is coordinated and + * eventually pre-tested, packaged, and made available by + * + * Ross Johnson + * + * QA Testers: + * Ultimately, the library is tested in the real world by + * a host of competent and demanding scientists and + * engineers who report bugs and/or provide solutions + * which are then fixed or incorporated into subsequent + * versions of the library. Each time a bug is fixed, a + * test case is written to prove the fix and ensure + * that later changes to the code don't reintroduce the + * same error. The number of test cases is slowly growing + * and therefore so is the code reliability. + * + * Compliance: + * See the file ANNOUNCE for the list of implemented + * and not-implemented routines and defined options. + * Of course, these are all defined is this file as well. + * + * Web site: + * The source code and other information about this library + * are available from + * + * http://sources.redhat.com/pthreads-win32/ + * + * ------------------------------------------------------------- + */ + +/* Try to avoid including windows.h */ +#if (defined(__MINGW64__) || defined(__MINGW32__)) && defined(__cplusplus) +#define PTW32_INCLUDE_WINDOWS_H +#endif + +#if defined(PTW32_INCLUDE_WINDOWS_H) +#include +#endif + +#if defined(_MSC_VER) && _MSC_VER < 1300 || defined(__DMC__) +/* + * VC++6.0 or early compiler's header has no DWORD_PTR type. + */ +typedef unsigned long DWORD_PTR; +typedef unsigned long ULONG_PTR; +#endif +/* + * ----------------- + * autoconf switches + * ----------------- + */ + +#if defined(HAVE_PTW32_CONFIG_H) +#include "config.h" +#endif /* HAVE_PTW32_CONFIG_H */ + +#if !defined(NEED_FTIME) +#include +#else /* NEED_FTIME */ +/* use native WIN32 time API */ +#endif /* NEED_FTIME */ + +#if defined(HAVE_SIGNAL_H) +#include +#endif /* HAVE_SIGNAL_H */ + +#include + +/* + * Boolean values to make us independent of system includes. + */ +enum { + PTW32_FALSE = 0, + PTW32_TRUE = (! PTW32_FALSE) +}; + +/* + * This is a duplicate of what is in the autoconf config.h, + * which is only used when building the pthread-win32 libraries. + */ + +#if !defined(PTW32_CONFIG_H) +# if defined(WINCE) +# define NEED_ERRNO +# define NEED_SEM +# endif +# if defined(__MINGW64__) +# define HAVE_STRUCT_TIMESPEC +# define HAVE_MODE_T +# elif defined(_UWIN) || defined(__MINGW32__) +# define HAVE_MODE_T +# endif +#endif + +/* + * + */ + +#if PTW32_LEVEL >= PTW32_LEVEL_MAX +#if defined(NEED_ERRNO) +#include "need_errno.h" +#else +#include +#endif +#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ + +/* + * Several systems don't define some error numbers. + */ +#if !defined(ENOTSUP) +# define ENOTSUP 48 /* This is the value in Solaris. */ +#endif + +#if !defined(ETIMEDOUT) +# define ETIMEDOUT 10060 /* Same as WSAETIMEDOUT */ +#endif + +#if !defined(ENOSYS) +# define ENOSYS 140 /* Semi-arbitrary value */ +#endif + +#if !defined(EDEADLK) +# if defined(EDEADLOCK) +# define EDEADLK EDEADLOCK +# else +# define EDEADLK 36 /* This is the value in MSVC. */ +# endif +#endif + +/* POSIX 2008 - related to robust mutexes */ +#if !defined(EOWNERDEAD) +# define EOWNERDEAD 43 +#endif +#if !defined(ENOTRECOVERABLE) +# define ENOTRECOVERABLE 44 +#endif + +#include + +/* + * To avoid including windows.h we define only those things that we + * actually need from it. + */ +#if !defined(PTW32_INCLUDE_WINDOWS_H) +#if !defined(HANDLE) +# define PTW32__HANDLE_DEF +# define HANDLE void * +#endif +#if !defined(DWORD) +# define PTW32__DWORD_DEF +# define DWORD unsigned long +#endif +#endif + +#if !defined(HAVE_STRUCT_TIMESPEC) +#define HAVE_STRUCT_TIMESPEC +#if !defined(_TIMESPEC_DEFINED) +#define _TIMESPEC_DEFINED +struct timespec { + time_t tv_sec; + long tv_nsec; +}; +#endif /* _TIMESPEC_DEFINED */ +#endif /* HAVE_STRUCT_TIMESPEC */ + +#if !defined(SIG_BLOCK) +#define SIG_BLOCK 0 +#endif /* SIG_BLOCK */ + +#if !defined(SIG_UNBLOCK) +#define SIG_UNBLOCK 1 +#endif /* SIG_UNBLOCK */ + +#if !defined(SIG_SETMASK) +#define SIG_SETMASK 2 +#endif /* SIG_SETMASK */ + +#if defined(__cplusplus) +extern "C" +{ +#endif /* __cplusplus */ + +/* + * ------------------------------------------------------------- + * + * POSIX 1003.1-2001 Options + * ========================= + * + * Options are normally set in , which is not provided + * with pthreads-win32. + * + * For conformance with the Single Unix Specification (version 3), all of the + * options below are defined, and have a value of either -1 (not supported) + * or 200112L (supported). + * + * These options can neither be left undefined nor have a value of 0, because + * either indicates that sysconf(), which is not implemented, may be used at + * runtime to check the status of the option. + * + * _POSIX_THREADS (== 200112L) + * If == 200112L, you can use threads + * + * _POSIX_THREAD_ATTR_STACKSIZE (== 200112L) + * If == 200112L, you can control the size of a thread's + * stack + * pthread_attr_getstacksize + * pthread_attr_setstacksize + * + * _POSIX_THREAD_ATTR_STACKADDR (== -1) + * If == 200112L, you can allocate and control a thread's + * stack. If not supported, the following functions + * will return ENOSYS, indicating they are not + * supported: + * pthread_attr_getstackaddr + * pthread_attr_setstackaddr + * + * _POSIX_THREAD_PRIORITY_SCHEDULING (== -1) + * If == 200112L, you can use realtime scheduling. + * This option indicates that the behaviour of some + * implemented functions conforms to the additional TPS + * requirements in the standard. E.g. rwlocks favour + * writers over readers when threads have equal priority. + * + * _POSIX_THREAD_PRIO_INHERIT (== -1) + * If == 200112L, you can create priority inheritance + * mutexes. + * pthread_mutexattr_getprotocol + + * pthread_mutexattr_setprotocol + + * + * _POSIX_THREAD_PRIO_PROTECT (== -1) + * If == 200112L, you can create priority ceiling mutexes + * Indicates the availability of: + * pthread_mutex_getprioceiling + * pthread_mutex_setprioceiling + * pthread_mutexattr_getprioceiling + * pthread_mutexattr_getprotocol + + * pthread_mutexattr_setprioceiling + * pthread_mutexattr_setprotocol + + * + * _POSIX_THREAD_PROCESS_SHARED (== -1) + * If set, you can create mutexes and condition + * variables that can be shared with another + * process.If set, indicates the availability + * of: + * pthread_mutexattr_getpshared + * pthread_mutexattr_setpshared + * pthread_condattr_getpshared + * pthread_condattr_setpshared + * + * _POSIX_THREAD_SAFE_FUNCTIONS (== 200112L) + * If == 200112L you can use the special *_r library + * functions that provide thread-safe behaviour + * + * _POSIX_READER_WRITER_LOCKS (== 200112L) + * If == 200112L, you can use read/write locks + * + * _POSIX_SPIN_LOCKS (== 200112L) + * If == 200112L, you can use spin locks + * + * _POSIX_BARRIERS (== 200112L) + * If == 200112L, you can use barriers + * + * + These functions provide both 'inherit' and/or + * 'protect' protocol, based upon these macro + * settings. + * + * ------------------------------------------------------------- + */ + +/* + * POSIX Options + */ +#undef _POSIX_THREADS +#define _POSIX_THREADS 200809L + +#undef _POSIX_READER_WRITER_LOCKS +#define _POSIX_READER_WRITER_LOCKS 200809L + +#undef _POSIX_SPIN_LOCKS +#define _POSIX_SPIN_LOCKS 200809L + +#undef _POSIX_BARRIERS +#define _POSIX_BARRIERS 200809L + +#undef _POSIX_THREAD_SAFE_FUNCTIONS +#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L + +#undef _POSIX_THREAD_ATTR_STACKSIZE +#define _POSIX_THREAD_ATTR_STACKSIZE 200809L + +/* + * The following options are not supported + */ +#undef _POSIX_THREAD_ATTR_STACKADDR +#define _POSIX_THREAD_ATTR_STACKADDR -1 + +#undef _POSIX_THREAD_PRIO_INHERIT +#define _POSIX_THREAD_PRIO_INHERIT -1 + +#undef _POSIX_THREAD_PRIO_PROTECT +#define _POSIX_THREAD_PRIO_PROTECT -1 + +/* TPS is not fully supported. */ +#undef _POSIX_THREAD_PRIORITY_SCHEDULING +#define _POSIX_THREAD_PRIORITY_SCHEDULING -1 + +#undef _POSIX_THREAD_PROCESS_SHARED +#define _POSIX_THREAD_PROCESS_SHARED -1 + + +/* + * POSIX 1003.1-2001 Limits + * =========================== + * + * These limits are normally set in , which is not provided with + * pthreads-win32. + * + * PTHREAD_DESTRUCTOR_ITERATIONS + * Maximum number of attempts to destroy + * a thread's thread-specific data on + * termination (must be at least 4) + * + * PTHREAD_KEYS_MAX + * Maximum number of thread-specific data keys + * available per process (must be at least 128) + * + * PTHREAD_STACK_MIN + * Minimum supported stack size for a thread + * + * PTHREAD_THREADS_MAX + * Maximum number of threads supported per + * process (must be at least 64). + * + * SEM_NSEMS_MAX + * The maximum number of semaphores a process can have. + * (must be at least 256) + * + * SEM_VALUE_MAX + * The maximum value a semaphore can have. + * (must be at least 32767) + * + */ +#undef _POSIX_THREAD_DESTRUCTOR_ITERATIONS +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 + +#undef PTHREAD_DESTRUCTOR_ITERATIONS +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS + +#undef _POSIX_THREAD_KEYS_MAX +#define _POSIX_THREAD_KEYS_MAX 128 + +#undef PTHREAD_KEYS_MAX +#define PTHREAD_KEYS_MAX _POSIX_THREAD_KEYS_MAX + +#undef PTHREAD_STACK_MIN +#define PTHREAD_STACK_MIN 0 + +#undef _POSIX_THREAD_THREADS_MAX +#define _POSIX_THREAD_THREADS_MAX 64 + + /* Arbitrary value */ +#undef PTHREAD_THREADS_MAX +#define PTHREAD_THREADS_MAX 2019 + +#undef _POSIX_SEM_NSEMS_MAX +#define _POSIX_SEM_NSEMS_MAX 256 + + /* Arbitrary value */ +#undef SEM_NSEMS_MAX +#define SEM_NSEMS_MAX 1024 + +#undef _POSIX_SEM_VALUE_MAX +#define _POSIX_SEM_VALUE_MAX 32767 + +#undef SEM_VALUE_MAX +#define SEM_VALUE_MAX INT_MAX + + +#if defined(__GNUC__) && !defined(__declspec) +# error Please upgrade your GNU compiler to one that supports __declspec. +#endif + +/* + * When building the library, you should define PTW32_BUILD so that + * the variables/functions are exported correctly. When using the library, + * do NOT define PTW32_BUILD, and then the variables/functions will + * be imported correctly. + */ +#if !defined(PTW32_STATIC_LIB) +# if defined(PTW32_BUILD) +# define PTW32_DLLPORT __declspec (dllexport) +# else +# define PTW32_DLLPORT __declspec (dllimport) +# endif +#else +# define PTW32_DLLPORT +#endif + +/* + * The Open Watcom C/C++ compiler uses a non-standard calling convention + * that passes function args in registers unless __cdecl is explicitly specified + * in exposed function prototypes. + * + * We force all calls to cdecl even though this could slow Watcom code down + * slightly. If you know that the Watcom compiler will be used to build both + * the DLL and application, then you can probably define this as a null string. + * Remember that pthread.h (this file) is used for both the DLL and application builds. + */ +#define PTW32_CDECL __cdecl + +#if defined(_UWIN) && PTW32_LEVEL >= PTW32_LEVEL_MAX +# include +#else +/* + * Generic handle type - intended to extend uniqueness beyond + * that available with a simple pointer. It should scale for either + * IA-32 or IA-64. + */ +typedef struct { + void * p; /* Pointer to actual object */ + unsigned int x; /* Extra information - reuse count etc */ +} ptw32_handle_t; + +typedef ptw32_handle_t pthread_t; +typedef struct pthread_attr_t_ * pthread_attr_t; +typedef struct pthread_once_t_ pthread_once_t; +typedef struct pthread_key_t_ * pthread_key_t; +typedef struct pthread_mutex_t_ * pthread_mutex_t; +typedef struct pthread_mutexattr_t_ * pthread_mutexattr_t; +typedef struct pthread_cond_t_ * pthread_cond_t; +typedef struct pthread_condattr_t_ * pthread_condattr_t; +#endif +typedef struct pthread_rwlock_t_ * pthread_rwlock_t; +typedef struct pthread_rwlockattr_t_ * pthread_rwlockattr_t; +typedef struct pthread_spinlock_t_ * pthread_spinlock_t; +typedef struct pthread_barrier_t_ * pthread_barrier_t; +typedef struct pthread_barrierattr_t_ * pthread_barrierattr_t; + +/* + * ==================== + * ==================== + * POSIX Threads + * ==================== + * ==================== + */ + +enum { +/* + * pthread_attr_{get,set}detachstate + */ + PTHREAD_CREATE_JOINABLE = 0, /* Default */ + PTHREAD_CREATE_DETACHED = 1, + +/* + * pthread_attr_{get,set}inheritsched + */ + PTHREAD_INHERIT_SCHED = 0, + PTHREAD_EXPLICIT_SCHED = 1, /* Default */ + +/* + * pthread_{get,set}scope + */ + PTHREAD_SCOPE_PROCESS = 0, + PTHREAD_SCOPE_SYSTEM = 1, /* Default */ + +/* + * pthread_setcancelstate paramters + */ + PTHREAD_CANCEL_ENABLE = 0, /* Default */ + PTHREAD_CANCEL_DISABLE = 1, + +/* + * pthread_setcanceltype parameters + */ + PTHREAD_CANCEL_ASYNCHRONOUS = 0, + PTHREAD_CANCEL_DEFERRED = 1, /* Default */ + +/* + * pthread_mutexattr_{get,set}pshared + * pthread_condattr_{get,set}pshared + */ + PTHREAD_PROCESS_PRIVATE = 0, + PTHREAD_PROCESS_SHARED = 1, + +/* + * pthread_mutexattr_{get,set}robust + */ + PTHREAD_MUTEX_STALLED = 0, /* Default */ + PTHREAD_MUTEX_ROBUST = 1, + +/* + * pthread_barrier_wait + */ + PTHREAD_BARRIER_SERIAL_THREAD = -1 +}; + +/* + * ==================== + * ==================== + * Cancelation + * ==================== + * ==================== + */ +#define PTHREAD_CANCELED ((void *)(size_t) -1) + + +/* + * ==================== + * ==================== + * Once Key + * ==================== + * ==================== + */ +#define PTHREAD_ONCE_INIT { PTW32_FALSE, 0, 0, 0} + +struct pthread_once_t_ +{ + int done; /* indicates if user function has been executed */ + void * lock; + int reserved1; + int reserved2; +}; + + +/* + * ==================== + * ==================== + * Object initialisers + * ==================== + * ==================== + */ +#define PTHREAD_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -1) +#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -2) +#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -3) + +/* + * Compatibility with LinuxThreads + */ +#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP PTHREAD_ERRORCHECK_MUTEX_INITIALIZER + +#define PTHREAD_COND_INITIALIZER ((pthread_cond_t)(size_t) -1) + +#define PTHREAD_RWLOCK_INITIALIZER ((pthread_rwlock_t)(size_t) -1) + +#define PTHREAD_SPINLOCK_INITIALIZER ((pthread_spinlock_t)(size_t) -1) + + +/* + * Mutex types. + */ +enum +{ + /* Compatibility with LinuxThreads */ + PTHREAD_MUTEX_FAST_NP, + PTHREAD_MUTEX_RECURSIVE_NP, + PTHREAD_MUTEX_ERRORCHECK_NP, + PTHREAD_MUTEX_TIMED_NP = PTHREAD_MUTEX_FAST_NP, + PTHREAD_MUTEX_ADAPTIVE_NP = PTHREAD_MUTEX_FAST_NP, + /* For compatibility with POSIX */ + PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_FAST_NP, + PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, + PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, + PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL +}; + + +typedef struct ptw32_cleanup_t ptw32_cleanup_t; + +#if defined(_MSC_VER) +/* Disable MSVC 'anachronism used' warning */ +#pragma warning( disable : 4229 ) +#endif + +typedef void (* PTW32_CDECL ptw32_cleanup_callback_t)(void *); + +#if defined(_MSC_VER) +#pragma warning( default : 4229 ) +#endif + +struct ptw32_cleanup_t +{ + ptw32_cleanup_callback_t routine; + void *arg; + struct ptw32_cleanup_t *prev; +}; + +#if defined(__CLEANUP_SEH) + /* + * WIN32 SEH version of cancel cleanup. + */ + +#define pthread_cleanup_push( _rout, _arg ) \ + { \ + ptw32_cleanup_t _cleanup; \ + \ + _cleanup.routine = (ptw32_cleanup_callback_t)(_rout); \ + _cleanup.arg = (_arg); \ + __try \ + { \ + +#define pthread_cleanup_pop( _execute ) \ + } \ + __finally \ + { \ + if( _execute || AbnormalTermination()) \ + { \ + (*(_cleanup.routine))( _cleanup.arg ); \ + } \ + } \ + } + +#else /* __CLEANUP_SEH */ + +#if defined(__CLEANUP_C) + + /* + * C implementation of PThreads cancel cleanup + */ + +#define pthread_cleanup_push( _rout, _arg ) \ + { \ + ptw32_cleanup_t _cleanup; \ + \ + ptw32_push_cleanup( &_cleanup, (ptw32_cleanup_callback_t) (_rout), (_arg) ); \ + +#define pthread_cleanup_pop( _execute ) \ + (void) ptw32_pop_cleanup( _execute ); \ + } + +#else /* __CLEANUP_C */ + +#if defined(__CLEANUP_CXX) + + /* + * C++ version of cancel cleanup. + * - John E. Bossom. + */ + + class PThreadCleanup { + /* + * PThreadCleanup + * + * Purpose + * This class is a C++ helper class that is + * used to implement pthread_cleanup_push/ + * pthread_cleanup_pop. + * The destructor of this class automatically + * pops the pushed cleanup routine regardless + * of how the code exits the scope + * (i.e. such as by an exception) + */ + ptw32_cleanup_callback_t cleanUpRout; + void * obj; + int executeIt; + + public: + PThreadCleanup() : + cleanUpRout( 0 ), + obj( 0 ), + executeIt( 0 ) + /* + * No cleanup performed + */ + { + } + + PThreadCleanup( + ptw32_cleanup_callback_t routine, + void * arg ) : + cleanUpRout( routine ), + obj( arg ), + executeIt( 1 ) + /* + * Registers a cleanup routine for 'arg' + */ + { + } + + ~PThreadCleanup() + { + if ( executeIt && ((void *) cleanUpRout != (void *) 0) ) + { + (void) (*cleanUpRout)( obj ); + } + } + + void execute( int exec ) + { + executeIt = exec; + } + }; + + /* + * C++ implementation of PThreads cancel cleanup; + * This implementation takes advantage of a helper + * class who's destructor automatically calls the + * cleanup routine if we exit our scope weirdly + */ +#define pthread_cleanup_push( _rout, _arg ) \ + { \ + PThreadCleanup cleanup((ptw32_cleanup_callback_t)(_rout), \ + (void *) (_arg) ); + +#define pthread_cleanup_pop( _execute ) \ + cleanup.execute( _execute ); \ + } + +#else + +#error ERROR [__FILE__, line __LINE__]: Cleanup type undefined. + +#endif /* __CLEANUP_CXX */ + +#endif /* __CLEANUP_C */ + +#endif /* __CLEANUP_SEH */ + +/* + * =============== + * =============== + * Methods + * =============== + * =============== + */ + +/* + * PThread Attribute Functions + */ +PTW32_DLLPORT int PTW32_CDECL pthread_attr_init (pthread_attr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_destroy (pthread_attr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_getdetachstate (const pthread_attr_t * attr, + int *detachstate); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_getstackaddr (const pthread_attr_t * attr, + void **stackaddr); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_getstacksize (const pthread_attr_t * attr, + size_t * stacksize); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_setdetachstate (pthread_attr_t * attr, + int detachstate); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_setstackaddr (pthread_attr_t * attr, + void *stackaddr); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_setstacksize (pthread_attr_t * attr, + size_t stacksize); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_getschedparam (const pthread_attr_t *attr, + struct sched_param *param); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_setschedparam (pthread_attr_t *attr, + const struct sched_param *param); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_setschedpolicy (pthread_attr_t *, + int); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_getschedpolicy (const pthread_attr_t *, + int *); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_setinheritsched(pthread_attr_t * attr, + int inheritsched); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_getinheritsched(const pthread_attr_t * attr, + int * inheritsched); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_setscope (pthread_attr_t *, + int); + +PTW32_DLLPORT int PTW32_CDECL pthread_attr_getscope (const pthread_attr_t *, + int *); + +/* + * PThread Functions + */ +PTW32_DLLPORT int PTW32_CDECL pthread_create (pthread_t * tid, + const pthread_attr_t * attr, + void *(PTW32_CDECL *start) (void *), + void *arg); + +PTW32_DLLPORT int PTW32_CDECL pthread_detach (pthread_t tid); + +PTW32_DLLPORT int PTW32_CDECL pthread_equal (pthread_t t1, + pthread_t t2); + +PTW32_DLLPORT void PTW32_CDECL pthread_exit (void *value_ptr); + +PTW32_DLLPORT int PTW32_CDECL pthread_join (pthread_t thread, + void **value_ptr); + +PTW32_DLLPORT pthread_t PTW32_CDECL pthread_self (void); + +PTW32_DLLPORT int PTW32_CDECL pthread_cancel (pthread_t thread); + +PTW32_DLLPORT int PTW32_CDECL pthread_setcancelstate (int state, + int *oldstate); + +PTW32_DLLPORT int PTW32_CDECL pthread_setcanceltype (int type, + int *oldtype); + +PTW32_DLLPORT void PTW32_CDECL pthread_testcancel (void); + +PTW32_DLLPORT int PTW32_CDECL pthread_once (pthread_once_t * once_control, + void (PTW32_CDECL *init_routine) (void)); + +#if PTW32_LEVEL >= PTW32_LEVEL_MAX +PTW32_DLLPORT ptw32_cleanup_t * PTW32_CDECL ptw32_pop_cleanup (int execute); + +PTW32_DLLPORT void PTW32_CDECL ptw32_push_cleanup (ptw32_cleanup_t * cleanup, + ptw32_cleanup_callback_t routine, + void *arg); +#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ + +/* + * Thread Specific Data Functions + */ +PTW32_DLLPORT int PTW32_CDECL pthread_key_create (pthread_key_t * key, + void (PTW32_CDECL *destructor) (void *)); + +PTW32_DLLPORT int PTW32_CDECL pthread_key_delete (pthread_key_t key); + +PTW32_DLLPORT int PTW32_CDECL pthread_setspecific (pthread_key_t key, + const void *value); + +PTW32_DLLPORT void * PTW32_CDECL pthread_getspecific (pthread_key_t key); + + +/* + * Mutex Attribute Functions + */ +PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_init (pthread_mutexattr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_destroy (pthread_mutexattr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_getpshared (const pthread_mutexattr_t + * attr, + int *pshared); + +PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_setpshared (pthread_mutexattr_t * attr, + int pshared); + +PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_settype (pthread_mutexattr_t * attr, int kind); +PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_gettype (const pthread_mutexattr_t * attr, int *kind); + +PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_setrobust( + pthread_mutexattr_t *attr, + int robust); +PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_getrobust( + const pthread_mutexattr_t * attr, + int * robust); + +/* + * Barrier Attribute Functions + */ +PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_init (pthread_barrierattr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_destroy (pthread_barrierattr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_getpshared (const pthread_barrierattr_t + * attr, + int *pshared); + +PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_setpshared (pthread_barrierattr_t * attr, + int pshared); + +/* + * Mutex Functions + */ +PTW32_DLLPORT int PTW32_CDECL pthread_mutex_init (pthread_mutex_t * mutex, + const pthread_mutexattr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_mutex_destroy (pthread_mutex_t * mutex); + +PTW32_DLLPORT int PTW32_CDECL pthread_mutex_lock (pthread_mutex_t * mutex); + +PTW32_DLLPORT int PTW32_CDECL pthread_mutex_timedlock(pthread_mutex_t * mutex, + const struct timespec *abstime); + +PTW32_DLLPORT int PTW32_CDECL pthread_mutex_trylock (pthread_mutex_t * mutex); + +PTW32_DLLPORT int PTW32_CDECL pthread_mutex_unlock (pthread_mutex_t * mutex); + +PTW32_DLLPORT int PTW32_CDECL pthread_mutex_consistent (pthread_mutex_t * mutex); + +/* + * Spinlock Functions + */ +PTW32_DLLPORT int PTW32_CDECL pthread_spin_init (pthread_spinlock_t * lock, int pshared); + +PTW32_DLLPORT int PTW32_CDECL pthread_spin_destroy (pthread_spinlock_t * lock); + +PTW32_DLLPORT int PTW32_CDECL pthread_spin_lock (pthread_spinlock_t * lock); + +PTW32_DLLPORT int PTW32_CDECL pthread_spin_trylock (pthread_spinlock_t * lock); + +PTW32_DLLPORT int PTW32_CDECL pthread_spin_unlock (pthread_spinlock_t * lock); + +/* + * Barrier Functions + */ +PTW32_DLLPORT int PTW32_CDECL pthread_barrier_init (pthread_barrier_t * barrier, + const pthread_barrierattr_t * attr, + unsigned int count); + +PTW32_DLLPORT int PTW32_CDECL pthread_barrier_destroy (pthread_barrier_t * barrier); + +PTW32_DLLPORT int PTW32_CDECL pthread_barrier_wait (pthread_barrier_t * barrier); + +/* + * Condition Variable Attribute Functions + */ +PTW32_DLLPORT int PTW32_CDECL pthread_condattr_init (pthread_condattr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_condattr_destroy (pthread_condattr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_condattr_getpshared (const pthread_condattr_t * attr, + int *pshared); + +PTW32_DLLPORT int PTW32_CDECL pthread_condattr_setpshared (pthread_condattr_t * attr, + int pshared); + +/* + * Condition Variable Functions + */ +PTW32_DLLPORT int PTW32_CDECL pthread_cond_init (pthread_cond_t * cond, + const pthread_condattr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_cond_destroy (pthread_cond_t * cond); + +PTW32_DLLPORT int PTW32_CDECL pthread_cond_wait (pthread_cond_t * cond, + pthread_mutex_t * mutex); + +PTW32_DLLPORT int PTW32_CDECL pthread_cond_timedwait (pthread_cond_t * cond, + pthread_mutex_t * mutex, + const struct timespec *abstime); + +PTW32_DLLPORT int PTW32_CDECL pthread_cond_signal (pthread_cond_t * cond); + +PTW32_DLLPORT int PTW32_CDECL pthread_cond_broadcast (pthread_cond_t * cond); + +/* + * Scheduling + */ +PTW32_DLLPORT int PTW32_CDECL pthread_setschedparam (pthread_t thread, + int policy, + const struct sched_param *param); + +PTW32_DLLPORT int PTW32_CDECL pthread_getschedparam (pthread_t thread, + int *policy, + struct sched_param *param); + +PTW32_DLLPORT int PTW32_CDECL pthread_setconcurrency (int); + +PTW32_DLLPORT int PTW32_CDECL pthread_getconcurrency (void); + +/* + * Read-Write Lock Functions + */ +PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_init(pthread_rwlock_t *lock, + const pthread_rwlockattr_t *attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_destroy(pthread_rwlock_t *lock); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_tryrdlock(pthread_rwlock_t *); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_trywrlock(pthread_rwlock_t *); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_rdlock(pthread_rwlock_t *lock); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_timedrdlock(pthread_rwlock_t *lock, + const struct timespec *abstime); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_wrlock(pthread_rwlock_t *lock); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_timedwrlock(pthread_rwlock_t *lock, + const struct timespec *abstime); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_unlock(pthread_rwlock_t *lock); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_init (pthread_rwlockattr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_destroy (pthread_rwlockattr_t * attr); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * attr, + int *pshared); + +PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_setpshared (pthread_rwlockattr_t * attr, + int pshared); + +#if PTW32_LEVEL >= PTW32_LEVEL_MAX - 1 + +/* + * Signal Functions. Should be defined in but MSVC and MinGW32 + * already have signal.h that don't define these. + */ +PTW32_DLLPORT int PTW32_CDECL pthread_kill(pthread_t thread, int sig); + +/* + * Non-portable functions + */ + +/* + * Compatibility with Linux. + */ +PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_setkind_np(pthread_mutexattr_t * attr, + int kind); +PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_getkind_np(pthread_mutexattr_t * attr, + int *kind); + +/* + * Possibly supported by other POSIX threads implementations + */ +PTW32_DLLPORT int PTW32_CDECL pthread_delay_np (struct timespec * interval); +PTW32_DLLPORT int PTW32_CDECL pthread_num_processors_np(void); +PTW32_DLLPORT unsigned __int64 PTW32_CDECL pthread_getunique_np(pthread_t thread); + +/* + * Useful if an application wants to statically link + * the lib rather than load the DLL at run-time. + */ +PTW32_DLLPORT int PTW32_CDECL pthread_win32_process_attach_np(void); +PTW32_DLLPORT int PTW32_CDECL pthread_win32_process_detach_np(void); +PTW32_DLLPORT int PTW32_CDECL pthread_win32_thread_attach_np(void); +PTW32_DLLPORT int PTW32_CDECL pthread_win32_thread_detach_np(void); + +/* + * Features that are auto-detected at load/run time. + */ +PTW32_DLLPORT int PTW32_CDECL pthread_win32_test_features_np(int); +enum ptw32_features { + PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE = 0x0001, /* System provides it. */ + PTW32_ALERTABLE_ASYNC_CANCEL = 0x0002 /* Can cancel blocked threads. */ +}; + +/* + * Register a system time change with the library. + * Causes the library to perform various functions + * in response to the change. Should be called whenever + * the application's top level window receives a + * WM_TIMECHANGE message. It can be passed directly to + * pthread_create() as a new thread if desired. + */ +PTW32_DLLPORT void * PTW32_CDECL pthread_timechange_handler_np(void *); + +#endif /*PTW32_LEVEL >= PTW32_LEVEL_MAX - 1 */ + +#if PTW32_LEVEL >= PTW32_LEVEL_MAX + +/* + * Returns the Win32 HANDLE for the POSIX thread. + */ +PTW32_DLLPORT HANDLE PTW32_CDECL pthread_getw32threadhandle_np(pthread_t thread); +/* + * Returns the win32 thread ID for POSIX thread. + */ +PTW32_DLLPORT DWORD PTW32_CDECL pthread_getw32threadid_np (pthread_t thread); + + +/* + * Protected Methods + * + * This function blocks until the given WIN32 handle + * is signaled or pthread_cancel had been called. + * This function allows the caller to hook into the + * PThreads cancel mechanism. It is implemented using + * + * WaitForMultipleObjects + * + * on 'waitHandle' and a manually reset WIN32 Event + * used to implement pthread_cancel. The 'timeout' + * argument to TimedWait is simply passed to + * WaitForMultipleObjects. + */ +PTW32_DLLPORT int PTW32_CDECL pthreadCancelableWait (HANDLE waitHandle); +PTW32_DLLPORT int PTW32_CDECL pthreadCancelableTimedWait (HANDLE waitHandle, + DWORD timeout); + +#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ + +/* + * Thread-Safe C Runtime Library Mappings. + */ +#if !defined(_UWIN) +# if defined(NEED_ERRNO) + PTW32_DLLPORT int * PTW32_CDECL _errno( void ); +# else +# if !defined(errno) +# if (defined(_MT) || defined(_DLL)) + __declspec(dllimport) extern int * __cdecl _errno(void); +# define errno (*_errno()) +# endif +# endif +# endif +#endif + +/* + * Some compiler environments don't define some things. + */ +#if defined(__BORLANDC__) +# define _ftime ftime +# define _timeb timeb +#endif + +#if defined(__cplusplus) + +/* + * Internal exceptions + */ +class ptw32_exception {}; +class ptw32_exception_cancel : public ptw32_exception {}; +class ptw32_exception_exit : public ptw32_exception {}; + +#endif + +#if PTW32_LEVEL >= PTW32_LEVEL_MAX + +/* FIXME: This is only required if the library was built using SEH */ +/* + * Get internal SEH tag + */ +PTW32_DLLPORT DWORD PTW32_CDECL ptw32_get_exception_services_code(void); + +#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ + +#if !defined(PTW32_BUILD) + +#if defined(__CLEANUP_SEH) + +/* + * Redefine the SEH __except keyword to ensure that applications + * propagate our internal exceptions up to the library's internal handlers. + */ +#define __except( E ) \ + __except( ( GetExceptionCode() == ptw32_get_exception_services_code() ) \ + ? EXCEPTION_CONTINUE_SEARCH : ( E ) ) + +#endif /* __CLEANUP_SEH */ + +#if defined(__CLEANUP_CXX) + +/* + * Redefine the C++ catch keyword to ensure that applications + * propagate our internal exceptions up to the library's internal handlers. + */ +#if defined(_MSC_VER) + /* + * WARNING: Replace any 'catch( ... )' with 'PtW32CatchAll' + * if you want Pthread-Win32 cancelation and pthread_exit to work. + */ + +#if !defined(PtW32NoCatchWarn) + +#pragma message("Specify \"/DPtW32NoCatchWarn\" compiler flag to skip this message.") +#pragma message("------------------------------------------------------------------") +#pragma message("When compiling applications with MSVC++ and C++ exception handling:") +#pragma message(" Replace any 'catch( ... )' in routines called from POSIX threads") +#pragma message(" with 'PtW32CatchAll' or 'CATCHALL' if you want POSIX thread") +#pragma message(" cancelation and pthread_exit to work. For example:") +#pragma message("") +#pragma message(" #if defined(PtW32CatchAll)") +#pragma message(" PtW32CatchAll") +#pragma message(" #else") +#pragma message(" catch(...)") +#pragma message(" #endif") +#pragma message(" {") +#pragma message(" /* Catchall block processing */") +#pragma message(" }") +#pragma message("------------------------------------------------------------------") + +#endif + +#define PtW32CatchAll \ + catch( ptw32_exception & ) { throw; } \ + catch( ... ) + +#else /* _MSC_VER */ + +#define catch( E ) \ + catch( ptw32_exception & ) { throw; } \ + catch( E ) + +#endif /* _MSC_VER */ + +#endif /* __CLEANUP_CXX */ + +#endif /* ! PTW32_BUILD */ + +#if defined(__cplusplus) +} /* End of extern "C" */ +#endif /* __cplusplus */ + +#if defined(PTW32__HANDLE_DEF) +# undef HANDLE +#endif +#if defined(PTW32__DWORD_DEF) +# undef DWORD +#endif + +#undef PTW32_LEVEL +#undef PTW32_LEVEL_MAX + +#endif /* ! RC_INVOKED */ + +#endif /* PTHREAD_H */ diff --git a/osal/window/pthread/inc/sched.h b/osal/window/pthread/inc/sched.h new file mode 100644 index 00000000..e25eb56b --- /dev/null +++ b/osal/window/pthread/inc/sched.h @@ -0,0 +1,183 @@ +/* + * Module: sched.h + * + * Purpose: + * Provides an implementation of POSIX realtime extensions + * as defined in + * + * POSIX 1003.1b-1993 (POSIX.1b) + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2005 Pthreads-win32 contributors + * + * Contact Email: rpj@callisto.canberra.edu.au + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ +#if !defined(_SCHED_H) +#define _SCHED_H + +#undef PTW32_SCHED_LEVEL + +#if defined(_POSIX_SOURCE) +#define PTW32_SCHED_LEVEL 0 +/* Early POSIX */ +#endif + +#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309 +#undef PTW32_SCHED_LEVEL +#define PTW32_SCHED_LEVEL 1 +/* Include 1b, 1c and 1d */ +#endif + +#if defined(INCLUDE_NP) +#undef PTW32_SCHED_LEVEL +#define PTW32_SCHED_LEVEL 2 +/* Include Non-Portable extensions */ +#endif + +#define PTW32_SCHED_LEVEL_MAX 3 + +#if ( defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112 ) || !defined(PTW32_SCHED_LEVEL) +#define PTW32_SCHED_LEVEL PTW32_SCHED_LEVEL_MAX +/* Include everything */ +#endif + + +#if defined(__GNUC__) && !defined(__declspec) +# error Please upgrade your GNU compiler to one that supports __declspec. +#endif + +/* + * When building the library, you should define PTW32_BUILD so that + * the variables/functions are exported correctly. When using the library, + * do NOT define PTW32_BUILD, and then the variables/functions will + * be imported correctly. + */ +#if !defined(PTW32_STATIC_LIB) +# if defined(PTW32_BUILD) +# define PTW32_DLLPORT __declspec (dllexport) +# else +# define PTW32_DLLPORT __declspec (dllimport) +# endif +#else +# define PTW32_DLLPORT +#endif + +/* + * This is a duplicate of what is in the autoconf config.h, + * which is only used when building the pthread-win32 libraries. + */ + +#if !defined(PTW32_CONFIG_H) +# if defined(WINCE) +# define NEED_ERRNO +# define NEED_SEM +# endif +# if defined(__MINGW64__) +# define HAVE_STRUCT_TIMESPEC +# define HAVE_MODE_T +# elif defined(_UWIN) || defined(__MINGW32__) +# define HAVE_MODE_T +# endif +#endif + +/* + * + */ + +#if PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX +#if defined(NEED_ERRNO) +#include "need_errno.h" +#else +#include +#endif +#endif /* PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX */ + +#if (defined(__MINGW64__) || defined(__MINGW32__)) || defined(_UWIN) +# if PTW32_SCHED_LEVEL >= PTW32_SCHED_LEVEL_MAX +/* For pid_t */ +# include +/* Required by Unix 98 */ +# include +# else + typedef int pid_t; +# endif +#else + typedef int pid_t; +#endif + +/* Thread scheduling policies */ + +enum { + SCHED_OTHER = 0, + SCHED_FIFO, + SCHED_RR, + SCHED_MIN = SCHED_OTHER, + SCHED_MAX = SCHED_RR +}; + +struct sched_param { + int sched_priority; +}; + +#if defined(__cplusplus) +extern "C" +{ +#endif /* __cplusplus */ + +PTW32_DLLPORT int __cdecl sched_yield (void); + +PTW32_DLLPORT int __cdecl sched_get_priority_min (int policy); + +PTW32_DLLPORT int __cdecl sched_get_priority_max (int policy); + +PTW32_DLLPORT int __cdecl sched_setscheduler (pid_t pid, int policy); + +PTW32_DLLPORT int __cdecl sched_getscheduler (pid_t pid); + +/* + * Note that this macro returns ENOTSUP rather than + * ENOSYS as might be expected. However, returning ENOSYS + * should mean that sched_get_priority_{min,max} are + * not implemented as well as sched_rr_get_interval. + * This is not the case, since we just don't support + * round-robin scheduling. Therefore I have chosen to + * return the same value as sched_setscheduler when + * SCHED_RR is passed to it. + */ +#define sched_rr_get_interval(_pid, _interval) \ + ( errno = ENOTSUP, (int) -1 ) + + +#if defined(__cplusplus) +} /* End of extern "C" */ +#endif /* __cplusplus */ + +#undef PTW32_SCHED_LEVEL +#undef PTW32_SCHED_LEVEL_MAX + +#endif /* !_SCHED_H */ + diff --git a/osal/window/pthread/inc/semaphore.h b/osal/window/pthread/inc/semaphore.h new file mode 100644 index 00000000..f7a4286e --- /dev/null +++ b/osal/window/pthread/inc/semaphore.h @@ -0,0 +1,169 @@ +/* + * Module: semaphore.h + * + * Purpose: + * Semaphores aren't actually part of the PThreads standard. + * They are defined by the POSIX Standard: + * + * POSIX 1003.1b-1993 (POSIX.1b) + * + * -------------------------------------------------------------------------- + * + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2005 Pthreads-win32 contributors + * + * Contact Email: rpj@callisto.canberra.edu.au + * + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ +#if !defined( SEMAPHORE_H ) +#define SEMAPHORE_H + +#undef PTW32_SEMAPHORE_LEVEL + +#if defined(_POSIX_SOURCE) +#define PTW32_SEMAPHORE_LEVEL 0 +/* Early POSIX */ +#endif + +#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309 +#undef PTW32_SEMAPHORE_LEVEL +#define PTW32_SEMAPHORE_LEVEL 1 +/* Include 1b, 1c and 1d */ +#endif + +#if defined(INCLUDE_NP) +#undef PTW32_SEMAPHORE_LEVEL +#define PTW32_SEMAPHORE_LEVEL 2 +/* Include Non-Portable extensions */ +#endif + +#define PTW32_SEMAPHORE_LEVEL_MAX 3 + +#if !defined(PTW32_SEMAPHORE_LEVEL) +#define PTW32_SEMAPHORE_LEVEL PTW32_SEMAPHORE_LEVEL_MAX +/* Include everything */ +#endif + +#if defined(__GNUC__) && ! defined (__declspec) +# error Please upgrade your GNU compiler to one that supports __declspec. +#endif + +/* + * When building the library, you should define PTW32_BUILD so that + * the variables/functions are exported correctly. When using the library, + * do NOT define PTW32_BUILD, and then the variables/functions will + * be imported correctly. + */ +#if !defined(PTW32_STATIC_LIB) +# if defined(PTW32_BUILD) +# define PTW32_DLLPORT __declspec (dllexport) +# else +# define PTW32_DLLPORT __declspec (dllimport) +# endif +#else +# define PTW32_DLLPORT +#endif + +/* + * This is a duplicate of what is in the autoconf config.h, + * which is only used when building the pthread-win32 libraries. + */ + +#if !defined(PTW32_CONFIG_H) +# if defined(WINCE) +# define NEED_ERRNO +# define NEED_SEM +# endif +# if defined(__MINGW64__) +# define HAVE_STRUCT_TIMESPEC +# define HAVE_MODE_T +# elif defined(_UWIN) || defined(__MINGW32__) +# define HAVE_MODE_T +# endif +#endif + +/* + * + */ + +#if PTW32_SEMAPHORE_LEVEL >= PTW32_SEMAPHORE_LEVEL_MAX +#if defined(NEED_ERRNO) +#include "need_errno.h" +#else +#include +#endif +#endif /* PTW32_SEMAPHORE_LEVEL >= PTW32_SEMAPHORE_LEVEL_MAX */ + +#define _POSIX_SEMAPHORES + +#if defined(__cplusplus) +extern "C" +{ +#endif /* __cplusplus */ + +#if !defined(HAVE_MODE_T) +typedef unsigned int mode_t; +#endif + + +typedef struct sem_t_ * sem_t; + +PTW32_DLLPORT int __cdecl sem_init (sem_t * sem, + int pshared, + unsigned int value); + +PTW32_DLLPORT int __cdecl sem_destroy (sem_t * sem); + +PTW32_DLLPORT int __cdecl sem_trywait (sem_t * sem); + +PTW32_DLLPORT int __cdecl sem_wait (sem_t * sem); + +PTW32_DLLPORT int __cdecl sem_timedwait (sem_t * sem, + const struct timespec * abstime); + +PTW32_DLLPORT int __cdecl sem_post (sem_t * sem); + +PTW32_DLLPORT int __cdecl sem_post_multiple (sem_t * sem, + int count); + +PTW32_DLLPORT int __cdecl sem_open (const char * name, + int oflag, + mode_t mode, + unsigned int value); + +PTW32_DLLPORT int __cdecl sem_close (sem_t * sem); + +PTW32_DLLPORT int __cdecl sem_unlink (const char * name); + +PTW32_DLLPORT int __cdecl sem_getvalue (sem_t * sem, + int * sval); + +#if defined(__cplusplus) +} /* End of extern "C" */ +#endif /* __cplusplus */ + +#undef PTW32_SEMAPHORE_LEVEL +#undef PTW32_SEMAPHORE_LEVEL_MAX + +#endif /* !SEMAPHORE_H */ diff --git a/osal/window/pthread/lib/x64/pthreadVC2.lib b/osal/window/pthread/lib/x64/pthreadVC2.lib new file mode 100644 index 0000000000000000000000000000000000000000..1b07e0e9aa43b91f04d2884e2f594bbeca4fdac1 GIT binary patch literal 29738 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 literal 0 HcmV?d00001 diff --git a/osal/window/pthread/lib/x86/pthreadVC2.lib b/osal/window/pthread/lib/x86/pthreadVC2.lib new file mode 100644 index 0000000000000000000000000000000000000000..c20ee200db381086a324bd98acc2918b20b6a4c2 GIT binary patch literal 30334 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 literal 0 HcmV?d00001 diff --git a/osal/window/pthread/lib/x86/pthreadVSE2.lib b/osal/window/pthread/lib/x86/pthreadVSE2.lib new file mode 100644 index 0000000000000000000000000000000000000000..3f3335d46981ea9ed40ad3e648a05c210ee77014 GIT binary patch literal 30460 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 literal 0 HcmV?d00001 diff --git a/osal/window/stdint.h b/osal/window/stdint.h new file mode 100644 index 00000000..6e72e7f7 --- /dev/null +++ b/osal/window/stdint.h @@ -0,0 +1,13 @@ +#pragma once + +/* a minimal set of C99 types for use with MSVC */ + +typedef signed char int8_t; +typedef short int int16_t; +typedef int int32_t; +typedef __int64 int64_t; + +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; +typedef unsigned int uint32_t; +typedef unsigned __int64 uint64_t;