Release 6.1.10
This commit is contained in:
765
ports/cortex_a8/ghs/inc/tx_el.h
Normal file
765
ports/cortex_a8/ghs/inc/tx_el.h
Normal file
@@ -0,0 +1,765 @@
|
||||
/**************************************************************************/
|
||||
/* */
|
||||
/* Copyright (c) Microsoft Corporation. All rights reserved. */
|
||||
/* */
|
||||
/* This software is licensed under the Microsoft Software License */
|
||||
/* Terms for Microsoft Azure RTOS. Full text of the license can be */
|
||||
/* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
|
||||
/* and in the root directory of this software. */
|
||||
/* */
|
||||
/**************************************************************************/
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
/**************************************************************************/
|
||||
/** */
|
||||
/** ThreadX Component */
|
||||
/** */
|
||||
/** ThreadX/GHS Event Log (EL) */
|
||||
/** */
|
||||
/**************************************************************************/
|
||||
/**************************************************************************/
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
/* */
|
||||
/* COMPONENT DEFINITION RELEASE */
|
||||
/* */
|
||||
/* tx_el.h PORTABLE C/GHS */
|
||||
/* 6.1 */
|
||||
/* AUTHOR */
|
||||
/* */
|
||||
/* William E. Lamie, Microsoft Corporation */
|
||||
/* */
|
||||
/* DESCRIPTION */
|
||||
/* */
|
||||
/* This file defines the ThreadX event log functions for the GHS MULTI */
|
||||
/* EventAnalyzer. It is assumed that tx_api.h and tx_port.h have */
|
||||
/* already been included. */
|
||||
/* */
|
||||
/* RELEASE HISTORY */
|
||||
/* */
|
||||
/* DATE NAME DESCRIPTION */
|
||||
/* */
|
||||
/* 09-30-2020 William E. Lamie Initial Version 6.1 */
|
||||
/* */
|
||||
/**************************************************************************/
|
||||
|
||||
#ifndef TX_EL_H
|
||||
#define TX_EL_H
|
||||
|
||||
|
||||
/* Define Event Log specific data definitions. */
|
||||
|
||||
#define TX_EL_VERSION_ID 2 /* Event log version ID */
|
||||
#define TX_EL_HEADER_SIZE 24 /* Event log header size */
|
||||
#define TX_EL_TNIS 16 /* Number of thread names supported */
|
||||
/* If the application needs to */
|
||||
/* track more thread names, just */
|
||||
/* increase this number and re- */
|
||||
/* build the ThreadX library. */
|
||||
#define TX_EL_TNI_ENTRY_SIZE 44 /* Thread name entries are 44 bytes */
|
||||
#define TX_EL_TNI_NAME_SIZE 34 /* Thread name size in TNI */
|
||||
#define TX_EL_NO_MORE_TNI_ROOM 1 /* Error return from thread register*/
|
||||
#define TX_EL_NAME_NOT_FOUND 2 /* Error return from un-register */
|
||||
#define TX_EL_EVENT_SIZE 32 /* Number of bytes in each event */
|
||||
#define TX_EL_VALID_ENTRY 1 /* Valid log entry */
|
||||
#define TX_EL_INVALID_ENTRY 0 /* Invalid log entry */
|
||||
|
||||
|
||||
/* Define necessary offsets. */
|
||||
|
||||
#define TX_EL_TNI_VALID_OFFSET 34
|
||||
#define TX_EL_TNI_THREAD_ID_OFFSET 36
|
||||
#define TX_EL_TNI_THREAD_PRIORITY_OFF 40
|
||||
#define TX_EL_EVENT_TYPE_OFFSET 0
|
||||
#define TX_EL_EVENT_SUBTYPE_OFFSET 2
|
||||
#define TX_EL_EVENT_TIME_UPPER_OFFSET 4
|
||||
#define TX_EL_EVENT_TIME_LOWER_OFFSET 8
|
||||
#define TX_EL_EVENT_THREAD_OFFSET 12
|
||||
#define TX_EL_EVENT_INFO_1_OFFSET 16
|
||||
#define TX_EL_EVENT_INFO_2_OFFSET 20
|
||||
#define TX_EL_EVENT_INFO_3_OFFSET 24
|
||||
#define TX_EL_EVENT_INFO_4_OFFSET 28
|
||||
|
||||
|
||||
/* Undefine constants that might be been defined previously by tx_api.h. */
|
||||
|
||||
#undef TX_EL_INITIALIZE
|
||||
#undef TX_EL_THREAD_REGISTER
|
||||
#undef TX_EL_THREAD_UNREGISTER
|
||||
#undef TX_EL_THREAD_STATUS_CHANGE_INSERT
|
||||
#undef TX_EL_BYTE_ALLOCATE_INSERT
|
||||
#undef TX_EL_BYTE_POOL_CREATE_INSERT
|
||||
#undef TX_EL_BYTE_POOL_DELETE_INSERT
|
||||
#undef TX_EL_BYTE_RELEASE_INSERT
|
||||
#undef TX_EL_BLOCK_ALLOCATE_INSERT
|
||||
#undef TX_EL_BLOCK_POOL_CREATE_INSERT
|
||||
#undef TX_EL_BLOCK_POOL_DELETE_INSERT
|
||||
#undef TX_EL_BLOCK_RELEASE_INSERT
|
||||
#undef TX_EL_EVENT_FLAGS_CREATE_INSERT
|
||||
#undef TX_EL_EVENT_FLAGS_DELETE_INSERT
|
||||
#undef TX_EL_EVENT_FLAGS_GET_INSERT
|
||||
#undef TX_EL_EVENT_FLAGS_SET_INSERT
|
||||
#undef TX_EL_INTERRUPT_CONTROL_INSERT
|
||||
#undef TX_EL_QUEUE_CREATE_INSERT
|
||||
#undef TX_EL_QUEUE_DELETE_INSERT
|
||||
#undef TX_EL_QUEUE_FLUSH_INSERT
|
||||
#undef TX_EL_QUEUE_RECEIVE_INSERT
|
||||
#undef TX_EL_QUEUE_SEND_INSERT
|
||||
#undef TX_EL_SEMAPHORE_CREATE_INSERT
|
||||
#undef TX_EL_SEMAPHORE_DELETE_INSERT
|
||||
#undef TX_EL_SEMAPHORE_GET_INSERT
|
||||
#undef TX_EL_SEMAPHORE_PUT_INSERT
|
||||
#undef TX_EL_THREAD_CREATE_INSERT
|
||||
#undef TX_EL_THREAD_DELETE_INSERT
|
||||
#undef TX_EL_THREAD_IDENTIFY_INSERT
|
||||
#undef TX_EL_THREAD_PREEMPTION_CHANGE_INSERT
|
||||
#undef TX_EL_THREAD_PRIORITY_CHANGE_INSERT
|
||||
#undef TX_EL_THREAD_RELINQUISH_INSERT
|
||||
#undef TX_EL_THREAD_RESUME_INSERT
|
||||
#undef TX_EL_THREAD_SLEEP_INSERT
|
||||
#undef TX_EL_THREAD_SUSPEND_INSERT
|
||||
#undef TX_EL_THREAD_TERMINATE_INSERT
|
||||
#undef TX_EL_THREAD_TIME_SLICE_CHANGE_INSERT
|
||||
#undef TX_EL_TIME_GET_INSERT
|
||||
#undef TX_EL_TIME_SET_INSERT
|
||||
#undef TX_EL_TIMER_ACTIVATE_INSERT
|
||||
#undef TX_EL_TIMER_CHANGE_INSERT
|
||||
#undef TX_EL_TIMER_CREATE_INSERT
|
||||
#undef TX_EL_TIMER_DEACTIVATE_INSERT
|
||||
#undef TX_EL_TIMER_DELETE_INSERT
|
||||
#undef TX_EL_BLOCK_POOL_INFO_GET_INSERT
|
||||
#undef TX_EL_BLOCK_POOL_PRIORITIZE_INSERT
|
||||
#undef TX_EL_BYTE_POOL_INFO_GET_INSERT
|
||||
#undef TX_EL_BYTE_POOL_PRIORITIZE_INSERT
|
||||
#undef TX_EL_EVENT_FLAGS_INFO_GET_INSERT
|
||||
#undef TX_EL_MUTEX_CREATE_INSERT
|
||||
#undef TX_EL_MUTEX_DELETE_INSERT
|
||||
#undef TX_EL_MUTEX_GET_INSERT
|
||||
#undef TX_EL_MUTEX_INFO_GET_INSERT
|
||||
#undef TX_EL_MUTEX_PRIORITIZE_INSERT
|
||||
#undef TX_EL_MUTEX_PUT_INSERT
|
||||
#undef TX_EL_QUEUE_INFO_GET_INSERT
|
||||
#undef TX_EL_QUEUE_FRONT_SEND_INSERT
|
||||
#undef TX_EL_QUEUE_PRIORITIZE_INSERT
|
||||
#undef TX_EL_SEMAPHORE_INFO_GET_INSERT
|
||||
#undef TX_EL_SEMAPHORE_PRIORITIZE_INSERT
|
||||
#undef TX_EL_THREAD_INFO_GET_INSERT
|
||||
#undef TX_EL_THREAD_WAIT_ABORT_INSERT
|
||||
#undef TX_EL_TIMER_INFO_GET_INSERT
|
||||
#undef TX_EL_BLOCK_POOL_PERFORMANCE_INFO_GET_INSERT
|
||||
#undef TX_EL_BLOCK_POOL_PERFORMANCE_SYSTEM_INFO_GET_INSERT
|
||||
#undef TX_EL_BYTE_POOL_PERFORMANCE_INFO_GET_INSERT
|
||||
#undef TX_EL_BYTE_POOL_PERFORMANCE_SYSTEM_INFO_GET_INSERT
|
||||
#undef TX_EL_EVENT_FLAGS_PERFORMANCE_INFO_GET_INSERT
|
||||
#undef TX_EL_EVENT_FLAGS_PERFORMANCE_SYSTEM_INFO_GET_INSERT
|
||||
#undef TX_EL_EVENT_FLAGS_SET_NOTIFY_INSERT
|
||||
#undef TX_EL_MUTEX_PERFORMANCE_INFO_GET_INSERT
|
||||
#undef TX_EL_MUTEX_PERFORMANCE_SYSTEM_INFO_GET_INSERT
|
||||
#undef TX_EL_QUEUE_PERFORMANCE_INFO_GET_INSERT
|
||||
#undef TX_EL_QUEUE_PERFORMANCE_SYSTEM_INFO_GET_INSERT
|
||||
#undef TX_EL_QUEUE_SEND_NOTIFY_INSERT
|
||||
#undef TX_EL_SEMAPHORE_CEILING_PUT_INSERT
|
||||
#undef TX_EL_SEMAPHORE_PERFORMANCE_INFO_GET_INSERT
|
||||
#undef TX_EL_SEMAPHORE_PERFORMANCE_SYSTEM_INFO_GET_INSERT
|
||||
#undef TX_EL_SEMAPHORE_PUT_NOTIFY_INSERT
|
||||
#undef TX_EL_THREAD_ENTRY_EXIT_NOTIFY_INSERT
|
||||
#undef TX_EL_THREAD_RESET_INSERT
|
||||
#undef TX_EL_THREAD_PERFORMANCE_INFO_GET_INSERT
|
||||
#undef TX_EL_THREAD_PERFORMANCE_SYSTEM_INFO_GET_INSERT
|
||||
#undef TX_EL_THREAD_STACK_ERROR_NOTIFY_INSERT
|
||||
#undef TX_EL_TIMER_PERFORMANCE_INFO_GET_INSERT
|
||||
#undef TX_EL_TIMER_PERFORMANCE_SYSTEM_INFO_GET_INSERT
|
||||
|
||||
|
||||
/* Define Event Types. */
|
||||
|
||||
#define TX_EL_THREAD_CHANGE 1
|
||||
#define TX_EL_INTERRUPT 2
|
||||
#define TX_EL_THREADX_CALL 3
|
||||
#define TX_EL_USER_EVENT 4
|
||||
#define TX_EL_THREAD_STATUS_CHANGE 5
|
||||
#define TX_EL_REFRESH 6 /* Not implemented */
|
||||
#define TX_EL_TIMER 7 /* Not implemented */
|
||||
#define TX_EL_TIMESOURCE_DELTA 8 /* Not implemented */
|
||||
|
||||
|
||||
/* Define TX_EL_THREADX_CALL event sub-types. */
|
||||
|
||||
#define TX_EL_BYTE_ALLOCATE 0
|
||||
#define TX_EL_BYTE_POOL_CREATE 1
|
||||
#define TX_EL_BYTE_POOL_DELETE 2
|
||||
#define TX_EL_BYTE_RELEASE 3
|
||||
#define TX_EL_BLOCK_ALLOCATE 4
|
||||
#define TX_EL_BLOCK_POOL_CREATE 5
|
||||
#define TX_EL_BLOCK_POOL_DELETE 6
|
||||
#define TX_EL_BLOCK_RELEASE 7
|
||||
#define TX_EL_EVENT_FLAGS_CREATE 8
|
||||
#define TX_EL_EVENT_FLAGS_DELETE 9
|
||||
#define TX_EL_EVENT_FLAGS_GET 10
|
||||
#define TX_EL_EVENT_FLAGS_SET 11
|
||||
#define TX_EL_INTERRUPT_CONTROL 12
|
||||
#define TX_EL_QUEUE_CREATE 13
|
||||
#define TX_EL_QUEUE_DELETE 14
|
||||
#define TX_EL_QUEUE_FLUSH 15
|
||||
#define TX_EL_QUEUE_RECEIVE 16
|
||||
#define TX_EL_QUEUE_SEND 17
|
||||
#define TX_EL_SEMAPHORE_CREATE 18
|
||||
#define TX_EL_SEMAPHORE_DELETE 19
|
||||
#define TX_EL_SEMAPHORE_GET 20
|
||||
#define TX_EL_SEMAPHORE_PUT 21
|
||||
#define TX_EL_THREAD_CREATE 22
|
||||
#define TX_EL_THREAD_DELETE 23
|
||||
#define TX_EL_THREAD_IDENTIFY 24
|
||||
#define TX_EL_THREAD_PREEMPTION_CHANGE 25
|
||||
#define TX_EL_THREAD_PRIORITY_CHANGE 26
|
||||
#define TX_EL_THREAD_RELINQUISH 27
|
||||
#define TX_EL_THREAD_RESUME 28
|
||||
#define TX_EL_THREAD_SLEEP 29
|
||||
#define TX_EL_THREAD_SUSPEND 30
|
||||
#define TX_EL_THREAD_TERMINATE 31
|
||||
#define TX_EL_THREAD_TIME_SLICE_CHANGE 32
|
||||
#define TX_EL_TIME_GET 33
|
||||
#define TX_EL_TIME_SET 34
|
||||
#define TX_EL_TIMER_ACTIVATE 35
|
||||
#define TX_EL_TIMER_CHANGE 36
|
||||
#define TX_EL_TIMER_CREATE 37
|
||||
#define TX_EL_TIMER_DEACTIVATE 38
|
||||
#define TX_EL_TIMER_DELETE 39
|
||||
#define TX_EL_BLOCK_POOL_INFO_GET 40
|
||||
#define TX_EL_BLOCK_POOL_PRIORITIZE 41
|
||||
#define TX_EL_BYTE_POOL_INFO_GET 42
|
||||
#define TX_EL_BYTE_POOL_PRIORITIZE 43
|
||||
#define TX_EL_EVENT_FLAGS_INFO_GET 44
|
||||
#define TX_EL_MUTEX_CREATE 45
|
||||
#define TX_EL_MUTEX_DELETE 46
|
||||
#define TX_EL_MUTEX_GET 47
|
||||
#define TX_EL_MUTEX_INFO_GET 48
|
||||
#define TX_EL_MUTEX_PRIORITIZE 49
|
||||
#define TX_EL_MUTEX_PUT 50
|
||||
#define TX_EL_QUEUE_INFO_GET 51
|
||||
#define TX_EL_QUEUE_FRONT_SEND 52
|
||||
#define TX_EL_QUEUE_PRIORITIZE 53
|
||||
#define TX_EL_SEMAPHORE_INFO_GET 54
|
||||
#define TX_EL_SEMAPHORE_PRIORITIZE 55
|
||||
#define TX_EL_THREAD_INFO_GET 56
|
||||
#define TX_EL_THREAD_WAIT_ABORT 57
|
||||
#define TX_EL_TIMER_INFO_GET 58
|
||||
#define TX_EL_BLOCK_POOL_PERFORMANCE_INFO_GET 59
|
||||
#define TX_EL_BLOCK_POOL_PERFORMANCE_SYSTEM_INFO_GET 60
|
||||
#define TX_EL_BYTE_POOL_PERFORMANCE_INFO_GET 61
|
||||
#define TX_EL_BYTE_POOL_PERFORMANCE_SYSTEM_INFO_GET 62
|
||||
#define TX_EL_EVENT_FLAGS_PERFORMANCE_INFO_GET 63
|
||||
#define TX_EL_EVENT_FLAGS_PERFORMANCE_SYSTEM_INFO_GET 64
|
||||
#define TX_EL_EVENT_FLAGS_SET_NOTIFY 65
|
||||
#define TX_EL_MUTEX_PERFORMANCE_INFO_GET 66
|
||||
#define TX_EL_MUTEX_PERFORMANCE_SYSTEM_INFO_GET 67
|
||||
#define TX_EL_QUEUE_PERFORMANCE_INFO_GET 68
|
||||
#define TX_EL_QUEUE_PERFORMANCE_SYSTEM_INFO_GET 69
|
||||
#define TX_EL_QUEUE_SEND_NOTIFY 70
|
||||
#define TX_EL_SEMAPHORE_CEILING_PUT 71
|
||||
#define TX_EL_SEMAPHORE_PERFORMANCE_INFO_GET 72
|
||||
#define TX_EL_SEMAPHORE_PERFORMANCE_SYSTEM_INFO_GET 73
|
||||
#define TX_EL_SEMAPHORE_PUT_NOTIFY 74
|
||||
#define TX_EL_THREAD_ENTRY_EXIT_NOTIFY 75
|
||||
#define TX_EL_THREAD_RESET 76
|
||||
#define TX_EL_THREAD_PERFORMANCE_INFO_GET 77
|
||||
#define TX_EL_THREAD_PERFORMANCE_SYSTEM_INFO_GET 78
|
||||
#define TX_EL_THREAD_STACK_ERROR_NOTIFY 79
|
||||
#define TX_EL_TIMER_PERFORMANCE_INFO_GET 80
|
||||
#define TX_EL_TIMER_PERFORMANCE_SYSTEM_INFO_GET 81
|
||||
|
||||
|
||||
/* Define ThreadX sub-types. */
|
||||
|
||||
#define TX_EL_INTERRUPT_SUB_TYPE 1
|
||||
#define TX_EL_END_OF_INTERRUPT 3
|
||||
|
||||
|
||||
/* Define event logging filters, which may be used by the application program to
|
||||
dynamically enable/disable events in run-time. */
|
||||
|
||||
#define TX_EL_FILTER_STATUS_CHANGE 0x0001
|
||||
#define TX_EL_FILTER_INTERRUPTS 0x0002
|
||||
#define TX_EL_FILTER_THREAD_CALLS 0x0004
|
||||
#define TX_EL_FILTER_TIMER_CALLS 0x0008
|
||||
#define TX_EL_FILTER_EVENT_FLAG_CALLS 0x0010
|
||||
#define TX_EL_FILTER_SEMAPHORE_CALLS 0x0020
|
||||
#define TX_EL_FILTER_QUEUE_CALLS 0x0040
|
||||
#define TX_EL_FILTER_BLOCK_CALLS 0x0080
|
||||
#define TX_EL_FILTER_BYTE_CALLS 0x0100
|
||||
#define TX_EL_FILTER_MUTEX_CALLS 0x0200
|
||||
#define TX_EL_FILTER_ALL_EVENTS 0xFFFF
|
||||
#define TX_EL_ENABLE_ALL_EVENTS 0x0000
|
||||
|
||||
|
||||
/* Define filter macros that are inserted in-line with the other macros below. */
|
||||
|
||||
#ifdef TX_ENABLE_EVENT_FILTERS
|
||||
#define TX_EL_NO_STATUS_EVENTS if (!(_tx_el_event_filter & TX_EL_FILTER_STATUS_CHANGE)) {
|
||||
#define TX_EL_NO_INTERRUPT_EVENTS if (!(_tx_el_event_filter & TX_EL_FILTER_INTERRUPTS)) {
|
||||
#define TX_EL_NO_THREAD_EVENTS if (!(_tx_el_event_filter & TX_EL_FILTER_THREAD_CALLS)) {
|
||||
#define TX_EL_NO_TIMER_EVENTS if (!(_tx_el_event_filter & TX_EL_FILTER_TIMER_CALLS)) {
|
||||
#define TX_EL_NO_EVENT_FLAG_EVENTS if (!(_tx_el_event_filter & TX_EL_FILTER_EVENT_FLAG_CALLS)) {
|
||||
#define TX_EL_NO_SEMAPHORE_EVENTS if (!(_tx_el_event_filter & TX_EL_FILTER_SEMAPHORE_CALLS)) {
|
||||
#define TX_EL_NO_QUEUE_EVENTS if (!(_tx_el_event_filter & TX_EL_FILTER_QUEUE_CALLS)) {
|
||||
#define TX_EL_NO_BLOCK_EVENTS if (!(_tx_el_event_filter & TX_EL_FILTER_BLOCK_CALLS)) {
|
||||
#define TX_EL_NO_BYTE_EVENTS if (!(_tx_el_event_filter & TX_EL_FILTER_BYTE_CALLS)) {
|
||||
#define TX_EL_NO_MUTEX_EVENTS if (!(_tx_el_event_filter & TX_EL_FILTER_MUTEX_CALLS)) {
|
||||
#define TX_EL_END_FILTER }
|
||||
#else
|
||||
#define TX_EL_NO_STATUS_EVENTS
|
||||
#define TX_EL_NO_INTERRUPT_EVENTS
|
||||
#define TX_EL_NO_THREAD_EVENTS
|
||||
#define TX_EL_NO_TIMER_EVENTS
|
||||
#define TX_EL_NO_EVENT_FLAG_EVENTS
|
||||
#define TX_EL_NO_SEMAPHORE_EVENTS
|
||||
#define TX_EL_NO_QUEUE_EVENTS
|
||||
#define TX_EL_NO_BLOCK_EVENTS
|
||||
#define TX_EL_NO_BYTE_EVENTS
|
||||
#define TX_EL_NO_MUTEX_EVENTS
|
||||
#define TX_EL_END_FILTER
|
||||
#endif
|
||||
|
||||
/* Define externs and constants for non-event log source modules. This is for
|
||||
the in-line macros below. */
|
||||
|
||||
#ifndef TX_EL_SOURCE_CODE
|
||||
extern UCHAR *_tx_el_tni_start;
|
||||
extern UCHAR **_tx_el_current_event;
|
||||
extern UCHAR *_tx_el_event_area_start;
|
||||
extern UCHAR *_tx_el_event_area_end;
|
||||
extern UINT _tx_el_maximum_events;
|
||||
extern ULONG _tx_el_total_events;
|
||||
extern TX_THREAD *_tx_thread_current_ptr;
|
||||
extern UINT _tx_el_event_filter;
|
||||
extern ULONG _tx_el_time_base_upper;
|
||||
extern ULONG _tx_el_time_base_lower;
|
||||
|
||||
|
||||
/* Define macros for event logging functions. */
|
||||
|
||||
#define TX_EL_THREAD_CREATE_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO4(TX_EL_THREAD_CREATE, thread_ptr, stack_start, stack_size, priority); TX_EL_END_FILTER
|
||||
#define TX_EL_EVENT_FLAGS_SET_INSERT TX_EL_NO_EVENT_FLAG_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(TX_EL_EVENT_FLAGS_SET, group_ptr, flags_to_set, set_option); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_DELETE_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_THREAD_DELETE, thread_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_INFO_GET_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_THREAD_INFO_GET, thread_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_TIME_SLICE_CHANGE_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(TX_EL_THREAD_TIME_SLICE_CHANGE, thread_ptr, thread_ptr -> tx_thread_new_time_slice, new_time_slice); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_TERMINATE_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_THREAD_TERMINATE, thread_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_SLEEP_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_THREAD_SLEEP, timer_ticks); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_SUSPEND_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_THREAD_SUSPEND, thread_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_RELINQUISH_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(TX_EL_THREAD_RELINQUISH); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_RESUME_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_THREAD_RESUME, thread_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_PRIORITY_CHANGE_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(TX_EL_THREAD_PRIORITY_CHANGE, thread_ptr, thread_ptr -> tx_thread_priority, new_priority); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_PREEMPTION_CHANGE_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(TX_EL_THREAD_PREEMPTION_CHANGE, thread_ptr, thread_ptr -> tx_thread_preempt_threshold, new_threshold); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_WAIT_ABORT_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_THREAD_WAIT_ABORT, thread_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_ENTRY_EXIT_NOTIFY_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_THREAD_ENTRY_EXIT_NOTIFY, thread_ptr, thread_entry_exit_notify); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_RESET_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_THREAD_RESET, thread_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_PERFORMANCE_INFO_GET_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_THREAD_PERFORMANCE_INFO_GET, thread_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_PERFORMANCE_SYSTEM_INFO_GET_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(TX_EL_THREAD_PERFORMANCE_SYSTEM_INFO_GET); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_STACK_ERROR_NOTIFY_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_THREAD_STACK_ERROR_NOTIFY, stack_error_handler); TX_EL_END_FILTER
|
||||
#define TX_EL_TIME_SET_INSERT TX_EL_NO_TIMER_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_TIME_SET, new_time); TX_EL_END_FILTER
|
||||
#define TX_EL_TIME_GET_INSERT TX_EL_NO_TIMER_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_TIME_GET, _tx_timer_system_clock); TX_EL_END_FILTER
|
||||
#define TX_EL_TIMER_DELETE_INSERT TX_EL_NO_TIMER_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_TIMER_DELETE, timer_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_TIMER_CREATE_INSERT TX_EL_NO_TIMER_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO4(TX_EL_TIMER_CREATE, timer_ptr, initial_ticks, reschedule_ticks, auto_activate); TX_EL_END_FILTER
|
||||
#define TX_EL_TIMER_CHANGE_INSERT TX_EL_NO_TIMER_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(TX_EL_TIMER_CHANGE, timer_ptr, initial_ticks, reschedule_ticks); TX_EL_END_FILTER
|
||||
#define TX_EL_THREAD_IDENTIFY_INSERT TX_EL_NO_THREAD_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(TX_EL_THREAD_IDENTIFY); TX_EL_END_FILTER
|
||||
#define TX_EL_TIMER_DEACTIVATE_INSERT TX_EL_NO_TIMER_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_TIMER_DEACTIVATE, timer_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_TIMER_ACTIVATE_INSERT TX_EL_NO_TIMER_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_TIMER_ACTIVATE, timer_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_TIMER_INFO_GET_INSERT TX_EL_NO_TIMER_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_TIMER_INFO_GET, timer_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_TIMER_PERFORMANCE_INFO_GET_INSERT TX_EL_NO_TIMER_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_TIMER_PERFORMANCE_INFO_GET, timer_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_TIMER_PERFORMANCE_SYSTEM_INFO_GET_INSERT TX_EL_NO_TIMER_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(TX_EL_TIMER_PERFORMANCE_SYSTEM_INFO_GET); TX_EL_END_FILTER
|
||||
#define TX_EL_SEMAPHORE_PUT_INSERT TX_EL_NO_SEMAPHORE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_SEMAPHORE_PUT, semaphore_ptr, semaphore_ptr -> tx_semaphore_count); TX_EL_END_FILTER
|
||||
#define TX_EL_SEMAPHORE_GET_INSERT TX_EL_NO_SEMAPHORE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_SEMAPHORE_GET, semaphore_ptr, semaphore_ptr -> tx_semaphore_count); TX_EL_END_FILTER
|
||||
#define TX_EL_SEMAPHORE_DELETE_INSERT TX_EL_NO_SEMAPHORE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_SEMAPHORE_DELETE, semaphore_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_SEMAPHORE_CREATE_INSERT TX_EL_NO_SEMAPHORE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_SEMAPHORE_CREATE, semaphore_ptr, initial_count); TX_EL_END_FILTER
|
||||
#define TX_EL_SEMAPHORE_INFO_GET_INSERT TX_EL_NO_SEMAPHORE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_SEMAPHORE_INFO_GET, semaphore_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_SEMAPHORE_PRIORITIZE_INSERT TX_EL_NO_SEMAPHORE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_SEMAPHORE_PRIORITIZE, semaphore_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_SEMAPHORE_CEILING_PUT_INSERT TX_EL_NO_SEMAPHORE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(TX_EL_SEMAPHORE_CEILING_PUT, semaphore_ptr, semaphore_ptr -> tx_semaphore_count, ceiling); TX_EL_END_FILTER
|
||||
#define TX_EL_SEMAPHORE_PERFORMANCE_INFO_GET_INSERT TX_EL_NO_SEMAPHORE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_SEMAPHORE_PERFORMANCE_INFO_GET, semaphore_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_SEMAPHORE_PERFORMANCE_SYSTEM_INFO_GET_INSERT TX_EL_NO_SEMAPHORE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(TX_EL_SEMAPHORE_PERFORMANCE_SYSTEM_INFO_GET); TX_EL_END_FILTER
|
||||
#define TX_EL_SEMAPHORE_PUT_NOTIFY_INSERT TX_EL_NO_SEMAPHORE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_SEMAPHORE_PUT_NOTIFY, semaphore_ptr, semaphore_put_notify); TX_EL_END_FILTER
|
||||
#define TX_EL_QUEUE_FRONT_SEND_INSERT TX_EL_NO_QUEUE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_QUEUE_FRONT_SEND, queue_ptr, source_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_QUEUE_SEND_INSERT TX_EL_NO_QUEUE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_QUEUE_SEND, queue_ptr, source_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_QUEUE_RECEIVE_INSERT TX_EL_NO_QUEUE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_QUEUE_RECEIVE, queue_ptr, destination_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_QUEUE_FLUSH_INSERT TX_EL_NO_QUEUE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_QUEUE_FLUSH, queue_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_QUEUE_DELETE_INSERT TX_EL_NO_QUEUE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_QUEUE_DELETE, queue_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_QUEUE_CREATE_INSERT TX_EL_NO_QUEUE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO4(TX_EL_QUEUE_CREATE, queue_ptr, queue_start, queue_size, message_size); TX_EL_END_FILTER
|
||||
#define TX_EL_QUEUE_INFO_GET_INSERT TX_EL_NO_QUEUE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_QUEUE_INFO_GET, queue_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_QUEUE_PRIORITIZE_INSERT TX_EL_NO_QUEUE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_QUEUE_PRIORITIZE, queue_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_QUEUE_PERFORMANCE_INFO_GET_INSERT TX_EL_NO_QUEUE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_QUEUE_PERFORMANCE_INFO_GET, queue_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_QUEUE_PERFORMANCE_SYSTEM_INFO_GET_INSERT TX_EL_NO_QUEUE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(TX_EL_QUEUE_PERFORMANCE_SYSTEM_INFO_GET); TX_EL_END_FILTER
|
||||
#define TX_EL_QUEUE_SEND_NOTIFY_INSERT TX_EL_NO_QUEUE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_QUEUE_SEND_NOTIFY, queue_ptr, queue_send_notify); TX_EL_END_FILTER
|
||||
#define TX_EL_EVENT_FLAGS_GET_INSERT TX_EL_NO_EVENT_FLAG_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(TX_EL_EVENT_FLAGS_GET, group_ptr, requested_flags, get_option); TX_EL_END_FILTER
|
||||
#define TX_EL_EVENT_FLAGS_DELETE_INSERT TX_EL_NO_EVENT_FLAG_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_EVENT_FLAGS_DELETE, group_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_EVENT_FLAGS_CREATE_INSERT TX_EL_NO_EVENT_FLAG_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_EVENT_FLAGS_CREATE, group_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_EVENT_FLAGS_INFO_GET_INSERT TX_EL_NO_EVENT_FLAG_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_EVENT_FLAGS_INFO_GET, group_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_EVENT_FLAGS_PERFORMANCE_INFO_GET_INSERT TX_EL_NO_EVENT_FLAG_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_EVENT_FLAGS_PERFORMANCE_INFO_GET, group_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_EVENT_FLAGS_PERFORMANCE_SYSTEM_INFO_GET_INSERT TX_EL_NO_EVENT_FLAG_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(TX_EL_EVENT_FLAGS_PERFORMANCE_SYSTEM_INFO_GET); TX_EL_END_FILTER
|
||||
#define TX_EL_EVENT_FLAGS_SET_NOTIFY_INSERT TX_EL_NO_EVENT_FLAG_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_EVENT_FLAGS_SET_NOTIFY, group_ptr, events_set_notify); TX_EL_END_FILTER
|
||||
#define TX_EL_BYTE_RELEASE_INSERT TX_EL_NO_BYTE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_BYTE_RELEASE, pool_ptr, memory_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_BYTE_POOL_DELETE_INSERT TX_EL_NO_BYTE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_BYTE_POOL_DELETE, pool_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_BYTE_POOL_CREATE_INSERT TX_EL_NO_BYTE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(TX_EL_BYTE_POOL_CREATE, pool_ptr, pool_start, pool_size); TX_EL_END_FILTER
|
||||
#define TX_EL_BYTE_POOL_INFO_GET_INSERT TX_EL_NO_BYTE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_BYTE_POOL_INFO_GET, pool_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_BYTE_POOL_PRIORITIZE_INSERT TX_EL_NO_BYTE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_BYTE_POOL_PRIORITIZE, pool_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_BYTE_ALLOCATE_INSERT TX_EL_NO_BYTE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(TX_EL_BYTE_ALLOCATE, pool_ptr, memory_ptr, memory_size); TX_EL_END_FILTER
|
||||
#define TX_EL_BYTE_POOL_PERFORMANCE_INFO_GET_INSERT TX_EL_NO_BYTE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_BYTE_POOL_PERFORMANCE_INFO_GET, pool_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_BYTE_POOL_PERFORMANCE_SYSTEM_INFO_GET_INSERT TX_EL_NO_BYTE_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(TX_EL_BYTE_POOL_PERFORMANCE_SYSTEM_INFO_GET); TX_EL_END_FILTER
|
||||
#define TX_EL_BLOCK_RELEASE_INSERT TX_EL_NO_BLOCK_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_BLOCK_RELEASE, pool_ptr, block_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_BLOCK_POOL_DELETE_INSERT TX_EL_NO_BLOCK_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_BLOCK_POOL_DELETE, pool_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_BLOCK_POOL_CREATE_INSERT TX_EL_NO_BLOCK_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO4(TX_EL_BLOCK_POOL_CREATE, pool_ptr, pool_start, pool_size, block_size); TX_EL_END_FILTER
|
||||
#define TX_EL_BLOCK_POOL_INFO_GET_INSERT TX_EL_NO_BLOCK_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_BLOCK_POOL_INFO_GET, pool_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_BLOCK_POOL_PRIORITIZE_INSERT TX_EL_NO_BLOCK_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_BLOCK_POOL_PRIORITIZE, pool_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_BLOCK_ALLOCATE_INSERT TX_EL_NO_BLOCK_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_BLOCK_ALLOCATE, pool_ptr, block_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_BLOCK_POOL_PERFORMANCE_INFO_GET_INSERT TX_EL_NO_BLOCK_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_BLOCK_POOL_PERFORMANCE_INFO_GET, pool_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_BLOCK_POOL_PERFORMANCE_SYSTEM_INFO_GET_INSERT TX_EL_NO_BLOCK_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(TX_EL_BLOCK_POOL_PERFORMANCE_SYSTEM_INFO_GET); TX_EL_END_FILTER
|
||||
#define TX_EL_MUTEX_CREATE_INSERT TX_EL_NO_MUTEX_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(TX_EL_MUTEX_CREATE, mutex_ptr, inherit); TX_EL_END_FILTER
|
||||
#define TX_EL_MUTEX_DELETE_INSERT TX_EL_NO_MUTEX_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_MUTEX_DELETE, mutex_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_MUTEX_GET_INSERT TX_EL_NO_MUTEX_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(TX_EL_MUTEX_GET, mutex_ptr, mutex_ptr -> tx_mutex_owner, mutex_ptr -> tx_mutex_ownership_count); TX_EL_END_FILTER
|
||||
#define TX_EL_MUTEX_INFO_GET_INSERT TX_EL_NO_MUTEX_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_MUTEX_INFO_GET, mutex_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_MUTEX_PRIORITIZE_INSERT TX_EL_NO_MUTEX_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_MUTEX_PRIORITIZE, mutex_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_MUTEX_PUT_INSERT TX_EL_NO_MUTEX_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(TX_EL_MUTEX_PUT, mutex_ptr, mutex_ptr -> tx_mutex_owner, mutex_ptr -> tx_mutex_ownership_count); TX_EL_END_FILTER
|
||||
#define TX_EL_MUTEX_PERFORMANCE_INFO_GET_INSERT TX_EL_NO_MUTEX_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(TX_EL_MUTEX_PERFORMANCE_INFO_GET, mutex_ptr); TX_EL_END_FILTER
|
||||
#define TX_EL_MUTEX_PERFORMANCE_SYSTEM_INFO_GET_INSERT TX_EL_NO_MUTEX_EVENTS TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(TX_EL_MUTEX_PERFORMANCE_SYSTEM_INFO_GET); TX_EL_END_FILTER
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* Define Event Log function prototypes. */
|
||||
|
||||
VOID _tx_el_initialize(VOID);
|
||||
UINT _tx_el_thread_register(TX_THREAD *thread_ptr);
|
||||
UINT _tx_el_thread_unregister(TX_THREAD *thread_ptr);
|
||||
VOID _tx_el_user_event_insert(UINT sub_type, ULONG info_1, ULONG info_2,
|
||||
ULONG info_3, ULONG info_4);
|
||||
VOID _tx_el_thread_running(TX_THREAD *thread_ptr);
|
||||
VOID _tx_el_thread_preempted(TX_THREAD *thread_ptr);
|
||||
VOID _tx_el_interrupt(UINT interrupt_number);
|
||||
VOID _tx_el_interrupt_end(UINT interrupt_number);
|
||||
VOID _tx_el_interrupt_control_call(void);
|
||||
VOID _tx_el_event_log_on(void);
|
||||
VOID _tx_el_event_log_off(void);
|
||||
VOID _tx_el_event_filter_set(UINT filter);
|
||||
|
||||
|
||||
/* Define macros that are used inside the ThreadX source code.
|
||||
If event logging is disabled, these macros will be defined
|
||||
as white space. */
|
||||
|
||||
#ifdef TX_ENABLE_EVENT_LOGGING
|
||||
#ifndef TX_NO_EVENT_INFO
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO4(a, b, c, d, e) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREADX_CALL; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) a; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) _tx_thread_current_ptr;\
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_INFO_1_OFFSET)) =\
|
||||
(ULONG) b;\
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_INFO_2_OFFSET)) =\
|
||||
(ULONG) c;\
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_INFO_3_OFFSET)) =\
|
||||
(ULONG) d;\
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_INFO_4_OFFSET)) =\
|
||||
(ULONG) e;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
}
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(a, b, c, d) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREADX_CALL; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) a; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) _tx_thread_current_ptr;\
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_INFO_1_OFFSET)) =\
|
||||
(ULONG) b;\
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_INFO_2_OFFSET)) =\
|
||||
(ULONG) c;\
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_INFO_3_OFFSET)) =\
|
||||
(ULONG) d;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
}
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(a, b, c) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREADX_CALL; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) a; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) _tx_thread_current_ptr;\
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_INFO_1_OFFSET)) =\
|
||||
(ULONG) b;\
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_INFO_2_OFFSET)) =\
|
||||
(ULONG) c;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
}
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(a, b) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREADX_CALL; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) a; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) _tx_thread_current_ptr;\
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_INFO_1_OFFSET)) =\
|
||||
(ULONG) b;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
}
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(a) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREADX_CALL; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) a; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) _tx_thread_current_ptr;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
}
|
||||
#define TX_EL_THREAD_STATUS_CHANGE_INSERT(a, b) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
TX_EL_NO_STATUS_EVENTS \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREAD_STATUS_CHANGE; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) b; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) a;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
TX_EL_END_FILTER \
|
||||
}
|
||||
#define TX_EL_THREAD_REGISTER(a) \
|
||||
_tx_el_thread_register(a);
|
||||
#define TX_EL_THREAD_UNREGISTER(a) \
|
||||
_tx_el_thread_unregister(a);
|
||||
#define TX_EL_INITIALIZE _tx_el_initialize();
|
||||
#else
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO4(a, b, c, d, e) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREADX_CALL; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) a; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) _tx_thread_current_ptr;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
}
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(a, b, c, d) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREADX_CALL; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) a; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) _tx_thread_current_ptr;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
}
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(a, b, c) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREADX_CALL; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) a; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) _tx_thread_current_ptr;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
}
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(a, b) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREADX_CALL; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) a; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) _tx_thread_current_ptr;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
}
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(a) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREADX_CALL; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) a; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) _tx_thread_current_ptr;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
}
|
||||
#define TX_EL_THREAD_STATUS_CHANGE_INSERT(a, b) \
|
||||
{ \
|
||||
UCHAR *entry_ptr; \
|
||||
ULONG upper_tbu; \
|
||||
TX_EL_NO_STATUS_EVENTS \
|
||||
entry_ptr = *_tx_el_current_event; \
|
||||
*((unsigned short *) entry_ptr) = TX_EL_THREAD_STATUS_CHANGE; \
|
||||
*((unsigned short *) (entry_ptr + TX_EL_EVENT_SUBTYPE_OFFSET)) = (unsigned short) b; \
|
||||
do { \
|
||||
upper_tbu = read_tbu(); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_UPPER_OFFSET)) = upper_tbu; \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_TIME_LOWER_OFFSET)) =\
|
||||
(ULONG) read_tbl();\
|
||||
} while (upper_tbu != read_tbu()); \
|
||||
*((ULONG *) (entry_ptr + TX_EL_EVENT_THREAD_OFFSET)) =\
|
||||
(ULONG) a;\
|
||||
entry_ptr = entry_ptr + TX_EL_EVENT_SIZE;\
|
||||
if (entry_ptr >= _tx_el_event_area_end) \
|
||||
{\
|
||||
entry_ptr = _tx_el_event_area_start;\
|
||||
}\
|
||||
*_tx_el_current_event = entry_ptr;\
|
||||
TX_EL_END_FILTER \
|
||||
}
|
||||
#define TX_EL_THREAD_REGISTER(a) \
|
||||
_tx_el_thread_register(a);
|
||||
#define TX_EL_THREAD_UNREGISTER(a) \
|
||||
_tx_el_thread_unregister(a);
|
||||
#define TX_EL_INITIALIZE _tx_el_initialize();
|
||||
#endif
|
||||
#else
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO4(a, b, c, d, e)
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO3(a, b, c, d)
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO2(a, b, c)
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO1(a, b)
|
||||
#define TX_EL_KERNEL_CALL_EVENT_INSERT_INFO0(a)
|
||||
#define TX_EL_THREAD_STATUS_CHANGE_INSERT(a, b)
|
||||
#define TX_EL_THREAD_REGISTER(a)
|
||||
#define TX_EL_THREAD_UNREGISTER(a)
|
||||
#define TX_EL_INITIALIZE
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
77
ports/cortex_a8/ghs/inc/tx_ghs.h
Normal file
77
ports/cortex_a8/ghs/inc/tx_ghs.h
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* ThreadX C/C++ Library Support
|
||||
*
|
||||
* Copyright 1983-2019 Green Hills Software LLC.
|
||||
*
|
||||
* This program is the property of Green Hills Software LLC.,
|
||||
* its contents are proprietary information and no part of it
|
||||
* is to be disclosed to anyone except employees of Green Hills
|
||||
* Software LLC., or as agreed in writing signed by the President
|
||||
* of Green Hills Software LLC.
|
||||
*/
|
||||
|
||||
#ifndef _TX_GHS_H_
|
||||
#define _TX_GHS_H_
|
||||
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <setjmp.h>
|
||||
|
||||
#if defined(__ghs) && (__GHS_VERSION_NUMBER >= 500)
|
||||
extern void *__ghs_GetThreadLocalStorageItem(int specifier);
|
||||
|
||||
/* Thread-local storage routines for Green Hills releases 5.x and beyond.
|
||||
The following specifiers are used when calling
|
||||
__ghs_GetThreadLocalStorageItem.
|
||||
|
||||
If __ghs_GetThreadLocalStorageItem is customized to
|
||||
return a per-thread errno value, define the preprocessor symbol
|
||||
USE_THREAD_LOCAL_ERRNO in ind_errn.c.
|
||||
*/
|
||||
|
||||
enum __ghs_ThreadLocalStorage_specifier {
|
||||
__ghs_TLS_asctime_buff,
|
||||
__ghs_TLS_tmpnam_space,
|
||||
__ghs_TLS_strtok_saved_pos,
|
||||
__ghs_TLS_Errno,
|
||||
__ghs_TLS_gmtime_temp,
|
||||
__ghs_TLS___eh_globals,
|
||||
__ghs_TLS_SignalHandlers
|
||||
};
|
||||
#else
|
||||
/* Thread-local storage routines for Green Hills releases 4.x and 3.x . */
|
||||
typedef void (*SignalHandler)(int);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int Errno; /* errno. */
|
||||
SignalHandler SignalHandlers[_SIGMAX]; /* signal() buffer. */
|
||||
char tmpnam_space[L_tmpnam]; /* tmpnam(NULL) buffer. */
|
||||
char asctime_buff[30]; /* . */
|
||||
char *strtok_saved_pos; /* strtok() position. */
|
||||
struct tm gmtime_temp; /* gmtime() and localtime() buffer. */
|
||||
void *__eh_globals; /* Pointer for C++ exception handling. */
|
||||
} ThreadLocalStorage;
|
||||
|
||||
ThreadLocalStorage *GetThreadLocalStorage(void);
|
||||
#endif
|
||||
|
||||
|
||||
void __ghsLock(void);
|
||||
void __ghsUnlock(void);
|
||||
|
||||
int __ghs_SaveSignalContext(jmp_buf);
|
||||
void __ghs_RestoreSignalContext(jmp_buf);
|
||||
|
||||
/* prototypes for FILE lock routines. */
|
||||
void __ghs_flock_file(void *);
|
||||
void __ghs_funlock_file(void *);
|
||||
int __ghs_ftrylock_file(void *);
|
||||
void __ghs_flock_create(void **);
|
||||
void __ghs_flock_destroy(void *);
|
||||
|
||||
/* prototype for GHS/ThreadX error shell checking. */
|
||||
void __ghs_rnerr(char *errMsg, int stackLevels, int stackTraceDisplay, void *hexVal);
|
||||
|
||||
#endif /* _TX_GHS_H_ */
|
||||
405
ports/cortex_a8/ghs/inc/tx_port.h
Normal file
405
ports/cortex_a8/ghs/inc/tx_port.h
Normal file
@@ -0,0 +1,405 @@
|
||||
/**************************************************************************/
|
||||
/* */
|
||||
/* Copyright (c) Microsoft Corporation. All rights reserved. */
|
||||
/* */
|
||||
/* This software is licensed under the Microsoft Software License */
|
||||
/* Terms for Microsoft Azure RTOS. Full text of the license can be */
|
||||
/* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
|
||||
/* and in the root directory of this software. */
|
||||
/* */
|
||||
/**************************************************************************/
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
/**************************************************************************/
|
||||
/** */
|
||||
/** ThreadX Component */
|
||||
/** */
|
||||
/** Port Specific */
|
||||
/** */
|
||||
/**************************************************************************/
|
||||
/**************************************************************************/
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
/* */
|
||||
/* PORT SPECIFIC C INFORMATION RELEASE */
|
||||
/* */
|
||||
/* tx_port.h Cortex-A8/GHS */
|
||||
/* 6.1.10 */
|
||||
/* */
|
||||
/* AUTHOR */
|
||||
/* */
|
||||
/* William E. Lamie, Microsoft Corporation */
|
||||
/* */
|
||||
/* DESCRIPTION */
|
||||
/* */
|
||||
/* This file contains data type definitions that make the ThreadX */
|
||||
/* real-time kernel function identically on a variety of different */
|
||||
/* processor architectures. For example, the size or number of bits */
|
||||
/* in an "int" data type vary between microprocessor architectures and */
|
||||
/* even C compilers for the same microprocessor. ThreadX does not */
|
||||
/* directly use native C data types. Instead, ThreadX creates its */
|
||||
/* own special types that can be mapped to actual data types by this */
|
||||
/* file to guarantee consistency in the interface and functionality. */
|
||||
/* */
|
||||
/* RELEASE HISTORY */
|
||||
/* */
|
||||
/* DATE NAME DESCRIPTION */
|
||||
/* */
|
||||
/* 09-30-2020 William E. Lamie Initial Version 6.1 */
|
||||
/* 01-31-2022 Bhupendra Naphade Modified comment(s),updated */
|
||||
/* macro definition, */
|
||||
/* resulting in version 6.1.10 */
|
||||
/* */
|
||||
/**************************************************************************/
|
||||
|
||||
#ifndef TX_PORT_H
|
||||
#define TX_PORT_H
|
||||
|
||||
|
||||
/* Determine if the optional ThreadX user define file should be used. */
|
||||
|
||||
#ifdef TX_INCLUDE_USER_DEFINE_FILE
|
||||
|
||||
|
||||
/* Yes, include the user defines in tx_user.h. The defines in this file may
|
||||
alternately be defined on the command line. */
|
||||
|
||||
#include "tx_user.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* Define compiler library include files. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <arm_ghs.h>
|
||||
#include "tx_ghs.h"
|
||||
|
||||
|
||||
/* Define ThreadX basic types for this port. */
|
||||
|
||||
#define VOID void
|
||||
typedef char CHAR;
|
||||
typedef unsigned char UCHAR;
|
||||
typedef int INT;
|
||||
typedef unsigned int UINT;
|
||||
typedef long LONG;
|
||||
typedef unsigned long ULONG;
|
||||
typedef short SHORT;
|
||||
typedef unsigned short USHORT;
|
||||
|
||||
|
||||
/* Define the priority levels for ThreadX. Legal values range
|
||||
from 32 to 1024 and MUST be evenly divisible by 32. */
|
||||
|
||||
#ifndef TX_MAX_PRIORITIES
|
||||
#define TX_MAX_PRIORITIES 32
|
||||
#endif
|
||||
|
||||
|
||||
/* Define the minimum stack for a ThreadX thread on this processor. If the size supplied during
|
||||
thread creation is less than this value, the thread create call will return an error. */
|
||||
|
||||
#ifndef TX_MINIMUM_STACK
|
||||
#define TX_MINIMUM_STACK 200 /* Minimum stack size for this port */
|
||||
#endif
|
||||
|
||||
|
||||
/* Define the system timer thread's default stack size and priority. These are only applicable
|
||||
if TX_TIMER_PROCESS_IN_ISR is not defined. */
|
||||
|
||||
#ifndef TX_TIMER_THREAD_STACK_SIZE
|
||||
#define TX_TIMER_THREAD_STACK_SIZE 1024 /* Default timer thread stack size */
|
||||
#endif
|
||||
|
||||
#ifndef TX_TIMER_THREAD_PRIORITY
|
||||
#define TX_TIMER_THREAD_PRIORITY 0 /* Default timer thread priority */
|
||||
#endif
|
||||
|
||||
|
||||
/* Define various constants for the ThreadX ARM port. */
|
||||
|
||||
#ifdef TX_ENABLE_FIQ_SUPPORT
|
||||
#define TX_INT_DISABLE 0xC0 /* Disable IRQ & FIQ interrupts */
|
||||
#else
|
||||
#define TX_INT_DISABLE 0x80 /* Disable IRQ interrupts */
|
||||
#endif
|
||||
#define TX_INT_ENABLE 0x00 /* Enable IRQ interrupts */
|
||||
|
||||
|
||||
/* Define constants for Green Hills EventAnalyzer. */
|
||||
|
||||
/* Define the number of ticks per second. This informs the EventAnalyzer what the timestamps
|
||||
represent. By default, this is set to 1,000,000 i.e., one tick every microsecond. */
|
||||
|
||||
#define TX_EL_TICKS_PER_SECOND 1000000
|
||||
|
||||
/* Define the method of how to get the upper and lower 32-bits of the time stamp. By default, simply
|
||||
simulate the time-stamp source with a counter. */
|
||||
|
||||
#define read_tbu() _tx_el_time_base_upper
|
||||
#define read_tbl() ++_tx_el_time_base_lower
|
||||
|
||||
|
||||
/* Define the port specific options for the _tx_build_options variable. This variable indicates
|
||||
how the ThreadX library was built. */
|
||||
|
||||
#ifdef TX_ENABLE_FIQ_SUPPORT
|
||||
#define TX_FIQ_ENABLED 1
|
||||
#else
|
||||
#define TX_FIQ_ENABLED 0
|
||||
#endif
|
||||
|
||||
#ifdef TX_ENABLE_IRQ_NESTING
|
||||
#define TX_IRQ_NESTING_ENABLED 2
|
||||
#else
|
||||
#define TX_IRQ_NESTING_ENABLED 0
|
||||
#endif
|
||||
|
||||
#ifdef TX_ENABLE_FIQ_NESTING
|
||||
#define TX_FIQ_NESTING_ENABLED 4
|
||||
#else
|
||||
#define TX_FIQ_NESTING_ENABLED 0
|
||||
#endif
|
||||
|
||||
#define TX_PORT_SPECIFIC_BUILD_OPTIONS (TX_FIQ_ENABLED | TX_IRQ_NESTING_ENABLED | TX_FIQ_NESTING_ENABLED)
|
||||
|
||||
|
||||
/* Define the in-line initialization constant so that modules with in-line
|
||||
initialization capabilities can prevent their initialization from being
|
||||
a function call. */
|
||||
|
||||
#define TX_INLINE_INITIALIZATION
|
||||
|
||||
|
||||
/* Determine whether or not stack checking is enabled. By default, ThreadX stack checking is
|
||||
disabled. When the following is defined, ThreadX thread stack checking is enabled. If stack
|
||||
checking is enabled (TX_ENABLE_STACK_CHECKING is defined), the TX_DISABLE_STACK_FILLING
|
||||
define is negated, thereby forcing the stack fill which is necessary for the stack checking
|
||||
logic. */
|
||||
|
||||
#ifdef TX_ENABLE_STACK_CHECKING
|
||||
#undef TX_DISABLE_STACK_FILLING
|
||||
#endif
|
||||
|
||||
|
||||
/* Define the TX_THREAD control block extensions for this port. The main reason
|
||||
for the multiple macros is so that backward compatibility can be maintained with
|
||||
existing ThreadX kernel awareness modules. */
|
||||
|
||||
#define TX_THREAD_EXTENSION_0
|
||||
#define TX_THREAD_EXTENSION_1
|
||||
#define TX_THREAD_EXTENSION_2 ULONG tx_thread_vfp_enable; \
|
||||
VOID * tx_thread_eh_globals; \
|
||||
int Errno; /* errno. */ \
|
||||
char * strtok_saved_pos; /* strtok() position. */
|
||||
#define TX_THREAD_EXTENSION_3
|
||||
|
||||
|
||||
/* Define the port extensions of the remaining ThreadX objects. */
|
||||
|
||||
#define TX_BLOCK_POOL_EXTENSION
|
||||
#define TX_BYTE_POOL_EXTENSION
|
||||
#define TX_EVENT_FLAGS_GROUP_EXTENSION
|
||||
#define TX_MUTEX_EXTENSION
|
||||
#define TX_QUEUE_EXTENSION
|
||||
#define TX_SEMAPHORE_EXTENSION
|
||||
#define TX_TIMER_EXTENSION
|
||||
|
||||
|
||||
/* Define the user extension field of the thread control block. Nothing
|
||||
additional is needed for this port so it is defined as white space. */
|
||||
|
||||
#ifndef TX_THREAD_USER_EXTENSION
|
||||
#define TX_THREAD_USER_EXTENSION
|
||||
#endif
|
||||
|
||||
|
||||
/* Define the macros for processing extensions in tx_thread_create, tx_thread_delete,
|
||||
tx_thread_shell_entry, and tx_thread_terminate. */
|
||||
|
||||
#if (__GHS_VERSION_NUMBER >= 500)
|
||||
#define TX_THREAD_CREATE_EXTENSION(thread_ptr) \
|
||||
{ \
|
||||
extern void __tx_cpp_exception_init(TX_THREAD *thread_ptr); \
|
||||
__tx_cpp_exception_init(thread_ptr); \
|
||||
}
|
||||
#else
|
||||
#define TX_THREAD_CREATE_EXTENSION(thread_ptr) \
|
||||
{ \
|
||||
#pragma weak __cpp_exception_init \
|
||||
extern void __cpp_exception_init(void **); \
|
||||
static void (*const cpp_init_funcp)(void **) = __cpp_exception_init; \
|
||||
if (cpp_init_funcp) \
|
||||
__cpp_exception_init(&(thread_ptr -> tx_thread_eh_globals)); \
|
||||
}
|
||||
#endif
|
||||
|
||||
#if (__GHS_VERSION_NUMBER >= 500)
|
||||
#define TX_THREAD_DELETE_EXTENSION(thread_ptr) \
|
||||
{ \
|
||||
extern void __tx_cpp_exception_cleanup(TX_THREAD *thread_ptr); \
|
||||
__tx_cpp_exception_cleanup(thread_ptr); \
|
||||
}
|
||||
#else
|
||||
#define TX_THREAD_DELETE_EXTENSION(thread_ptr) \
|
||||
{ \
|
||||
#pragma weak __cpp_exception_cleanup \
|
||||
extern void __cpp_exception_cleanup(void **); \
|
||||
static void (*const cpp_cleanup_funcp)(void **) = \
|
||||
__cpp_exception_cleanup; \
|
||||
if (cpp_cleanup_funcp) \
|
||||
__cpp_exception_cleanup(&(thread_ptr -> tx_thread_eh_globals)); \
|
||||
}
|
||||
#endif
|
||||
|
||||
#define TX_THREAD_COMPLETED_EXTENSION(thread_ptr)
|
||||
#define TX_THREAD_TERMINATED_EXTENSION(thread_ptr)
|
||||
|
||||
|
||||
/* Define the ThreadX object creation extensions for the remaining objects. */
|
||||
|
||||
#define TX_BLOCK_POOL_CREATE_EXTENSION(pool_ptr)
|
||||
#define TX_BYTE_POOL_CREATE_EXTENSION(pool_ptr)
|
||||
#define TX_EVENT_FLAGS_GROUP_CREATE_EXTENSION(group_ptr)
|
||||
#define TX_MUTEX_CREATE_EXTENSION(mutex_ptr)
|
||||
#define TX_QUEUE_CREATE_EXTENSION(queue_ptr)
|
||||
#define TX_SEMAPHORE_CREATE_EXTENSION(semaphore_ptr)
|
||||
#define TX_TIMER_CREATE_EXTENSION(timer_ptr)
|
||||
|
||||
|
||||
/* Define the ThreadX object deletion extensions for the remaining objects. */
|
||||
|
||||
#define TX_BLOCK_POOL_DELETE_EXTENSION(pool_ptr)
|
||||
#define TX_BYTE_POOL_DELETE_EXTENSION(pool_ptr)
|
||||
#define TX_EVENT_FLAGS_GROUP_DELETE_EXTENSION(group_ptr)
|
||||
#define TX_MUTEX_DELETE_EXTENSION(mutex_ptr)
|
||||
#define TX_QUEUE_DELETE_EXTENSION(queue_ptr)
|
||||
#define TX_SEMAPHORE_DELETE_EXTENSION(semaphore_ptr)
|
||||
#define TX_TIMER_DELETE_EXTENSION(timer_ptr)
|
||||
|
||||
|
||||
/* Determine if the ARM architecture has the CLZ instruction. This is available on
|
||||
architectures v5 and above. If available, redefine the macro for calculating the
|
||||
lowest bit set. */
|
||||
|
||||
#define TX_LOWEST_SET_BIT_CALCULATE(m, b) m = m & ((ULONG) (-((LONG) m))); \
|
||||
b = __CLZ32(m); \
|
||||
b = 31 - b;
|
||||
|
||||
|
||||
/* Define ThreadX interrupt lockout and restore macros for protection on
|
||||
access of critical kernel information. The restore interrupt macro must
|
||||
restore the interrupt posture of the running thread prior to the value
|
||||
present prior to the disable macro. In most cases, the save area macro
|
||||
is used to define a local function save area for the disable and restore
|
||||
macros. */
|
||||
|
||||
#if defined(__THUMB)
|
||||
|
||||
unsigned int _tx_thread_interrupt_disable(void);
|
||||
void _tx_thread_interrupt_restore(unsigned int new_posture);
|
||||
|
||||
#define TX_INTERRUPT_SAVE_AREA register int interrupt_save;
|
||||
|
||||
#define TX_DISABLE interrupt_save = _tx_thread_interrupt_disable();
|
||||
|
||||
#define TX_RESTORE _tx_thread_interrupt_restore(interrupt_save);
|
||||
|
||||
#else
|
||||
|
||||
#define TX_INTERRUPT_SAVE_AREA register int interrupt_save;
|
||||
|
||||
#if defined(__GHS_VERSION_NUMBER) && (__GHS_VERSION_NUMBER >= 350)
|
||||
|
||||
/* Define ThreadX interrupt lockout and restore macros using
|
||||
compiler built-in functions if using Green Hills ARM compiler
|
||||
version 3.5 or later. */
|
||||
|
||||
#ifdef TX_ENABLE_FIQ_SUPPORT
|
||||
#define TX_DISABLE interrupt_save = __GETSR(); \
|
||||
__SETSR(interrupt_save | 0xC0);
|
||||
|
||||
#define TX_RESTORE __SETSR(interrupt_save);
|
||||
#else
|
||||
#define TX_DISABLE interrupt_save = __GETSR(); \
|
||||
__SETSR(interrupt_save | 0x80);
|
||||
|
||||
#define TX_RESTORE __SETSR(interrupt_save);
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
/* Define ThreadX interrupt lockout and restore macros using
|
||||
asm macros if using Green Hills ARM compiler earlier than
|
||||
version 3.5. */
|
||||
|
||||
asm int disable_ints(void)
|
||||
{
|
||||
%
|
||||
MRS r0,CPSR
|
||||
#ifdef TX_BEFORE_ARMV6
|
||||
#ifdef TX_ENABLE_FIQ_SUPPORT
|
||||
ORR r1,r0,0xC0
|
||||
#else
|
||||
ORR r1,r0,0x80
|
||||
#endif
|
||||
MSR CPSR_c,r1
|
||||
#else
|
||||
#ifdef TX_ENABLE_FIQ_SUPPORT
|
||||
CPSID if
|
||||
#else
|
||||
CPSID i
|
||||
#endif
|
||||
#endif
|
||||
%error
|
||||
}
|
||||
|
||||
asm void restore_ints(int a)
|
||||
{
|
||||
%reg a
|
||||
MSR CPSR_c,a
|
||||
%mem a
|
||||
LDR r0,a
|
||||
MSR CPSR_c,r0
|
||||
%error
|
||||
}
|
||||
|
||||
#define TX_DISABLE interrupt_save = disable_ints();
|
||||
|
||||
#define TX_RESTORE restore_ints(interrupt_save);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/* Define VFP extension for the Cortex-A8. Each is assumed to be called in the context of the executing
|
||||
thread. */
|
||||
|
||||
void tx_thread_vfp_enable(void);
|
||||
void tx_thread_vfp_disable(void);
|
||||
|
||||
|
||||
/* Define the interrupt lockout macros for each ThreadX object. */
|
||||
|
||||
#define TX_BLOCK_POOL_DISABLE TX_DISABLE
|
||||
#define TX_BYTE_POOL_DISABLE TX_DISABLE
|
||||
#define TX_EVENT_FLAGS_GROUP_DISABLE TX_DISABLE
|
||||
#define TX_MUTEX_DISABLE TX_DISABLE
|
||||
#define TX_QUEUE_DISABLE TX_DISABLE
|
||||
#define TX_SEMAPHORE_DISABLE TX_DISABLE
|
||||
|
||||
|
||||
/* Define the version ID of ThreadX. This may be utilized by the application. */
|
||||
|
||||
#ifdef TX_THREAD_INIT
|
||||
CHAR _tx_version_id[] =
|
||||
"Copyright (c) Microsoft Corporation. All rights reserved. * ThreadX Cortex-A8/Green Hills Version 6.1.10 *";
|
||||
#else
|
||||
extern CHAR _tx_version_id[];
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user