On Time RTOS-32 Documentation
Welcome
RTTarget-32
RTKernel-32
RTKernel-32 Programming Manual
Introduction
Multitasking, Real-Time, and RTKernel-32
Module RTKernel-32
Alternate APIs for RTKernel-32
RTKernel-C 4.5 for DOS Compatible API
Win32 Thread Compatible API
Win32 Priorities
Win32 Handles
Win32 and RTKernel-32 Error Handling
Mixing RTKernel-32 and Win32 APIs
Function GetCurrentThreadId
Function CreateThread
Function ExitThread
Function TerminateThread
Function GetExitCodeThread
Function GetCurrentThread
Function Sleep
Function GetTickCount
Function GetTickCount64
Function SuspendThread
Function ResumeThread
Function SetThreadPriority
Function GetThreadPriority
Function InitializeCriticalSection
Function InitializeCriticalSectionAndSpinCount
Function EnterCriticalSection
Function TryEnterCriticalSection
Function LeaveCriticalSection
Function DeleteCriticalSection
Function CreateEvent
Function CreateMutex
Function CreateSemaphore
Function OpenEvent
Function OpenMutex
Function OpenSemaphore
Function SetEvent
Function ResetEvent
Function PulseEvent
Function ReleaseMutex
Function ReleaseSemaphore
Function WaitForSingleObject
Function WaitForMultipleObjects
Function QueryPerformanceCounter
Function QueryPerformanceFrequency
Function GetThreadId
Function SleepEx
Function QueueUserAPC
Function QueueUserWorkItem
Function GetSystemTimeAdjustment
Function SwitchToThread
Function CreateWaitableTimer
Function SetWaitableTimer
Function OpenWaitableTimer
Function CancelWaitableTimer
Function SetThreadAffinityMask
Function SetThreadGroupAffinity
Supplemental Modules
RTKernel-32 Drivers
Demo Programs
Advanced Topics
Typical Error Sources
Error and Information Messages
RTKernel-32 Reference Manual
RTFiles-32
RTIP-32
RTPEG-32
RTUSB-32
|
Win32 and RTKernel-32 Error Handling
RTKernel-32's Win32 emulation is implemented by a set of Win32-compatible functions which reformat the given parameters and then call equivalent RTKernel-32 functions. One area difficult to translate is the different error-handling philosophy of the two systems. When a Win32 function fails, a return value indicating error is returned and the application must check for any errors by calls to GetLastError after each single Win32 call. This method can severely increase code size and reduce readability. RTKernel-32, on the other hand, will not pass fatal errors to the application, but rather abort the application. This method is adequate since program bugs cannot be corrected dynamically at run time anyway. Rather, it is desirable to get a clear error message with all relevant information (address of call, names of tasks, semaphores, or mailboxes involved, etc.). Software debugging is significantly simplified in this way.
RTKernel-32's Win32 emulation makes every effort to check all parameters at run-time to emulate Win32's error handling. SetLastError is called whenever possible. However, there may be cases where not all application bugs are caught (e.g., when the application has corrupted RTKernel-32's internal data structures). In these rare instances, an RTKernel-32 error message could be issued when Win32 would indicate the error with a return code instead.
Win32 Thread Compatible API
Win32 Handles
Mixing RTKernel-32 and Win32 APIs
|