Download TraceX User`s Manual - Renesas Electronics
Transcript
User’s Manual TraceX® User’s Manual: Software Renesas SynergyTM Platform synergygallery.renesas.com Renesas Electronics www.renesas.com Rev. 5 ThreadX system analysis tool V5 for Windows User Guide Express Logic, Inc. 858.613.6640 Toll Free 888.THREADX FAX 858.521.4259 http://www.expresslogic.com ©2002-2010 by Express Logic, Inc. All rights reserved. This document and the associated TraceX software are the sole property of Express Logic, Inc. Each contains proprietary information of Express Logic, Inc. Reproduction or duplication by any means of any portion of this document without the prior written consent of Express Logic, Inc. is expressly forbidden. Express Logic, Inc. reserves the right to make changes to the specifications described herein at any time and without notice in order to improve design or reliability of TraceX. The information in this document has been carefully checked for accuracy; however, Express Logic, Inc. makes no warranty pertaining to the correctness of this document. Trademarks TraceX, NetX, USBX, StackX, preemption-threshold, Piconet, and UDP Fast Path are trademarks of Express Logic, Inc., and ThreadX and FileX are registered trademarks of Express Logic, Inc. All other product and company names are trademarks or registered trademarks of their respective holders. Warranty Limitations Express Logic, Inc. makes no warranty of any kind that the TraceX products will meet the USER’s requirements, or will operate in the manner specified by the USER, or that the operation of the TraceX products will operate uninterrupted or error free, or that any defects that may exist in the TraceX products will be corrected after the warranty period. Express Logic, Inc. makes no warranties of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose, with respect to the TraceX products. No oral or written information or advice given by Express Logic, Inc., its dealers, distributors, agents, or employees shall create any other warranty or in any way increase the scope of this warranty, and licensee may not rely on any such information or advice. Part Number: 000-1454 Revision 5.2 Express Logic, Inc. Contents About This Guide 7 1 Organization 7 1 Guide Conventions 9 1 Customer Support Center 9 Latest Product Information 9 What We Need From You 10 Where to Send Comments About This Guide 10 1 Introduction to TraceX 11 1 TraceX Requirements 12 1 TraceX Constraints 12 2 Installation and Use of TraceX 1 Product Distribution 14 1 TraceX Installation Directory 14 1 TraceX Installation 15 1 Using TraceX 24 1 TraceX Examples 25 13 3 Description of TraceX 27 1 Display Overview 28 1 Title Bar 29 1 Tool Bar 30 1 Display Mode Tabs 32 1 Sequential View Mode 33 Express Logic, Inc. 4 TraceX User Guide 1 Time View Mode 34 1 System Summary Line 35 1 System Contexts 36 1 Thread Status Information 40 1 Event Information Display 42 1 Current Event Display 44 1 Event Searching 46 1 Zooming In and Out 47 1 Delta Ticks Between Events 49 1 Actual Time Display 50 1 Priority Inversions 51 1 TraceX Multi-Core 53 4 TraceX Performance Analysis 1 Performance Analysis 56 1 Multi-Core CPU Utilization 57 1 Execution Profile 57 1 Popular Services 58 1 Thread Stack Usage 60 1 Performance Statistics 61 1 FileX Statistics 63 1 NetX Statistics 65 1 Trace File Information 66 1 Raw Trace Dump 67 5 Generating Trace Buffers 69 1 ThreadX Event Trace Support 70 1 Enabling Event Trace 70 1 Defining Time-Stamp Constants 70 User Guide 55 Contents 5 1 Exporting the Trace Buffer 72 1 Extended Event Trace API 73 6 ThreadX Trace Events 95 1 List of Events and Icons 96 1 Event Descriptions 100 7 FileX Trace Events 117 1 List of Events and Icons 118 1 Event Descriptions 121 8 NetX Trace Events 135 1 List of Events and Icons 136 1 Event Descriptions 143 9 USBX Trace Events 171 1 List of Events and Icons 172 1 Event Descriptions 182 10 Customer User Events 221 1 Inserting User-Defined Events 222 1 Default Display of User-Defined Events 222 1 Defining Custom User-Defined Event Icons 224 11 Format of Event Trace Buffer 1 1 231 Event Trace Format 232 Event Trace Control Header 232 Control Header ID 233 Timer Valid Mask 233 Express Logic, Inc. 6 TraceX User Guide Trace Base Address 234 Registry Start and End Pointers 234 Registry Name Size 234 Buffer Start and End Pointers 234 Current Buffer Pointer 235 1 1 Event Trace Object Registry 235 Object Available Flag 235 Object Entry Type 236 Object Pointer 237 Object Reserved Fields 237 Object Parameters 237 Object Name 237 Event Trace Entries 238 Thread Pointer 238 Thread Priority 239 Event ID 239 Information Fields (1-4) 239 A Sample tx_port.h 241 B tx_trace.h File 247 C DOS Command Line Utilities 255 D Dumping the Trace Buffer 257 1 BenchX Tools 258 1 RealView Tools 259 1 IAR Tools 259 1 CodeWarrior Tools 260 1 MPLAB Tools 261 1 GHS Tools 267 1 Renesas HEW 268 Index User Guide 271 CHAPTER 1 About This Guide This guide contains comprehensive information about TraceX™, the Microsoft Windows-based system analysis tool from Express Logic, Inc. It is intended for the embedded real-time software developer using ThreadX Real-Time Operating System (RTOS) and add-on components. The developer should be familiar with standard ThreadX FileX, and NetX concepts . Organization Chapter 1 Contains an basic overview of TraceX and describes its relationship to real-time development. Chapter 2 Gives the basic steps to install and use TraceX to analyze your application right out of the box. Chapter 3 Describes the main features of TraceX. Chapter 4 Details performance analysis features of TraceX. Chapter 5 Describes how to set up ThreadX, FileX, and NetX in order to generate a trace buffer that is viewable by TraceX. Express Logic, Inc. 8 About This Guide User Guide Chapter 6 Describes TraceX events in detail. Chapter 7 Describes FileX events in detail. Chapter 8 Describes NetX events in detail. Chapter 9 Describes USBX events in detail. Chapter 10 Describes creating custom user events in detail. Chapter 11 Describes the internal trace buffer in detail. Appendix A ThreadX port-specific file with its time-stamp source for gathering trace events. Appendix B ThreadX tx_trace.h file that shows implementation details regarding the event trace buffer. Appendix C Summarizes command line utilities for converting various file formats into proper TraceX binary files. Appendix D Examples of dumping trace files from various development tools. Index Topic cross reference. TraceX User Guide 9 Guide Conventions Italics Typeface denotes book titles, emphasizes important words, and indicates variables. Boldface Typeface denotes file names, key words, and further emphasizes important words and variables. Indicates a specific area of interest in screenshots of the TraceX graphic user interface (GUI). Indicate information of note. Customer Support Center Latest Product Information Support engineers 858.613.6640 Support fax 858.521.4259 Support email [email protected] Web page http://www.expresslogic.com Visit the Express Logic web site and select the “Support” menu option to find the latest support information, including information about the latest TraceX product releases. Express Logic, Inc. 10 About This Guide What We Need From You To more efficiently resolve your support request, provide us with the following in your email request: • A detailed description of the problem, including frequency of occurrence and whether it can be reliably reproduced. • An attached copy of the trace file causing the problem. • The verision of TraceX you are using. • The version of ThreadX you are using as well as the _tx_version_id and _tx_build_options variables in ThreadX. • The version of FileX you are using including the _fx_version_id string. • The version of NetX you are using including the _nx_version_id string. Where to Send Comments About This Guide The staff at Express Logic is always striving to provide you with better products. To help us achieve this goal, email any comments and suggestions to the Customer Support Center at [email protected] Enter “TraceX User Guide” in the subject line. User Guide 1 CHAPTER 1 Introduction to TraceX TraceX is a Microsoft system analysis tool that displays system event information gathered by ThreadX running on an embedded target. The user is responsible for transferring the trace buffer stored in RAM in the embedded target to a binary file on the host computer. The user can then open this file with TraceX and graphically analyze the target events, diagnosing system problems and tuning a working application to improve performance and resource management. This chapter describes the following: 1 TraceX Requirements 12 1 TraceX Constraints 12 Express Logic, Inc. 12 Introduction to TraceX TraceX Requirements TraceX requires Windows XP (or above). The system should have a minimum of 192MB of RAM, 2 GB of available hard-disk space, and a minimum display of 1024x768 with 256 colors. In addition, the application must be running on ThreadX V5.0 or later. TraceX also requires the Microsoft .NET framework be installed, which the TraceX installer does automatically. TraceX Constraints TraceX has the following constraints: • TraceX files are limited to a maximum of 32,768 events (roughly 1MB ). • The time-stamp source must have reasonable resolution. If the resolution is too low, the events will overlap. If the resolution is too high, there is potential for long gaps between events. • TraceX cannot accurately measure intervals between events greater than the timer period. User Guide 2 CHAPTER 1 Installation and Use of TraceX This chapter contains a description of various issues related to installation, setup, and usage of the TraceX system analysis tool, including the following: 1 Product Distribution 14 1 TraceX Installation Directory 14 1 TraceX Installation 15 1 Using TraceX 24 1 TraceX Examples 25 Express Logic, Inc. 14 Installation and Use of TraceX Product Distribution TraceX is shipped on a single CD-ROM compatible disk. The package includes an installation program Setup.exe that automatically runs from the CD. If the TraceX installer does not automatically run, click on the Setup.exe program manually to install TraceX. The TraceX package also contains an example directory of pre-built traces that should serve as a good starting point for new TraceX users. The release notes associated with each new TraceX release can be found in the file readme_tracex.txt. Review this file to see what has changed between successive TraceX releases. TraceX Installation Directory TraceX, by default, is installed in the directory c:\ExpressLogic\TraceX_v, where v is the version of TraceX being installed. The default location for TraceX installation may be changed via the installation dialog as shown in the next section. TraceX requires the Microsoft .NET framework to operate.The installation of this is done automatically by the TraceX installer via the dialogs shown later in this chapter. User Guide TraceX User Guide 15 TraceX Installation TraceX is easily installed, as shown in Figure 2.1 through Figure 2.7. The installation dialogs are fairly straightforward, but it is worth noting that Figure 2.4 shows the dialog for changing the default installation directory for TraceX. FIGURE 2.1 Express Logic, Inc. 16 Installation and Use of TraceX Selecting Next button launches the TraceX installation, as shown in Figure 2.2. FIGURE 2.2 Selecting Next button in Figure 2.2 indicates the terms of the license agreement are agreed and User Guide TraceX User Guide 17 TraceX installation continues, as shown in the Figure 2.3. FIGURE 2.3 At this point, the User Name and Organization should be entered, followed by selection of the Next Express Logic, Inc. 18 Installation and Use of TraceX button, which continues the installation, as shown in the Figure 2.4. FIGURE 2.4 User Guide TraceX User Guide 19 If the default installation path is okay, simply select the Next button to continue the installation, as shown in Figure 2.5. FIGURE 2.5 Express Logic, Inc. 20 Installation and Use of TraceX If everything is acceptable, select the Next button to continue the installation, as shown in Figure 2.6. FIGURE 2.6 User Guide TraceX User Guide 21 You should now observe the installation of TraceX on your Windows computer. FIGURE 2.7 Selecting Finish button completes the installation and by default launches TraceX. At this point, TraceX is installed and ready to use! As mentioned previously, TraceX requires .NET v3.5 or higher. If this is not currently installed, the TraceX installation process will automatically install it. Figure Express Logic, Inc. 22 Installation and Use of TraceX 2.8 through Figure 2.10 show the general flow of .NET installation. FIGURE 2.8 User Guide TraceX User Guide 23 Selecting Install button launches the Microsoft .NET installation, as shown in Figure 2.9. FIGURE 2.9 Further note that the Microsoft .NET framework installation may take as much as eight minutes to complete. After complete, the Microsoft .NET installation requires a reboot. After the reboot, the installation will automatically continue where it left off. If it does not, launch the installation again. Express Logic, Inc. 24 Installation and Use of TraceX Using TraceX Using TraceX is as easy as opening a trace file inside TraceX! Run TraceX via the Start button. At this point you will observe the TraceX graphic user interface (GUI). You are now ready to use TraceX to graphically view an existing target trace buffer. This is easily done by clicking File -> Open, then entering the binary trace file. You can also double-click on any trace file with an extension of trx, which will automatically launch TraceX. FIGURE 2.10 Refer to Chapter 5 for instructions on how to generate trace buffers on the target using ThreadX. User Guide TraceX User Guide 25 TraceX Examples A series of example trace files with the extension trx are found in the TraceFiles subdirectory of your installation. These pre-built examples will help you get comfortable with using TraceX on the trace buffers generated by ThreadX running with your application. One example trace file always present is the file demo_threadx.trx. This example trace file shows the execution of the standard ThreadX demo, as described in Chapter 6 of the ThreadX User Guide. FIGURE 2.11 Express Logic, Inc. 26 Installation and Use of TraceX User Guide 3 CHAPTER 1 Description of TraceX This chapter describes the overall functionality of the TraceX system analysis tool, including the overall functionality of its GUI, including the following: 1 Display Overview 28 1 Title Bar 29 1 Tool Bar 30 1 Display Mode Tabs 32 1 Sequential View Mode 33 1 Time View Mode 34 1 System Summary Line 35 1 System Contexts 36 1 Thread Status Information 40 1 Event Information Display 42 1 Current Event Display 44 1 Event Searching 46 1 Zooming In and Out 47 1 Delta Ticks Between Events 49 1 Actual Time Display 50 1 Priority Inversions 51 1 TraceX Multi-Core 53 Express Logic, Inc. 28 Description of TraceX Display Overview Figure 3.1 shows the main display window of the TraceX system analysis tool. The layout is straightforward—the execution contexts are represented by the vertical elements on the left side; e.g., initialization, interrupt, idle, and the various thread entries. The events that take place in each context are displayed horizontally on the same context line. For example, the QR events shown below show that thread 2 is making successive calls to tx_queue_receive. FIGURE 3.1 Context changes are represented by the vertical black lines that connect the context lines. The currently selected event is represented by a solid red vertical line. In this example, event 494 is selected. User Guide TraceX User Guide 29 Title Bar The TraceX title bar provides several pieces of useful information. First is the current version of TraceX. Second is the full path of the currently opened trace file. The example in Figure 3.2 shows TraceX version 5.0.1 is displaying the demo_threadx.trx trace file. FIGURE 3.2 Express Logic, Inc. 30 Description of TraceX Tool Bar The TraceX tool bar provides several buttons to open trace files and control elements of their display. Figure 3.3 identifies the TraceX tool bar. FIGURE 3.3 The TraceX tool bar buttons—from left to right—are defined as follows: User Guide TraceX User Guide Button 31 Function Open a trace file Generate multi-core CPU utilization analysis [Multi-Core Only] Generate execution profile Generate performance statistics Generate Thread Stack usage Display currently selected event Search for events Open the TraceX User Guide. Zoom in. Select percentage of display zoom, where 100% means the entire trace file is displayed within the current view. Zoom out. Express Logic, Inc. 32 Description of TraceX Select first event. Display previous event page. Display previous event. Determine how the next/previous navigation buttons operate. If Event is selected, navigation is done on the next/previous event. If Context is selected, navigation is done on the next/previous event on the specified context. If Object is selected, navigation is done on the next/previous event of the specified object; e.g., events associated with a specific queue. If Switches is selected, navigation is done on the next/previous change in context. If ID is selected, navigation is done on the next/previous event of the specified event ID. Display next event. Display next event page. Select last event. Display Mode Tabs TraceX displays system events in two different ways: sequential and time relative. The default mode is sequential and that is the mode shown in Figure 3.4. User Guide TraceX User Guide 33 Changing the mode is as simple as selecting the Sequential View or Time View tabs in the TraceX window. Figure 3.4 shows the Sequential View and Time View tabs. FIGURE 3.4 Sequential View Mode The sequential view mode is selected by the Sequential View tab shown in Figure 3.4. This is the default mode. In this mode, events are shown immediately following each other, regardless of the elapsed time between them. Note also the ruler above the display area in Figure 3.4. It shows the relative event number from the beginning of the trace. Express Logic, Inc. 34 Description of TraceX This mode is the default mode and is useful in getting a good overview of what is going on in the system. Time View Mode The time view mode is selected by the Time View button. Figure 3.5 shows the same event trace as Figure 3.4 except in time view mode. In this mode, events are shown in a time relative manner, with the solid green bar being used to show execution between events. This mode is useful to see where the bulk of processing is taking place in the system, which can help developers tune their system for greater performance and/or responsiveness. FIGURE 3.5 User Guide TraceX User Guide 35 Note also the ruler above the event display in Figure 3.5. This ruler shows relative ticks from the beginning of the trace, as derived from the time stamp instrumented in the event trace logging inside of ThreadX. If the time stamps are too close (low frequency timer), the events will run together. Conversely, if the time stamps are too far apart (high frequency timer), then the events will be too far apart. Choosing the right frequency time stamp is an important consideration in making the time relative view meaningful. System Summary Line TraceX also provides a single summary line (the top context in Figure 3.6) that includes all events on the same line. This makes it easy to see an overview of a complex system. The summary bar is especially beneficial in systems that have many threads. Without such a summary line, you would have to Express Logic, Inc. 36 Description of TraceX follow complex system interactions using the vertical scroll bar to follow the context of execution. FIGURE 3.6 The summary line contains a summary of the context as well as the corresponding event summary underneath. In the example shown in Figure 3.6, it is easy to see that thread 2 is executing and interrupted. The interrupt results in preemption by thread 3, thread 6, thread 4, and thread 7, after which thread 2 resumes execution. System Contexts TraceX lists the system contexts on the left-hand side of the display, as shown in Figure 3.7. Events that occur in a particular context are displayed on the horizontal line to the right of that context. In this way, you can easily ascertain which context the event User Guide TraceX User Guide 37 occurred as well as follow that context line to see all the events that occurred in a particular context. The first two context entries are always the Interrupt and Initialize/Idle contexts. Interrupt context represents all system events made from Interrupt Service Routines (ISRs). Initialize/Idle context represents two contexts in ThreadX. Events that occur during tx_application_define, are Initialize events and are displayed on the Initialize/Idle context. If the system is idle and thus no events are occurring, the green bar representing Running in the time view is drawn on the Initialize/Idle context. FIGURE 3.7 In the example in Figure 3.7, there are nine thread contexts, starting from the System Timer Thread context. Additional information about an individual context is available by placing the mouse on that context. The additional information includes the thread’s starting stack address, ending stack Express Logic, Inc. 38 Description of TraceX address, total size, percent used, relative execution percentage, number of suspension, resumptions, and its highest and lowest priority during the trace. Figure 3.8 shows information for thread 0. FIGURE 3.8 Contexts may also be moved to group those of greater interest. This is accomplished by dragging and dropping the context or right-clicking on the context. Right-clicking on the context yields a dialog User Guide TraceX User Guide 39 for moving the context to the top or the bottom. Figure 3.9 shows the reorder dialog for thread 3. FIGURE 3.9 Express Logic, Inc. 40 Description of TraceX Selecting Move to top results in the thread 3 context being moved to the top of the context list, as shown in Figure 3.10. FIGURE 3.10 Thread Status Information When enabled, TraceX displays the status of each thread via a colored line on the thread’s context. A green line indicates that the thread is in a “ready” state, while a line of any other color indicates the thread is suspended. For suspended threads, the color of the line indicates the type of ThreadX object that the thread is suspended on. For example, in Figure 3.11 the green line on the System Timer Thread’s context starting at event 496 shows that the System Timer Thread is ready. Prior to event 496 and after event 502, the absence of the green line User Guide TraceX User Guide 41 indicates that the System Timer Thread is suspended. FIGURE 3.11 There are three modes of thread status display, available via the Options -> Status Lines menu as shown in Figure 3.12. The Ready Only option only shows the ready (green) status lines, but does not display any suspension status lines. This is the default option for TraceX. The All On option enables the display of all status lines (ready and suspension). Express Logic, Inc. 42 Description of TraceX Finally, the All Off option disables the display of all status lines. FIGURE 3.12 Event Information Display TraceX provides detailed information on some 600 run-time events, including ThreadX, FileX, NetX, NetX Duo, and USBX API calls and internal events. TraceX also supports up to an additional 61,439 unique user-defined events. Regardless of whether sequential or time display mode is selected, a mouse-over on any event in the display area results in detailed event information displayed near the event. The mouse-over of event User Guide TraceX User Guide 43 494 in the demonstration demo_threadx.trx trace file is shown in Figure 3.13: FIGURE 3.13 Each event displayed contains standard information about Context and both the Relative Time and Time Stamp. The Context field shows what context the event took place in. There are exactly four contexts: thread, idle, ISR, and initialization. When an event takes place in a thread context, the thread name and its priority at that time is gathered and displayed as shown above. The Relative Time shows the relative number of timer ticks from the beginning of the trace. The Raw Time Stamp displays the raw time source of the event. Finally, all event-specific information is displayed. This information is detailed throughout the remainder of this chapter. Express Logic, Inc. 44 Description of TraceX Detailed event information is also available by double clicking on any event. Double clicking on event 494 is shown in Figure 3.14: FIGURE 3.14 Being able to view multiple events at once gives the user a much richer view of what happened. Seeing them side by side is quite useful since many events are interrelated. This is accomplished by doubleclicking on multiple events. Current Event Display TraceX displays the current event—in a separate window—when selected by the user via View -> Current Event or clicking on the current event button on the toolbar, as shown in Figure 3.15. After selected, TraceX displays the currently selected User Guide TraceX User Guide 45 event in a stand-alone window and refreshes this window whenever another event is selected. For example, Figure 3.16 shows the contents for currently selected event 494. FIGURE 3.15 FIGURE 3.16 Express Logic, Inc. 46 Description of TraceX Event Searching TraceX provides an extensive event search capability. The event ID and information fields of each event are the primary search parameters. Not specifying a value for a search parameter indicates that parameter effectively removes that parameter from of the search. In addition, the search can be done such that any parameter found will satisfy the search or all parameters must be found to satisfy the search. The search may also be restricted to a particular context or cover all contexts in the trace. Invoking the event search is done by selecting the Search by Value button on the toolbar, as shown in Figure 3.17. When selected the search dialog is displayed, which specifies all the parameters for the search. The Next and Previous buttons in the search dialog can then be used to find the next and previous events that match the specified search criteria. Figure 3.18 shows the search dialog. FIGURE 3.17 User Guide TraceX User Guide 47 FIGURE 3.18 Zooming In and Out By default, TraceX displays the events at their full size. You may zoom in or zoom out as desired. Zooming out is useful to see the overall events captured in the trace, while zooming in is useful in conditions where the events overlap because of the resolution of the time stamp source. Figure 3.19 Express Logic, Inc. 48 Description of TraceX shows the demo_threadx.trx file zoomed out so that 100% of the trace file is shown. FIGURE 3.19 When zoomed out at 100% to show the entire trace within the current display page, it is easy to see all the context execution captured in the trace as well as the general events occurring within those contexts. Notice in Figure 3.12 that thread 1 and thread 2 execute most often. The blue coloring for their events also suggests that these threads are making queue service calls (queue events are blue in color). Restoring to a full icon view is equally easy; Either the zoom-in button may be selected repeatedly or some factor of 100 may be entered. User Guide TraceX User Guide 49 Delta Ticks Between Events Determining the number of ticks between various events in TraceX is easy—click on the starting event and drag the mouse to the ending event. The delta number of ticks between the events shows up in the upper right-hand corner of the display, as shown in Figure 3.20. FIGURE 3.20 The delta ticks shown in Figure 3.20 show that 501 ticks have elapsed between event 494 and event 496. This could also be calculated manually by looking at the relative time stamps in each event and subtracting, but using the GUI is easy and instantaneous. Express Logic, Inc. 50 Description of TraceX Actual Time Display When enabled, TraceX displays the actual time in microseconds in Time View and for the various delta time information displayed by TraceX. By default, the actual time display is disabled. To enable the actual time display, the number of ticks per microsecond must be entered via the Options -> Ticks per Microsecond menu selection (the value to enter is determined by the hardware timer source used for the TraceX event logging on the target). Figure 3.21 shows a selection of 80 ticks per microsecond. After this selection, the TraceX tick information is also translated into microseconds, as shown in Figure 3.22. FIGURE 3.21 User Guide TraceX User Guide 51 FIGURE 3.22 Priority Inversions TraceX automatically displays priority inversions detected in the trace file. Priority inversions are defined as conditions where a higher-priority thread is blocked trying to obtain a mutex that is currently owned by a lower-priority thread. This condition is termed deterministic, because the system was set up to operate in this manner. To inform the user, TraceX shows deterministic priority inversion ranges as a light salmon color. TraceX also displays non-deterministic priority inversions. These priority inversions differ from the deterministic priority inversions in that another thread of a different priority level has executed in the middle of what was a deterministic priority inversion, thereby Express Logic, Inc. 52 Description of TraceX making the time within the priority inversion somewhat non-deterministic. This condition is often unknown to the user and can be very serious. In order to alert the user of this condition, TraceX shows non-deterministic priority inversions as a brighter salmon color. Figure 3.23 shows both deterministic and non-deterministic priority inversions. FIGURE 3.23 Figure 3.15 shows a deterministic priority inversion from event 24 through event 27. In this range, the higher-priority thread 0 blocks on a mutex owned by a lower-priority thread 1. At event 27, thread 1 releases the mutex and thus ends the priority inversion. The brighter shaded area shows a non-deterministic priority inversion between event 34 through event 45. What makes this non-deterministic is that while thread 1 holds the mutex that higher-priority thread User Guide TraceX User Guide 53 0 is blocked on, an interrupt occurs that resumes thread 2, which then executes and lengthens the time the system is in priority inversion. This condition can be quite serious and difficult to identify; however, with TraceX it is easily identified. TraceX Multi-Core TraceX Multi-Core is nearly identical to the standard TraceX, with two major additions. First, TraceX MultiCore has the ability to display ThreadX SMP trace events on multiple cores. Second, TraceX Multi-Core introduces a new performance analysis capability. This new capability calculates the CPU Utilization of Express Logic, Inc. 54 Description of TraceX each core. Figure 3.24 shows a trace the standard ThreadX demonstration running on a ThreadX SMP platform. FIGURE 3.24 Especially take note of the core identification on the left side. Each core contains the complete list of contexts such that all activities for all cores may be viewed together. In this example, event number 1501 shows queue receive event in Core 0, the next event 1502 shows a queue send event on Core 1. Also note the new button for generating the CPU Utilization, as pointed to in Figure 3.24. Selecting this button produces a report defined in greater detail in Chapter 4. User Guide 4 CHAPTER 1 TraceX Performance Analysis This chapter describes the TraceX performance analysis tool: 1 Performance Analysis 56 1 Multi-Core CPU Utilization 57 1 Execution Profile 57 1 Popular Services 58 1 Thread Stack Usage 60 1 Performance Statistics 61 1 FileX Statistics 63 1 NetX Statistics 65 1 Trace File Information 66 1 Raw Trace Dump 67 Express Logic, Inc. 56 TraceX Performance Analysis Performance Analysis TraceX provides built-in performance analysis of trace files. Information such as the execution profile, popular services, thread stack usage, and various performance statistics, including FileX and NetX statistics, are readily available. This information is available via the View menu item as show in Figure 4.1. FIGURE 4.1 User Guide TraceX User Guide 57 Multi-Core CPU Utilization Selecting the CPU Utilization button or View -> CPU Utilization presents the TraceX Multi-Core CPU utilization analysis for all cores in the currently loaded trace file. The CPU utilization associated with the sample ThreadX SMP demonstration running on two cores is shown in Figure 4.2. FIGURE 4.2 Execution Profile Selecting the Generate Execution Profile button or View -> Execution Profile presents the TraceX execution profile for the currently loaded trace file. The Express Logic, Inc. 58 TraceX Performance Analysis execution profile associated with the sample ThreadX demonstration trace is shown in Figure 4.3. FIGURE 4.3 The example shown in Figure 4.3 indicates that nearly 49% of the processing time is inside of thread 2 and nearly 47% of the processing time is inside of thread 1 This is logical since the bulk of the trace shows these threads sending and receiving messages. The remaining execution contexts have only a small amount of execution time in this example. Popular Services Selecting View -> Popular Services presents the popular services in the currently loaded trace file. By User Guide TraceX User Guide 59 default, this information is displayed for the entire system. However, the popular services for specific threads are also available. The popular services in the sample ThreadX demonstration trace are shown in Figure 4.4. FIGURE 4.4 The example shown in Figure 4.4 indicates that tx_queue_send and tx_queue_receive are the two most popular services in this trace. This is consistent with the behavior of the standard ThreadX demonstration from which this trace was captured. Express Logic, Inc. 60 TraceX Performance Analysis As mentioned previously, specific threads can be selected for this analysis. Figure 4.5 shows this analysis for thread 3. FIGURE 4.5 Thread Stack Usage Selecting the Generate Thread Stack Usage button or View -> Thread Stack Usage presents the stack usage for each thread in the trace file. This is accomplished by ThreadX including the current thread stack pointer in many of the trace entries in the file. A stack usage of 100% indicates the stack has overflowed and must be corrected in the User Guide TraceX User Guide 61 application. If there is no thread execution within this trace file, the stack usage for that thread is shown at 0%. The thread stack usage in the sample ThreadX demonstration trace is shown in Figure 4.6. FIGURE 4.6 The example shown in Figure 4.5 indicates that most threads in this trace have between 9% and 12% stack usage. Performance Statistics Selecting the Generate Performance Statistics button orView -> Performance Statistics presents the performance statistics of the currently loaded trace file. By default, this information is displayed for the entire system. However, the performance statistics are also available for each specific thread. Express Logic, Inc. 62 TraceX Performance Analysis The performance statistics of the sample ThreadX demonstration trace are shown in Figure 4.7. FIGURE 4.7 The example shown in Figure 4.8 indicates that there were 39 context switches in this trace file, as well as three thread preemptions, 36 thread suspensions, 36 thread resumptions, and seven interrupts. There were no priority inversions found in this trace file. Notice there are two categories of priority inversions, namely, deterministic and nondeterministic. Deterministic priority inversions are priority inversion in which a thread is blocked on a mutex owned by a lower priority thread. An nondeterministic priority inversion is where a different lower priority thread runs during a deterministic priority inversion. The later can cause unforeseen User Guide TraceX User Guide 63 timing behavior in the application and should be studied carefully. FIGURE 4.8 As mentioned previously, specific threads can be selected for this analysis. Figure 4.8 shows this analysis specifically for thread 3. FileX Statistics Selecting View -> FileX Statistics presents the FileX performance statistics of the currently loaded trace file. This information is displayed for the entire system, on all opened media objects. The Express Logic, Inc. 64 TraceX Performance Analysis performance statistics of the sample FileX demonstration trace are shown in Figure 4.9. FIGURE 4.9 The example shown in Figure 4.9 indicates there were 39 media opens, 39 media closes, 39 media flushes, 39 directory reads, 39 directory writes, and 39 directory cache misses. There were also 39 file opens, 39 file closes, 1092 bytes read, 1092 bytes written, 195 logical sector reads, 78 logical sector writes, and 195 logical sector cache misses. User Guide TraceX User Guide 65 NetX Statistics Selecting View -> NetX Statistics presents the NetX performance statistics of the currently loaded trace file. This information is displayed for the entire system. The performance statistics of the sample NetX demonstration trace are shown in Figure 4.10. FIGURE 4.10 Express Logic, Inc. 66 TraceX Performance Analysis The example shown in Figure 4.10 indicates there were no ARP, Ping, or UDP events, but there were 70 IP packets sent, 3,188 IP bytes sent, 69 IP packets received, and 3,156 IP bytes received. There were also eight TCP client connections, nine TCP server connections, nine TCP packets sent, 252 TCP bytes sent, nine TCP packets received, and 252 TCP bytes received. Trace File Information Selecting View -> Trace File Information presents some basic information about the opened trace file. This information includes the byte order of the file, size of the time source, maximum number of bytes for each object name, and the base address of all trace file pointers. Figure 4.11 shows the trace file information for the standard demo_threadx.trx trace file. FIGURE 4.11 User Guide TraceX User Guide 67 Raw Trace Dump Selecting View -> Raw Trace Dump presents a dialog to name the file containing the raw trace dump. After the file name and path are entered, TraceX builds the raw trace file in text format and launches notepad.exe to display it. Figure 4.12 shows the raw trace file dump for the standard demo_threadx.trx trace file. FIGURE 4.12 Express Logic, Inc. 68 TraceX Performance Analysis User Guide 5 CHAPTER 1 Generating Trace Buffers This chapter contains a description about how to build a TraceX event buffer and also describes the underlying format of the buffer. This includes the following: 1 ThreadX Event Trace Support 70 1 Enabling Event Trace 70 1 Defining Time-Stamp Constants 70 1 Exporting the Trace Buffer 72 1 1 Extended Event Trace API 73 Enable event tracing 74 Filter specified events 76 Unfilter specified events 80 Disable event tracing 84 Insert ISR enter event 86 Insert ISR exit event 88 Register trace buffer full application callback 90 Insert user event 92 Express Logic, Inc. 70 Generating Trace Buffers ThreadX Event Trace Support ThreadX provides built-in event trace support for all ThreadX services, thread state changes, and user-defined events. The ThreadX event-trace capability is primarily designed as a post-mortem tool to analyze the last “n” activities in the application. From this information, the developer may spot problems and/or potential targets of optimization. TraceX graphically displays the event trace buffer built by ThreadX. The following describes how to build the buffer and describes the underlying format of the buffer. Enabling Event Trace To enable event trace, define the time-stamp constants, build the ThreadX library with TX_ENABLE_EVENT_TRACE defined, and enable tracing by calling the tx_trace_enable function. Defining Time-Stamp Constants The time-stamp constants are designed to provide the developer control over the time-stamp used in the event trace entries. The two time-stamp constants and their default values are as follows: #ifndef #define #endif #ifndef #define #endif TX_TRACE_TIME_SOURCE TX_TRACE_TIME_SOURCE ++_tx_trace_simulated_time TX_TRACE_TIME_MASK TX_TRACE_TIME_MASK 0xFFFFFFFFUL The above constants are defined in tx_port.h and create a “fake” time-stamp that simply increments by one on each User Guide TraceX User Guide 71 event. The following is an example of an actual timestamp definition: #ifndef #define #endif #ifndef #define #endif TX_TRACE_TIME_SOURCE TX_TRACE_TIME_SOURCE *((ULONG *) 0x0x13000004) TX_TRACE_TIME_MASK TX_TRACE_TIME_MASK 0xFFFFFFFFUL The above constants specify a 32-bit timer that is obtained by reading the address 0x13000004. Most application specific time-stamps should be setup in a similar fashion. Express Logic, Inc. 72 Generating Trace Buffers Exporting the Trace Buffer TraceX needs the trace buffer in a binary, Intel HEX, or Motorola S-Record file format on the host. The easiest way to accomplish this is to stop the target and instruct your debugger to dump the memory area you supplied to tx_trace_enable function into a file on the host. Warning: be careful not to stop the target within a trace gathering code itself. Doing so can cause invalid trace information. If the program is halted within ThreadX, it is best to step over any trace insert macro before dumping the trace buffer. Appendix D shows how to dump the trace buffer from within a variety of development tools. User Guide TraceX User Guide 73 Extended Event Trace API When ThreadX is built with TX_ENABLE_EVENT_TRACE defined, the following new event trace APIs are available to the application: tx_trace_enable Enable event tracing tx_trace_event_filter Filter specified event(s) tx_trace_event_unfilter Unfilter specified event(s) tx_trace_disable Disable event tracing tx_trace_isr_enter_insert Insert ISR enter trace event tx_trace_isr_exit_insert Insert ISR exit trace event tx_trace_buffer_full_notify Register trace buffer full application callback tx_trace_user_event_insert Insert user event Express Logic, Inc. 74 Generating Trace Buffers tx_trace_enable Enable event tracing Enable Event Trace Prototype UINT tx_trace_enable(VOID *trace_buffer_start, ULONG trace_buffer_size, ULONG registry_entries); Description This service enables event tracing inside ThreadX. The trace buffer and the maximum number of ThreadX objects are supplied by the application. The ThreadX library and application must be built with TX_ENABLE_EVENT_TRACE defined in order to use event tracing. Input Parameters trace_buffer_start trace_buffer_size registry_entries Pointer to the start of the user-supplied trace buffer. Total number of bytes in the memory for the trace buffer. The larger the trace buffer, the more entries it is able to store. Number of application ThreadX objects to keep in the trace registry. The registry is used to correlate object addresses with object names. This is highly useful for GUI trace analysis tools. Return Values TX_SUCCESS (0x00) Successful event trace enable. TX_SIZE_ERROR (0x05) Specified trace buffer size is too small. It must be large enough for the trace header, the object registry, and at least one trace entry. User Guide TraceX User Guide TX_NOT_DONE 75 (0x20) Event tracing was already enabled. TX_FEATURE_NOT_ENABLED(0xFF) System was not compiled with trace enabled. Allowed From Initialization and threads Example UCHAR my_trace_buffer[64000]; /* Enable event tracing using the global “my_trace_ buffer” memory and supporting a maximum of 30 ThreadX objects in the registry. */ status = tx_trace_enable(&my_trace_buffer, 64000, 30); /* If status is TX_SUCCESS the event tracing is ena bled. */ See Also tx_trace_event_filter, tx_trace_event_unfilter, tx_trace_disable, tx_trace_isr_enter_insert, tx_trace_isr_exit_insert, tx_trace_buffer_full_notify, tx_trace_user_event_insert Express Logic, Inc. 76 Generating Trace Buffers tx_trace_event_filter Filter specified events Enable Event Trace Prototype UINT tx_trace_event_filter(ULONG event_filter_bits); Description This service filters the specified event(s) from being inserted into the active trace buffer. Note that by default no events are filtered after tx_trace_enable is called. The ThreadX library and application must be built with TX_ENABLE_EVENT_TRACE defined in order to use event tracing. Input Parameters event_filter_bits User Guide Bits that correspond to events to filter. Multiple events may be filtered by simply oring together the appropriate constants. Valid TraceX User Guide 77 constants for this variable are defined as follows: TX_TRACE_ALL_EVENTS TX_TRACE_INTERNAL_EVENTS TX_TRACE_BLOCK_POOL_EVENTS TX_TRACE_BYTE_POOL_EVENTS TX_TRACE_EVENT_FLAGS_EVENTS TX_TRACE_INTERRUPT_CONTROL_EVENT TX_TRACE_MUTEX_EVENTS TX_TRACE_QUEUE_EVENTS TX_TRACE_SEMAPHORE_EVENTS TX_TRACE_THREAD_EVENTS TX_TRACE_TIME_EVENTS TX_TRACE_TIMER_EVENTS FX_TRACE_ALL_EVENTS FX_TRACE_INTERNAL_EVENTS FX_TRACE_MEDIA_EVENTS FX_TRACE_DIRECTORY_EVENTS FX_TRACE_FILE_EVENTS NX_TRACE_ALL_EVENTS NX_TRACE_INTERNAL_EVENTS NX_TRACE_ARP_EVENTS NX_TRACE_ICMP_EVENTS NX_TRACE_IGMP_EVENTS NX_TRACE_IP_EVENTS NX_TRACE_PACKET_EVENTS NX_TRACE_RARP_EVENTS NX_TRACE_TCP_EVENTS NX_TRACE_UDP_EVENTS UX_TRACE_ALL_EVENTS UX_TRACE_ERRORS UX_TRACE_HOST_STACK_EVENTS UX_TRACE_DEVICE_STACK_EVENTS UX_TRACE_HOST_CONTROLLER_EVENTS UX_TRACE_DEVICE_CONTROLLER_EVENTS UX_TRACE_HOST_CLASS_EVENTS UX_TRACE_DEVICE_CLASS_EVENTS 0x000007FF 0x00000001 0x00000002 0x00000004 0x00000008 0x00000010 0x00000020 0x00000040 0x00000080 0x00000100 0x00000200 0x00000400 0x00007800 0x00000800 0x00001000 0x00002000 0x00004000 0x00FF8000 0x00008000 0x00010000 0x00020000 0x00040000 0x00080000 0x00100000 0x00200000 0x00400000 0x00800000 0x7F000000 0x01000000 0x02000000 0x04000000 0x08000000 0x10000000 0x20000000 0x40000000 Return Values TX_SUCCESS (0x00) Successful event filter. TX_FEATURE_NOT_ENABLED(0xFF) System was not compiled with trace enabled. Allowed From Initialization and threads Express Logic, Inc. 78 Generating Trace Buffers Example /* Filter queue and byte pool events from trace buf fer. */ status = tx_trace_event_filter(TX_TRACE_QUEUE_EVENT S | TX_TRACE_BYTE_POOL_EVENTS); /* If status is TX_SUCCESS all queue and byte pool events are filtered. */ See Also tx_trace_enable, tx_trace_event_unfilter, tx_trace_disable, tx_trace_isr_enter_insert, tx_trace_isr_exit_insert, tx_trace_buffer_full_notify, tx_trace_user_event_insert User Guide TraceX User Guide 79 Express Logic, Inc. 80 Generating Trace Buffers tx_trace_event_unfilter Unfilter specified events Enable Event Trace Prototype UINT tx_trace_event_unfilter(ULONG event_unfilter_bits); Description This service unfilters the specified event(s) such that they will be inserted into the active trace buffer. The ThreadX library and application must be built with TX_ENABLE_EVENT_TRACE defined in order to use event tracing. Input Parameters event_unfilter_bits User Guide Bits that correspond to events to unfilter. Multiple events may be unfiltered by simply or-ing together the appropriate constants. TraceX User Guide 81 Valid constants for this variable are defined as follows: TX_TRACE_ALL_EVENTS TX_TRACE_INTERNAL_EVENTS TX_TRACE_BLOCK_POOL_EVENTS TX_TRACE_BYTE_POOL_EVENTS TX_TRACE_EVENT_FLAGS_EVENTS TX_TRACE_INTERRUPT_CONTROL_EVENT TX_TRACE_MUTEX_EVENTS TX_TRACE_QUEUE_EVENTS TX_TRACE_SEMAPHORE_EVENTS TX_TRACE_THREAD_EVENTS TX_TRACE_TIME_EVENTS TX_TRACE_TIMER_EVENTS FX_TRACE_ALL_EVENTS FX_TRACE_INTERNAL_EVENTS FX_TRACE_MEDIA_EVENTS FX_TRACE_DIRECTORY_EVENTS FX_TRACE_FILE_EVENTS NX_TRACE_ALL_EVENTS NX_TRACE_INTERNAL_EVENTS NX_TRACE_ARP_EVENTS NX_TRACE_ICMP_EVENTS NX_TRACE_IGMP_EVENTS NX_TRACE_IP_EVENTS NX_TRACE_PACKET_EVENTS NX_TRACE_RARP_EVENTS NX_TRACE_TCP_EVENTS NX_TRACE_UDP_EVENTS UX_TRACE_ALL_EVENTS UX_TRACE_ERRORS UX_TRACE_HOST_STACK_EVENTS UX_TRACE_DEVICE_STACK_EVENTS UX_TRACE_HOST_CONTROLLER_EVENTS UX_TRACE_DEVICE_CONTROLLER_EVENTS UX_TRACE_HOST_CLASS_EVENTS UX_TRACE_DEVICE_CLASS_EVENTS 0x000007FF 0x00000001 0x00000002 0x00000004 0x00000008 0x00000010 0x00000020 0x00000040 0x00000080 0x00000100 0x00000200 0x00000400 0x00007800 0x00000800 0x00001000 0x00002000 0x00004000 0x00FF8000 0x00008000 0x00010000 0x00020000 0x00040000 0x00080000 0x00100000 0x00200000 0x00400000 0x00800000 0x7F000000 0x01000000 0x02000000 0x04000000 0x08000000 0x10000000 0x20000000 0x40000000 Return Values TX_SUCCESS (0x00) Successful event unfilter. TX_FEATURE_NOT_ENABLED(0xFF) System was not compiled with trace enabled. Allowed From Initialization and threads Express Logic, Inc. 82 Generating Trace Buffers Example /* Un -filter queue and byte pool events from trace buffer. */ statu s = tx_ trace_event_unfilter(TX _TRACE_QUEUE_EVENTS | T X_TRACE_BYTE_POOL_EVENT S); /* If status is TX_SUCCESS a ll queue and byte pool events are un-filtered. See Also tx_trace_enable, tx_trace_event_filter, tx_trace_disable, tx_trace_isr_enter_insert, tx_trace_isr_exit_insert, tx_trace_buffer_full_notify, tx_trace_user_event_insert User Guide */ TraceX User Guide 83 Express Logic, Inc. 84 Generating Trace Buffers tx_trace_disable Disable event tracing Trace Disable Prototype UINT tx_trace_disable(VOID); Description This service disables event tracing inside ThreadX. This can be useful if the application wants to freeze the current event trace buffer and possibly transport it externally during run-time. Once disabled, the tx_trace_enable can be called to start tracing again. The ThreadX library and application must be built with TX_ENABLE_EVENT_TRACE defined in order to use event tracing. Input Parameters None. Return Values TX_SUCCESS (0x00) Successful event trace disable. TX_NOT_DONE (0x20) Event tracing was not enabled. TX_FEATURE_NOT_ENABLED (0xFF) System was not compiled with trace enabled. Allowed From Initialization and threads User Guide TraceX User Guide 85 Example /* Disable event tracing. */ status = tx_trace_disable(); /* If status is TX_SUCCESS the event tracing is disabled. */ See Also tx_trace_enable, tx_trace_event_filter, tx_trace_event_unfilter, tx_trace_isr_enter_insert, tx_trace_isr_exit_insert, tx_trace_buffer_full_notify, tx_trace_user_event_insert Express Logic, Inc. 86 Generating Trace Buffers tx_trace_isr_enter_insert Insert ISR enter event Insert ISR Entry Prototype VOID tx_trace_isr_enter_insert(ULONG isr_id); Description This service inserts the ISR enter event into the event trace buffer. It should be called by the application at the beginning of ISR processing. The supplied parameter should identify the specific ISR to the application. The ThreadX library and application must be built with TX_ENABLE_EVENT_TRACE defined in order to use event tracing. Input Parameters isr_id Application specific value to identify the ISR. Return Values None Allowed From ISRs User Guide TraceX User Guide 87 Example /* Insert trace event to identify the application’s ISR with an ID of 3. */ status = tx_trace_isr_enter_insert(3); /* If status is TX_SUCCESS the ISR entry event was inserted. */ See Also tx_trace_enable, tx_trace_event_filter, tx_trace_event_unfilter, tx_trace_disable, tx_trace_isr_exit_insert, tx_trace_buffer_full_notify, tx_trace_user_event_insert Express Logic, Inc. 88 Generating Trace Buffers tx_trace_isr_exit_insert Insert ISR exit event Insert ISR Exit Prototype VOID tx_trace_isr_exit_insert(ULONG isr_id); Description This service inserts the ISR entry event into the event trace buffer. It should be called by the application at the beginning of ISR processing. The supplied parameter should identify the ISR to the application. The ThreadX library and application must be built with TX_ENABLE_EVENT_TRACE defined in order to use event tracing. Input Parameters isr_id Application specific value to identify the ISR. Return Values None Allowed From ISRs User Guide TraceX User Guide 89 Example /* Insert trace event to identify the application’s ISR with an ID of 3. */ status = tx_trace_isr_exit_insert(3); /* If status is TX_SUCCESS the ISR exit event was inserted. */ See Also tx_trace_enable, tx_trace_event_filter, tx_trace_event_unfilter, tx_trace_disable, tx_trace_isr_enter_insert, tx_trace_buffer_full_notify, tx_trace_user_event_insert Express Logic, Inc. 90 Generating Trace Buffers tx_trace_buffer_full_notify Register trace buffer full application callback Insert ISR Exit Prototype VOID tx_trace_buffer_full_notify(VOID (*full_buffer_callback)(VOID *)); Description This service registers an application callback function that is called by ThreadX when the trace buffer becomes full. The application can then choose to disable tracing and/or possibly setup a new trace buffer. The ThreadX library and application must be built with TX_ENABLE_EVENT_TRACE defined in order to use event tracing. Input Parameters full_buffer_callback Return Values None Allowed From ISRs User Guide Application function to call when the trace buffer is full. A value of NULL disables the notification callback. TraceX User Guide 91 Example y_trace_is_full(void *trace_ buffer_start) { } /* Application speci fic processing goes here! */ /* Register the “my_trace_is_full” function to be c alled whenever the trace buffer fills. */ status = tx_trace_buffer_full_notify(my_trace_is_f ull); /* If status is TX_SUCCESS the “my_trace_is_full” f unction is registered. See Also tx_trace_enable, tx_trace_event_filter, tx_trace_event_unfilter, tx_trace_disable, tx_trace_isr_enter_insert, tx_trace_isr_exit_insert, tx_trace_user_event_insert Express Logic, Inc. */ 92 Generating Trace Buffers tx_trace_user_event_insert Insert user event Insert User Event Prototype UINT tx_trace_user_event_insert(ULONG event_id, ULONG info_field_1, ULONG info_field_2, ULONG info_field_3, ULONG info_field_4); Description This service inserts the user event into the trace buffer. User event IDs must be greater than the constant TX_TRACE_USER_EVENT_START, which is defined to be 4096. The maximum user event is defined by the constant TX_TRACE_USER_EVENT_END, which is defined to be 65535. All events within this range are available to the application.The information fields are application specific. The ThreadX library and application must be built with TX_ENABLE_EVENT_TRACE defined in order to use event tracing. Input Parameters event_id Application-specific event identification and must start be greater than TX_TRACE_USER_EVENT_START and less than or equal to TX_TRACE_USER_EVENT_END. info_field_1 Application-specific information field. info_field_2 Application-specific information field. info_field_3 Application-specific information field. info_field_4 Application-specific information field. Return Values TX_SUCCESS (0x00) Successful user event insert. TX_NOT_DONE (0x20) Event tracing is not enabled. TX_FEATURE_NOT_ENABLED (0xFF) The system was not compiled with trace enabled. User Guide TraceX User Guide 93 Allowed From Initialization and threads Example /* Insert user event 3000, with info fields of 1, 2, 3, 4. status = tx_trace_user_event_insert(3000, 1, 2, 3, 4); /* If status is TX_SUCCESS the user event was inserted. */ */ See Also tx_trace_enable, tx_trace_event_filter, tx_trace_event_unfilter, tx_trace_disable, tx_trace_isr_enter_insert, tx_trace_isr_exit_insert, tx_trace_buffer_full_notify Express Logic, Inc. 94 Generating Trace Buffers User Guide 6 CHAPTER 1 ThreadX Trace Events This chapter describes the ThreadX events. 1 List of Events and Icons 96 1 Event Descriptions 100 Express Logic, Inc. 96 ThreadX Trace Events List of Events and Icons The following is a list of ThreadX events displayed by TraceX: Icon Meaning Internal thread resume Internal thread suspend Interrupt Service Routine (ISR) Enter Interrupt Service Routine (ISR) Exit Internal time-slice Running User-Defined Event (See Chapter 4) Block pool allocate (tx_block_allocate) Block pool create (tx_block_pool_create) Block pool delete (tx_block_pool_delete) Block pool information get (tx_block_pool_info_get) Block pool performance information get (tx_block_pool_performance_info_get) Block pool system performance information get (tx_block_pool_performance_system_info_get) Block pool prioritize (tx_block_pool_prioritize) Block release to pool (tx_block_release) Byte pool allocate memory (tx_byte_allocate) Byte pool create (tx_byte_pool_create) Byte pool delete (tx_byte_pool_delete) Byte pool information get (tx_byte_pool_info_get) User Guide TraceX User Guide 97 Byte pool performance information get (tx_byte_pool_performance_info_get) Byte pool system performance information get (tx_byte_pool_performance_system_info_get) Byte pool prioritize (tx_byte_pool_prioritize) Byte memory release to pool (tx_byte_release) Event flags create (tx_event_flags_create) Event flags delete (tx_event_flags_delete) Event flags get (tx_event_flags_get) Event flags information get (tx_event_flags_info_get) Event flags performance information get (tx_event_flags_performance_info_get) Event flags system performance information get (tx_event_flags_performance_system_info_get) Event flags set (tx_event_flags_set) Event flags set notify (tx_event_flags_set_notify) Interrupt enable/disable (tx_interrupt_control) Mutex create (tx_mutex_create) Mutex delete (tx_mutex_delete) Mutex get (tx_mutex_get) Mutex information get (tx_mutex_info_get) Mutex performance information get (tx_mutex_performance_info_get) Mutex system performance information get (tx_mutex_performance_system_info_get) Mutex prioritize (tx_mutex_prioritize) Express Logic, Inc. 98 ThreadX Trace Events Mutex put (tx_mutex_put) Queue create (tx_queue_create) Queue delete (tx_queue_delete) Queue flush (tx_queue_flush) Queue front send (tx_queue_front_send) Queue information get (tx_queue_info_get) Queue performance information get (tx_queue_performance_info_get) Queue system performance information get (tx_queue_performance_system_info_get) Queue prioritize (tx_queue_prioritize) Queue receive message (tx_queue_receive) Queue send message (tx_queue_send) Queue send notify (tx_queue_send_notify) Semaphore ceiling put (tx_semaphore_ceiling_put) Semaphore create (tx_semaphore_create) Semaphore delete (tx_semaphore_delete) Semaphore get (tx_semaphore_get) Semaphore information get (tx_semaphore_info_get) Semaphore performance information get (tx_semaphroe_performance_info_get) Semaphore system performance information get (tx_semaphore_performance_system_info_get) Semaphore prioritize (tx_semaphore_prioritize) Semaphore put (tx_semaphore_put) User Guide TraceX User Guide 99 Semaphore put notify (tx_semaphore_put_notify) Thread create (tx_thread_create) Thread delete (tx_thread_delete) Thread exit/entry notify (tx_thread_entry_exit_notify) Thread identify (tx_thread_identify) Thread information get (tx_thread_info_get) Thread performance information get (tx_thread_performance_info_get) Thread performance system information get (tx_thread_performance_system_info_get) Thread preemption change (tx_thread_preemption_change) Thread priority change (tx_thread_priority_change) Thread relinquish (tx_thread_relinquish) Thread reset (tx_thread_reset) Thread resume (tx_thread_resume) Thread Sleep (tx_thread_sleep) Thread stack error notify (tx_thread_stack_error_notify) Thread suspend (tx_thread_suspend) Thread terminate (tx_thread_terminate) Thread time-slice change (tx_thread_time_slice_change) Thread wait abort (tx_thread_wait_abort) Time get (tx_time_get) Time set (tx_time_set) Express Logic, Inc. 100 ThreadX Trace Events Timer activate (tx_timer_activate) Timer change (tx_timer_change) Timer create (tx_timer_create) Timer deactivate (tx_timer_deactivate) Timer delete (tx_timer_delete) Timer information get (tx_timer_info_get) Timer performance information get (tx_timer_performance_info_get) Timer performance system information get (tx_timer_performance_system_info_get) Event Descriptions The following describes each individual event. User Guide TraceX User Guide Internal thread resume 101 Internal thread suspend Internal thread resume Internal thread suspend Icon Icon Description Description This event represents the internal processing in ThreadX that resumes a thread for execution. If the specified thread is the highest priority and preemption-threshold does not block its execution, the system will start executing this newly ready thread. This event represents the internal processing in ThreadX that suspends a thread’s execution. The next highest priority thread ready for execution is placed in the fourth information field. If this value is NULL, there is no other thread ready for execution and the system is idle. Information Fields Info Field 1: Pointer to the thread being resumed. Info Field 2: Previous state of the thread being resumed, as follows: TX_READY 0 TX_COMPLETED 1 TX_TERMINATED 2 TX_SUSPENDED 3 TX_SLEEP 4 TX_QUEUE_SUSP 5 TX_SEMAPHORE_SUSP 6 TX_EVENT_FLAG 7 TX_BLOCK_MEMORY 8 TX_BYTE_MEMORY 9 TX_TCP_IP 12 TX_MUTEX_SUSP 13 Info Field 3: Stack pointer value during the call. Info Field 4: Pointer to next highest priority thread to execute. Interrupt Service Routine (ISR) enter Information Fields Info Field 1: Pointer to the thread being suspended. Info Field 2: New state of the thread being suspended, as follows: TX_COMPLETED 1 TX_TERMINATED 2 TX_SUSPENDED 3 TX_SLEEP 4 TX_QUEUE_SUSP 5 TX_SEMAPHORE_SUSP 6 TX_EVENT_FLAG 7 TX_BLOCK_MEMORY 8 TX_BYTE_MEMORY 9 TX_TCP_IP 12 TX_MUTEX_SUSP 13 Info Field 3: Stack pointer value during the call. Info Field 4: Pointer to next highest priority thread to execute. If NULL, the system is idle. Interrupt Service Routine (ISR) exit Enter ISR Exit ISR Icon Icon Description Description This event represents entering an Interrupt Service Routine (ISR) in the application. The interrupt service routine execution continues until the ISR exit event takes place. Information Fields Info Field 1: Stack pointer value during the call. Info Field 2: Application-defined ISR number (optional). Info Field 3: Nested interrupt count. Info Field 4: Internal preemption disable flag. This event represents exiting an Interrupt Service Routine (ISR) in the application. Information Fields Info Field 1: Stack pointer value during the call. Info Field 2: Application-defined ISR number (optional). Info Field 3: Nested interrupt count. Info Field 4: Internal preemption disable flag. Express Logic, Inc. 102 ThreadX Trace Events Internal time-slice Running Internal time-slice Running in context Icon Icon Description Description This event represents the internal processing in ThreadX that performs the time-slice operation. The next thread of the same priority is placed in the first information field. If this value is the same as the current thread, no time-slice was performed. Information Fields Info Field 1: Pointer to the next thread to execute. Info Field 2: Nested interrupt count. Info Field 3: Internal preemption disable flag. Info Field 4: Stack pointer value during the call. Block Allocate This event represents running within a thread context or idle system. It is used to illustrate subsequent changes in context as a result of an interrupt. Information Fields Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Block Pool Create tx_block_allocate tx_block_pool_create Icon Icon Description Description This event represents allocating a memory block via tx_block_allocate. If successful, the address of the block allocated is returned in the second information field. Information Fields Info Field 1: Pointer to the corresponding block pool. Info Field 2: Pointer to the memory block returned (if successful). Info Field 3: The wait option supplied to the tx_block_allocate call. Info Field 4: Remaining available blocks in the pool after this allocation. Block Pool Delete This event represents creating a memory block pool via tx_block_pool_create. Information Fields Info Field 1: Pointer to the corresponding block pool control block. Info Field 2: Pointer to the starting memory area of the pool. Info Field 3: The number of blocks in the pool. Info Field 4: The size of each block in the pool in bytes. Block Pool Information Get tx_block_pool_delete tx_block_pool_info_get Icon Icon Description Description This event represents deleting a memory block pool via tx_block_pool_delete. This event represents getting information about a memory block pool via tx_block_pool_info_get. Information Fields Info Field 1: Pointer to the block pool control block. Info Field 2: Stack pointer value during the call. Info Field 3: Not used. Info Field 4: Not used. User Guide Information Fields Info Field 1: Pointer to the block pool control block. Info Field 2: Stack pointer value during the call. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Block Pool Performance Information Get tx_block_pool_performance_info_get 103 Block Pool Performance System Information Get tx_block_pool_performance_system_info_get Icon Icon Description This event represents getting performance information about a memory block pool via tx_block_pool_performance_info_get. Description This event represents getting performance information about all memory block pools via tx_block_pool_performance_system_info_get. Information Fields Info Field 1: Pointer to the block pool control block. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Block Pool Prioritize Information Fields Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Block Release tx_block_pool_prioritize tx_block_release Icon Icon Description Description This event represents placing the highestpriority suspended thread at the front of the block pool suspension list. If this is done prior to calling tx_block_release, the highest priority suspended thread will receive the released block. Information Fields Info Field 1: Memory block pool pointer. Info Field 2: Number of threads suspended on this block pool. Info Field 3: Stack pointer at the time of the call. Info Field 4: Not used. Byte Allocate This event represents releasing a previously allocated block back to the block pool. Information Fields Info Field 1: Memory block pool pointer. Info Field 2: Pointer to block to release. Info Field 3: Number of threads suspended on this block pool. Info Field 4: Stack pointer at the time of the call. Byte Pool Create tx_byte_allocate tx_byte_pool_create Icon Icon Description Description This event represents allocating memory via tx_byte_allocate. If successful, the address of the memory allocated is returned in the second information field. Information Fields Info Field 1: Pointer to the corresponding byte pool. Info Field 2: Pointer to the memory returned (if successful). Info Field 3: Number of bytes requested. Info Field 4: The wait option supplied to the tx_byte_allocate call. This event represents creating a byte pool via tx_byte_pool_create. Information Fields Info Field 1: Pointer to the corresponding byte pool. Info Field 2: Pointer to the start of the memory area. Info Field 3: Number of bytes in the byte pool. Info Field 4: The stack pointer at the time of the call. Express Logic, Inc. 104 ThreadX Trace Events Byte Pool Information Get Byte Pool Delete tx_byte_pool_delete tx_byte_pool_info_get Icon Icon Description Description This event represents deleting a byte pool via tx_byte_pool_delete. Information Fields This event represents getting byte pool information via tx_byte_pool_info_get. Information Fields Info Field 1: Pointer to the corresponding byte pool. Info Field 2: The stack pointer at the time of the call. Info Field 3: Not used. Info Field 4: Not used. Byte Pool Performance Info Get Info Field 1: Pointer to the corresponding byte pool. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Byte Pool Performance System Info Get tx_byte_pool_performance_info_get tx_byte_pool_performance_system_info_get Icon Icon Description Description This event represents getting byte pool performance information via tx_byte_pool_performance_info_get. Information Fields This event represents getting byte pool performance system information via tx_byte_pool_performance_system_info_get. Information Fields Info Field 1: Pointer to the corresponding byte pool. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Byte Pool Prioritize Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Byte Release tx_byte_pool_prioritize tx_byte_release Icon Icon Description Description This event represents prioritizing the byte pool’s suspension list via tx_byte_pool_prioritize. Information Fields Info Field 1: Pointer to corresponding byte pool. Info Field 2: Number of threads currently suspended on byte pool. Info Field 3: Stack pointer at time of call. Info Field 4: Not used. User Guide This event represents releasing a block of memory allocated from a byte pool via tx_byte_release. Information Fields Info Field 1: Pointer to corresponding byte pool. Info Field 2: Pointer to previously allocated byte pool memory. Info Field 3: Number of threads suspended on this byte pool. Info Field 4: Number of available bytes of memory. TraceX User Guide 105 Event Flags Delete Event Flags Create tx_event_flags_create tx_event_flags_delete Icon Icon Description Description This event represents creating a new event flags group via tx_event_flags_create. Information Fields This event represents deleting an event flags group via tx_event_flags_delete. Information Fields Info Field 1: Pointer to event flags group control block. Info Field 2: Stack pointer at time of call. Info Field 3: Not used. Info Field 4: Not used. Event Flags Get Info Field 1: Pointer to event flags group. Info Field 2: Stack pointer at time of call. Info Field 3: Not used. Info Field 4: Not used. Event Flags Information Get tx_event_flags_get tx_event_flags_info_get Icon Icon Description Description This event represents retrieving event flags from an existing event flags group via tx_event_flags_get. Information Fields Info Field 1: Pointer to event flags group. Info Field 2: Event flags requested. Info Field 3: Event flags currently set in the group. Info Field 4: Option requested on the event flags get. Event Flags Performance Information Get This event represents retrieving information regarding an existing event flags group via tx_event_flags_info_get. Information Fields Info Field 1: Pointer to event flags group. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Event Flags Performance System Info Get tx_event_flags_performance_info_get tx_event_flags_performance_system_info_get Icon Icon Description Description This event represents retrieving performance information regarding an existing event flags group via tx_event_flags_performance_info_get. Information Fields Info Field 1: Pointer to event flags group. Info Field 2: Not used Info Field 3: Not used Info Field 4: Not Used This event represents retrieving performance information regarding an existing event flags group via tx_event_flags_performance_info_get. Information Fields Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 106 ThreadX Trace Events Event Flags Set Event Flags Set Notify tx_event_flags_set tx_event_flags_set_notify Icon Icon Description Description This event represents setting (or clearing) event flags in an existing event flags group via tx_event_flags_set. This event represents registering a notification callback for any event flag set operation on an existing event flags group via tx_event_flags_set_notify. Information Fields Info Field 1: Pointer to event flags group. Info Field 2: Event flags to set (or clear). Info Field 3: AND or OR event flag option. Info Field 4: Number of threads suspended on event flag group. Interrupt Control Information Fields Info Field 1: Pointer to event flags group. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Mutex Create tx_interrupt_control tx_mutex_create Icon Icon Description Description This event represents changing the interrupt lockout posture of the processor via tx_interrupt_control. This event represents creating a mutex via tx_mutex_create. Information Fields Information Fields Info Field 1: New interrupt posture. Info Field 2: Stack pointer at time of call. Info Field 3: Not used. Info Field 4: Not used. Mutex Delete Info Field 1: Pointer to mutex control block. Info Field 2: Priority inheritance option (TX_INHERIT or TX_NO_INHERIT). Info Field 3: Stack pointer at time of call. Info Field 4: Not used. Mutex Get tx_mutex_delete tx_mutex_get Icon Icon Description Description This event represents deleting a mutex via tx_mutex_delete. Information Fields This event represents obtaining a mutex via tx_mutex_get. Information Fields Info Field 1: Pointer to mutex. Info Field 2: Stack pointer at time of call. Info Field 3: Not used. Info Field 4: Not used. User Guide Info Field 1: Pointer to mutex. Info Field 2: The wait option supplied to the tx_mutex_get call. Info Field 3: Pointer to thread that owns the mutex (NULL implies the mutex is not owned). Info Field 4: Number of times the owning thread has called tx_mutex_get. TraceX User Guide Mutex Information Get 107 Mutex Performance Information Get tx_mutex_info_get tx_mutex_performance_info_get Icon Icon Description Description This event represents retrieving mutex information via tx_mutex_info_get. This event represents retrieving mutex performance information via tx_mutex_performance_info_get. Information Fields Information Fields Info Field 1: Pointer to mutex. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Pointer to mutex. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Mutex Performance System Info Get Mutex Prioritize tx_mutex_performance_system_info_get tx_mutex_prioritize Icon Icon Description Description This event represents retrieving mutex system performance information via tx_mutex_performance_system_info_get. This event represents prioritizing the mutex’s suspension list via tx_mutex_prioritize. Information Fields Information Fields Info Field 1: Pointer to corresponding mutex. Info Field 2: Number of threads currently suspended on the mutex. Info Field 3: Stack pointer at time of call. Info Field 4: Not used. Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Mutex Put Queue Create tx_mutex_put tx_queue_create Icon Icon Description Description This event represents releasing a previously owned mutex via tx_mutex_put. Information Fields Info Field 1: Pointer to corresponding mutex. Info Field 2: Pointer of thread owning the mutex. Info Field 3: Number of outstanding mutex get requests. Info Field 4: Stack pointer at time of call. This event represents creating a message queue via tx_queue_create. Information Fields Info Field 1: Pointer to queue control block. Info Field 2: Size of message – in terms of 32-bit words. Info Field 3: Pointer to start of queue memory area. Info Field 4: Number of bytes in the queue memory area. Express Logic, Inc. 108 ThreadX Trace Events Queue Delete Queue Flush tx_queue_delete tx_queue_flush Icon Icon Description Description This event represents deleting a queue via tx_queue_delete. This event represents flushing (clearing all queue contents) of a queue via tx_queue_flush. Information Fields Info Field 1: Pointer to queue. Info Field 2: Stack pointer at time of call. Info Field 3: Not used. Info Field 4: Not used. Queue Front Send Information Fields Info Field 1: Pointer to queue. Info Field 2: Stack pointer at time of call. Info Field 3: Not used. Info Field 4: Not used. Queue Information Get tx_queue_front_send tx_queue_info_get Icon Icon Description Description This event represents sending a message to the front of a queue via tx_queue_front_send. Information Fields Info Field 1: Pointer to queue. Info Field 2: Pointer to start of message. Info Field 3: Wait option supplied to the tx_queue_front_send call. Info Field 4: Number of messages already enqueued. Queue Performance Info Get This event represents getting information about a queue via tx_queue_info_get. Information Fields Info Field 1: Pointer to queue. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Queue Performance System Info Get tx_queue_performance_info_get tx_queue_performance_system_info_get Icon Icon Description Description This event represents getting performance information about a queue via tx_queue_performance_info_get. Information Fields Info Field 1: Pointer to queue. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. User Guide This event represents getting system performance information about all the queues in the system. Information Fields Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide 109 Queue Receive Queue Prioritize tx_queue_prioritize tx_queue_receive Icon Icon Description Description This event represents prioritizing the queue’s suspension list via tx_queue_prioritize. Information Fields This event represents receiving a message from a queue via tx_queue_receive. Information Fields Info Field 1: Pointer to corresponding queue. Info Field 2: Number of threads currently suspended on the queue. Info Field 3: Stack pointer at time of call. Info Field 4: Not used. Queue Send Info Field 1: Pointer to queue. Info Field 2: Pointer to destination for message. Info Field 3: Wait option supplied to the call. Info Field 4: Number of messages currently queued. Queue Send Notify tx_queue_send tx_queue_send_notify Icon Icon Description Description This event represents sending a message to a queue via tx_queue_send. This event represents registering a callback via tx_queue_send_notify which is called whenever a message is sent to a queue. Information Fields Info Field 1: Pointer to queue. Info Field 2: Pointer to message. Info Field 3: Wait option supplied to the call. Info Field 4: Number of messages currently queued. Semaphore Ceiling Put Information Fields Info Field 1: Pointer to queue. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Semaphore Create tx_semaphore_ceiling_put tx_semaphore_create Icon Icon Description Description This event represents putting to a semaphore via tx_semaphore_ceiling_put. This differs from tx_semaphore_put in that the maximum value of the semaphore is examined such that the put operation is not allowed to exceed the maximum value or ceiling. Information Fields This event represents creating a semaphore via tx_semaphore_create. Information Fields Info Field 1: Pointer to semaphore control block. Info Field 2: Initial semaphore count. Info Field 3: Stack pointer at time of call. Info Field 4: Not used. Info Field 1: Pointer to semaphore. Info Field 2: Current semaphore count. Info Field 3: Number of threads suspended on the semaphore. Info Field 4: Ceiling limit supplied to the call. Express Logic, Inc. 110 ThreadX Trace Events Semaphore Delete Semaphore Get tx_semaphore_delete tx_semaphore_get Icon Icon Description Description This event represents deleting a semaphore via tx_semaphore_delete. Information Fields This event represents obtaining a semaphore via tx_semaphore_get. Information Fields Info Field 1: Pointer to semaphore. Info Field 2: Stack pointer at time of call. Info Field 3: Not used. Info Field 4: Not used. Semaphore Information Get Info Field 1: Pointer to semaphore. Info Field 2: Wait option supplied to the call. Info Field 3: Current semaphore count. Info Field 4: Stack pointer at time of call. Semaphore Performance Info Get tx_semaphore_info_get tx_semaphore_performance_info_get Icon Icon Description Description This event represents obtaining information about a semaphore via tx_semaphore_info_get. Information Fields This event represents obtaining performance information about a semaphore via tx_semaphore_performance_info_get. Information Fields Info Field 1: Pointer to semaphore. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Semaphore Performance System Info Info Field 1: Pointer to semaphore. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Semaphore Prioritize tx_semaphore_performance_system_info_get tx_semaphore_prioritize Icon Icon Description Description This event represents obtaining performance information about all semaphores in the system via tx_semaphore_performance_system_info_get. This event represents prioritizing the semaphore’s suspension list via tx_semaphore_prioritize. Information Fields Information Fields Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. User Guide Info Field 1: Pointer to corresponding semaphore. Info Field 2: Number of threads currently suspended on the semaphore. Info Field 3: Stack pointer at time of call. Info Field 4: Not used. TraceX User Guide 111 Semaphore Put Notify Semaphore Put tx_semaphore_put tx_semaphore_put_notify Icon Icon Description Description This event represents releasing a semaphore instance via tx_semaphore_put. This event represents registering a callback via tx_semaphore_put_notify that is called whenever a semaphore instance is put. Information Fields Info Field 1: Pointer to corresponding semaphore. Info Field 2: Current semaphore count. Info Field 3: Number of threads suspended on the semaphore. Info Field 4: Stack pointer at time of call. Thread Create Information Fields Info Field 1: Pointer to semaphore. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Thread Delete tx_thread_create tx_thread_delete Icon Icon Description Description This event represents creating a thread via tx_thread_create. Information Fields This event represents deleting a thread via tx_thread_delete. Information Fields Info Field 1: Pointer to thread control block. Info Field 2: Priority of thread. Info Field 3: Stack pointer for thread. Info Field 4: Size of stack in bytes. Info Field 1: Pointer to thread. Info Field 2: Stack pointer at time of call. Info Field 3: Not used. Info Field 4: Not used. Thread Identify Thread Entry/Exit Notify tx_entry_exit_notify tx_thread_identify Icon Icon Description Description This event represents registering a callback via tx_thread_entry_exit_notify that is called whenever a thread is entered or exits. This event represents getting the current thread pointer via tx_thread_identify. Information Fields Information Fields Info Field 1: Pointer to thread. Info Field 2: Thread state at time of the registration. Info Field 3: Pointer to stack at time of call. Info Field 4: Not used. Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 112 ThreadX Trace Events Thread Performance Information Get Thread Information Get tx_thread_info_get tx_thread_performance_info_get Icon Icon Description Description This event represents getting information about the specified thread via tx_thread_info_get. Information Fields This event represents getting performance information about the specified thread via tx_thread_performance_info_get. Information Fields Info Field 1: Pointer to thread. Info Field 2: State of thread at time of call. Info Field 3: Not used. Info Field 4: Not used. Thread Performance System Info Get Info Field 1: Pointer to thread. Info Field 2: State of thread at time of call. Info Field 3: Not used. Info Field 4: Not used. Thread Preemption Change tx_thread_performance_system_info_get tx_thread_preemption_change Icon Icon Description Description This event represents getting performance information about all threads via tx_thread_performance_system_info_get. Information Fields This event represents changing a thread’s preemption-threshold via tx_thread_preemption_change. Information Fields Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Pointer to thread. Info Field 2: New preemption-threshold. Info Field 3: Previous preemption-threshold. Info Field 4: Thread’s state at time of call. Thread Priority Change Thread Relinquish tx_thread_priority_change tx_thread_relinquish Icon Icon Description Description This event represents changing a thread’s priority via tx_thread_priority_change. This event represents relinquishing the processor from a thread via tx_thread_relinquish. Information Fields Info Field 1: Pointer to thread. Info Field 2: New priority. Info Field 3: Previous priority. Info Field 4: Thread’s state at time of call. User Guide Information Fields Info Field 1: Stack pointer at time of call. Info Field 2: Pointer to the next thread to execute. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Thread Reset 113 Thread Resume tx_thread_reset tx_thread_resume Icon Icon Description Description This event represents resetting a completed or terminated thread via tx_thread_reset. Information Fields This event represents resuming a suspended thread via tx_thread_resume. Information Fields Info Field 1: Pointer to thread. Info Field 2: Thread’s state at time of call. Info Field 3: Not used. Info Field 4: Not used. Thread Sleep Info Field 1: Pointer to thread. Info Field 2: Thread’s state at time of call. Info Field 3: Stack pointer at time of call. Info Field 4: Not used. Thread Stack Error Notify tx_thread_sleep tx_thread_stack_error_notify Icon Icon Description Description This event represents suspending the current thread for a specified number of timer ticks via tx_thread_sleep. Information Fields This event represents registering a thread stack error notification routine via tx_thread_stack_error_notify_event. Information Fields Info Field 1: Number of ticks to suspend for. Info Field 2: Thread’s state at time of call. Info Field 3: Stack pointer at time of call. Info Field 4: Not used. Thread Suspend Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Thread Terminate tx_thread_suspend tx_thread_terminate Icon Icon Description Description This event represents suspending a thread via tx_thread_suspend. Information Fields Info Field 1: Pointer to thread to suspend. Info Field 2: Thread’s state at time of call. Info Field 3: Stack pointer at time of call. Info Field 4: Not used. This event represents terminating a thread via tx_thread_terminate. Information Fields Info Field 1: Pointer to thread to terminate. Info Field 2: Thread’s state at time of call. Info Field 3: Stack pointer at time of call. Info Field 4: Not used. Express Logic, Inc. 114 ThreadX Trace Events Thread Time-Slice Change Thread Wait Abort tx_thread_time_slice_change tx_thread_wait_abort Icon Icon Description Description This event represents changing a thread’s time-slice via tx_thread_time_slice_change. Information Fields This event represents aborting a thread’s suspension via tx_thread_wait_abort. Information Fields Info Field 1: Pointer to thread. Info Field 2: New time-slice. Info Field 3: Previous time-slice. Info Field 4: Not used. Info Field 1: Pointer to thread. Info Field 2: Thread’s state at time of call. Info Field 3: Stack pointer at time of call. Info Field 4: Not used. Time Get Time Set tx_time_get tx_time_set Icon Icon Description Description This event represents getting the current number of timer ticks via tx_time_get. Information Fields This event represents setting the current number of timer ticks via tx_time_set. Information Fields Info Field 1: Current number of timer ticks. Info Field 2: Stack pointer at time of call. Info Field 3: Not used. Info Field 4: Not used. Timer Activate Info Field 1: New number of timer ticks. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Timer Change tx_timer_activate tx_timer_change Icon Icon Description Description This event represents activating the specified timer via tx_timer_activate. Information Fields Info Field 1: Pointer to timer. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. User Guide This event represents changing the specified timer via tx_timer_change. Information Fields Info Field 1: Pointer to timer. Info Field 2: Initial expiration ticks. Info Field 3: Reschedule expiration ticks. Info Field 4: Not used. TraceX User Guide 115 Timer Deactivate Timer Create tx_timer_create tx_timer_deactivate Icon Icon Description Description This event represents creating a timer via tx_timer_create. Information Fields This event represents deactivating a timer via tx_timer_deactivate. Information Fields Info Field 1: Pointer to timer control block. Info Field 2: Initial expiration ticks. Info Field 3: Reschedule expiration ticks. Info Field 4: Automatic enable value—either TX_AUTO_ACTIVATE (1) or TX_NO_ACTIVATE (0). Timer Delete Info Field 1: Pointer to timer. Info Field 2: Stack pointer at time of call. Info Field 3: Not used. Info Field 4: Not used. Timer Information Get tx_timer_delete tx_timer_info_get Icon Icon Description Description This event represents deleting a timer via tx_timer_delete. Information Fields Info Field 1: Pointer to timer. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Timer Performance Information Get This event represents getting timer information via tx_timer_info_get. Information Fields Info Field 1: Pointer to timer. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Timer System Performance Info Get tx_timer_performance_info_get tx_timer_performance_system_info_get Icon Icon Description Description This event represents getting timer performance information via tx_timer_performance_info_get. Information Fields Info Field 1: Pointer to timer. Info Field 2: Stack pointer at time of call. Info Field 3: Not used. Info Field 4: Not used. This event represents getting all timer performance information via tx_timer_performance_system_info_get. Information Fields Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 116 ThreadX Trace Events User Guide 7 CHAPTER 1 FileX Trace Events This chapter contains a description of the FileX events. 1 List of Events and Icons 118 1 Event Descriptions 121 Express Logic, Inc. 118 FileX Trace Events List of Events and Icons The following is a list of FileX events displayed by TraceX. The following describes each event: Icon Meaning Internal Logical Sector Cache Miss Internal Directory Cache Miss Internal Media Flush Internal Directory Entry Read Internal Directory Entry Write Internal I/O Driver Read Internal I/O Driver Write Internal I/O Driver Flush Internal I/O Driver Abort Internal I/O Driver Initialize Internal I/O Driver Boot Read Internal I/O Driver Release Sectors Internal I/O Driver Boot Write Internal I/O Driver Driver Un-initialize Directory Attributes Read (fx_directory_attributes_read) Directory Attributes Set (fx_directory_attributes_set) Directory Create (fx_directory_create) Directory Default Get (fx_directory_default_get) Directory Default Set (fx_directory_default_set) User Guide TraceX User Guide 119 Directory Delete (fx_directory_delete) Directory First Entry Find (fx_directory_first_entry_find) Directory First Full Entry Find (fx_directory_first_full_entry_find) Directory Information Get (fx_directory_information_get) Directory Local Path Clear (fx_directory_local_path_clear) Directory Local Path Get (fx_directory_local_path_get) Directory Local Path Restore (fx_directory_local_path_restore) Directory Local Path Set (fx_directory_local_path_set) Directory Long Name Get (fx_directory_long_name_get) Directory Name Test (fx_directory_name_test) Directory Next Entry Find (fx_directory_next_entry_find) Directory Next Full Entry Find (fx_directory_next_full_entry_find) Directory Rename (fx_directory_rename) Directory Short Name Get (fx_directory_short_name_get) File Allocate (fx_file_allocate) File Attributes Read (fx_file_attributes_read) File Attributes Set (fx_file_attributes_set) File Best Effort Allocate (fx_file_best_effort_allocate) File Close (fx_file_close) File Create (fx_file_create) File Date Time Set (fx_file_date_time_set) File Delete (fx_file_delete) Express Logic, Inc. 120 FileX Trace Events File Open (fx_file_open) File Read (fx_file_read) File Relative Seek (fx_file_relative_seek) File Rename (fx_file_rename) File Seek (fx_file_seek) File Truncate (fx_file_truncate) File Truncate Release (fx_file_truncate_release) File Write (fx_file_write) Media Abort (fx_media_abort) Media Cache Invalidate (fx_media_cache_invalidate) Media Check (fx_media_check) Media Close (fx_media_close) Media Flush (fx_media_flush) Media Format (fx_media_format) Media Open (fx_media_open) Media Read (fx_media_read) Media Space Available (fx_media_space_available) Media Volume Get (fx_media_volume_get) Media Volume Set (fx_media_volume_set) Media Write (fx_media_write) System Date Get (fx_system_date_get) System Date Set (fx_system_date_set) User Guide TraceX User Guide 121 System Initialize (fx_system_initialize) System Time Get (fx_system_time_get) System Time Set (fx_system_time_set) Unicode Directory Create (fx_unicode_directory_create) Unicode Directory Rename (fx_unicode_directory_rename) Unicode File Create (fx_unicode_file_create) Unicode File Rename (fx_unicode_file_rename) Unicode Lenght Get (fx_unicode_length_get) Unicode Name Get (fx_unicode_name_get) Unicode Short Name Get (fx_unicode_short_name_get) Event Descriptions The following describes each individual event. Express Logic, Inc. 122 FileX Trace Events Internal Directory Cache Miss Internal Directory Entry Read Internal directory cache miss Internal directory entry read Icon Icon Description Description This event represents an internal FileX directory cache miss. Information Fields This event represents an internal FileX directory entry read event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Total misses. Info Field 3: Not used. Info Field 4: Not used. Internal Directory Entry Write Info Field 1: Pointer to the media. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Internal I/O Driver Abort Internal directory entry write Internal I/O driver abort Icon Icon Description Description This event represents an internal FileX directory entry write event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Internal I/O Driver Boot Sector Read This event represents an internal FileX I/O driver abort event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Internal I/O Driver Boot Sector Write Internal I/O driver boot sector read Internal I/O driver boot sector write Icon Icon Description Description This event represents an internal FileX I/O driver boot sector read event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Buffer pointer. Info Field 3: Not used. Info Field 4: Not used. User Guide This event represents an internal FileX I/O driver boot sector write event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Buffer pointer. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Internal I/O Driver Flush 123 Internal I/O Driver Un-initialize Internal I/O driver flush Internal I/O driver un-initialize Icon Icon Description Description This event represents an internal FileX I/O driver flush event. Information Fields This event represents an internal FileX I/O driver un-initialize event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Internal I/O Driver Initialize Info Field 1: Pointer to the media. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Internal I/O Driver Read Internal I/O driver initialize Internal I/O driver read Icon Icon Description Description This event represents an internal FileX I/O driver initialize event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Internal I/O Driver Release Sectors This event represents an internal FileX I/O driver read event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Sector. Info Field 3: Number of sectors. Info Field 4: Buffer pointer. Internal I/O Driver Write Internal I/O driver release sectors Internal I/O driver write Icon Icon Description Description This event represents an internal FileX I/O driver release sectors event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Sector. Info Field 3: Number of sectors. Info Field 4: Not used. This event represents an internal FileX I/O driver write event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Sector. Info Field 3: Number of sectors. Info Field 4: Buffer pointer. Express Logic, Inc. 124 FileX Trace Events Internal Logical Sector Cache Miss Internal Media Flush Internal logical sector cache miss Internal media flush Icon Icon Description Description This event represents an internal FileX logical sector cache miss. Information Fields This event represents an internal FileX media flush. Information Fields Info Field 1: Pointer to the media. Info Field 2: Sector. Info Field 3: Total misses. Info Field 4: Cache size. File Attributes Read Info Field 1: Pointer to the media. Info Field 2: Number of dirty sectors. Info Field 3: Not used. Info Field 4: Not used. File Attributes Set fx_file_attributes_read fx_file_attributes_set Icon Icon Description Description This event represents a file attributes read event. Information Fields This event represents a file attributes set event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Attributes bit map: Read Only (0x01) Hidden (0x02) System (0x04) Volume (0x08) Directory (0x10) Archive (0x20) Info Field 3: Not used. Info Field 4: Not used. File Best Effort Allocate Info Field 1: Pointer to the media. Info Field 2: Pointer to file name. Info Field 3: Attributes bit map: Read Only (0x01) Hidden (0x02) System (0x04) Archive (0x20) Info Field 4: Not used. File Close fx_file_best_effort_allocate fx_file_close Icon Icon Description Description This event represents a file best effort allocate event. This event represents a file close event. Information Fields Information Fields Info Field 1: Pointer to the file. Info Field 2: Requested size. Info Field 3: Actual size allocated. Info Field 4: Not used. User Guide Info Field 1: Pointer to the file. Info Field 2: File size. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Directory Default Set 125 Directory Delete fx_directory_default_set fx_directory_delete Icon Icon Description Description This event represents a directory default set event. Information Fields This event represents a directory delete event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to new default path name. Info Field 3: Not used. Info Field 4: Not used. Directory First Entry Find Info Field 1: Pointer to the media. Info Field 2: Pointer to directory name. Info Field 3: Not used. Info Field 4: Not used. Directory First Full Entry Find fx_directory_first_entry_find fx_directory_first_full_entry_find Icon Icon Description Description This event represents a directory first entry find event. Information Fields This event represents a directory first full entry find event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to directory name. Info Field 3: Not used. Info Field 4: Not used. Directory Information Get Info Field 1: Pointer to the media. Info Field 2: Pointer to directory name. Info Field 3: Not used. Info Field 4: Not used. Directory Local Path Clear fx_directory_information_get fx_directory_local_path_clear Icon Icon Description Description This event represents a directory information get event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to directory name. Info Field 3: Not used. Info Field 4: Not used. This event represents a directory local path clear event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 126 FileX Trace Events Directory Local Path Get Directory Local Path Restore fx_directory_local_path_get event fx_directory_local_path_restore event Icon Icon Description Description This event represents a directory local path get event. Information Fields This event represents a directory local path restore event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to return path name. Info Field 3: Not used. Info Field 4: Not used. Directory Local Path Set Info Field 1: Pointer to the media. Info Field 2: Pointer to local path structure. Info Field 3: Not used. Info Field 4: Not used. Directory Long Name Get fx_directory_local_path_set fx_directory_long_name_get Icon Icon Description Description This event represents a directory local path set event. Information Fields This event represents a directory long name get event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to local path structure. Info Field 3: Pointer to new path name. Info Field 4: Not used. Directory Name Test Info Field 1: Pointer to the media. Info Field 2: Pointer to short file name. Info Field 3: Pointer to long file name. Info Field 4: Not used. Directory Next Entry Find fx_directory_name_test fx_directory_next_entry_find Icon Icon Description Description This event represents a directory name test event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to directory name. Info Field 3: Not used. Info Field 4: Not used. User Guide This event represents a directory next entry find event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to directory name. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Directory Next Full Entry Find 127 Directory Rename fx_directory_next_full_entry_find event fx_directory_rename event Icon Icon Description Description This event represents a directory next full entry find event. Information Fields This event represents a directory rename event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to directory name. Info Field 3: Not used. Info Field 4: Not used. Directory Short Name Get Info Field 1: Pointer to the media. Info Field 2: Pointer to old directory name. Info Field 3: Pointer to new directory name. Info Field 4: Not used. File Allocate fx_directory_short_name_get fx_file_allocate Icon Icon Description Description This event represents a directory short name get event. This event represents a file allocate event. Information Fields Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to long file name. Info Field 3: Pointer to short file name. Info Field 4: Not used. File Create Info Field 1: Pointer to the file. Info Field 2: Requested size. Info Field 3: Current size. Info Field 4: New size. File Date Time Set fx_file_create fx_file_date_time_set Icon Icon Description Description This event represents a file create event. This event represents a file date/time set event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to file name. Info Field 3: Not used. Info Field 4: Not used. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to file name. Info Field 3: Year. Info Field 4: Month. Express Logic, Inc. 128 FileX Trace Events File Open File Delete fx_file_delete fx_file_open Icon Icon Description Description This event represents a file delete event. Information Fields This event represents a file open event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to file name. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Pointer to the media. Info Field 2: Pointer to the file control block. Info Field 3: Pointer to file name. Info Field 4: Open type: Open for Read (0x00) Open for Write (0x01) Fast Open for Read (0x02) File Read File Relative Seek fx_file_read fx_file_relative_seek Icon Icon Description Description This event represents a file read event. This event represents a file relative seek event. Information Fields Information Fields Info Field 1: Pointer to the file. Info Field 2: Buffer pointer. Info Field 3: Request size. Info Field 4: Actual size read. Info Field 1: Pointer to the file. Info Field 2: Byte offset. Info Field 3: Seek from: From Beginning From End Forward Backward Info Field 4: Previous offset. File Rename (0x00) (0x01) (0x02) (0x03) File Seek fx_file_rename fx_file_seek Icon Icon Description Description This event represents a file rename event. Information Fields This event represents a file seek event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to old file name. Info Field 3: Pointer to new file name. Info Field 4: Not used. User Guide Info Field 1: Pointer to the file. Info Field 2: Byte offset. Info Field 3: Previous offset. Info Field 4: Not used. TraceX User Guide 129 File Truncate Release File Truncate fx_file_truncate fx_file_truncate_release Icon Icon Description Description This event represents a file truncate event. This event represents a file truncate release event. Information Fields Information Fields Info Field 1: Pointer to the file. Info Field 2: Requested size. Info Field 3: Previous size. Info Field 4: New size. Info Field 1: Pointer to the file. Info Field 2: Requested size. Info Field 3: Previous size. Info Field 4: New size. File Write Media Abort fx_file_write fx_media_abort Icon Icon Description Description This event represents a file write event. Information Fields This event represents a media abort event. Information Fields Info Field 1: Pointer to the file. Info Field 2: Buffer pointer. Info Field 3: Request size. Info Field 4: Actual size written. Media Cache Invalidate Info Field 1: Pointer to the media. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Media Check fx_media_cache_invalidate fx_media_check Icon Icon Description Description This event represents a media cache invalidate event. This event represents a media check event. Information Fields Information Fields Info Field 1: Pointer to the media. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Pointer to the media. Info Field 2: Scratch memory pointer. Info Field 3: Scratch memory size. Info Field 4: Errors bit map: FAT Chain Error (0x01) Directory Error (0x02) Lost Cluster Error (0x04) File Size Error (0x08) Express Logic, Inc. 130 FileX Trace Events Media Flush Media Close fx_media_close fx_media_flush Icon Icon Description Description This event represents a media close event. Information Fields This event represents a media flush event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Pointer to the media. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Media Format Media Open fx_media_format fx_media_open Icon Icon Description Description This event represents a media format event. Information Fields This event represents a media open event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Number of root entries. Info Field 3: Sectors. Info Field 4: Sectors per cluster. Info Field 1: Pointer to the media. Info Field 2: Pointer to media driver entry. Info Field 3: Memory pointer. Info Field 4: Memory size. Media Read Media Space Available fx_media_read fx_media_space_available Icon Icon Description Description This event represents a media read event. This event represents a media space available event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Logical sector. Info Field 3: Buffer pointer. Info Field 4: Bytes read. User Guide Information Fields Info Field 1: Pointer to the media. Info Field 2: Available bytes pointer. Info Field 3: Number of free clusters. Info Field 4: Not used. TraceX User Guide Media Volume Get 131 Media Volume Set fx_media_volume_get fx_media_volume_set Icon Icon Description Description This event represents a media volume get event. Information Fields This event represents a media volume set event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to volume name. Info Field 3: Volume source. Info Field 4: Not used. Media Write Info Field 1: Pointer to the media. Info Field 2: Pointer to volume name. Info Field 3: Not used. Info Field 4: Not used. System Date Get fx_media_write fx_system_date_get Icon Icon Description Description This event represents a media write event. This event represents a system date get event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Logical sector. Info Field 3: Buffer pointer. Info Field 4: Bytes written. System Date Set Information Fields Info Field 1: Year. Info Field 2: Month. Info Field 3: Day. Info Field 4: Not used. System Initialize fx_system_date_set fx_system_initialize Icon Icon Description Description This event represents a system date set event. Information Fields Info Field 1: Year. Info Field 2: Month. Info Field 3: Day. Info Field 4: Not used. This event represents a system initialize event. Information Fields Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 132 FileX Trace Events System Time Get System Time Set fx_system_time_get fx_system_time_set Icon Icon Description Description This event represents a system time get event. Information Fields This event represents a system time set event. Information Fields Info Field 1: Hour. Info Field 2: Minute. Info Field 3: Second. Info Field 4: Not used. Info Field 1: Hour. Info Field 2: Minute. Info Field 3: Second. Info Field 4: Not used. Unicode Directory Create Unicode Directory Rename fx_unicode_directory_create fx_unicode_directory_rename Icon Icon Description Description This event represents a Unicode directory create event. Information Fields This event represents a Unicode directory rename event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to Unicode name. Info Field 3: Size of Unicode name. Info Field 4: Pointer to short name. Unicode File Create Info Field 1: Pointer to the media. Info Field 2: Pointer to Unicode name. Info Field 3: Size of Unicode name. Info Field 4: Pointer to short name. Unicode File Rename fx_unicode_file_create fx_unicode_file_rename Icon Icon Description Description This event represents a Unicode file create event. Information Fields This event represents a Unicode file rename event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to the Unicode name. Info Field 3: Size of Unicode name. Info Field 4: Pointer to short name. User Guide Info Field 1: Pointer to the media. Info Field 2: Pointer to Unicode name. Info Field 3: Size of Unicode name. Info Field 4: Pointer to short name. TraceX User Guide Unicode Length Get 133 Unicode Name Get fx_unicode_lenght_get fx_unicode_name_get Icon Icon Description Description This event represents a Unicode length get event. Information Fields This event represents a Unicode name get event. Information Fields Info Field 1: Pointer to the Unicode name. Info Field 2: Length. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Pointer to the media. Info Field 2: Source short name. Info Field 3: Destination Unicode name pointer. Info Field 4: Destination Unicode name length. Unicode Short Name Get fx_unicode_short_name_get Icon Description This event represents a Unicode short name get event. Information Fields Info Field 1: Pointer to the media. Info Field 2: Pointer to source Unicode name. Info Field 3: Length of Unicode name. Info Field 4: Pointer to short name. Express Logic, Inc. 134 FileX Trace Events User Guide 8 CHAPTER 1 NetX Trace Events This chapter contains a description of the NetX events. 1 List of Events and Icons 136 1 Event Descriptions 143 Express Logic, Inc. 136 NetX Trace Events List of Events and Icons The following is a list of NetX events displayed by TraceX. Icon Meaning Internal ARP Request Receive Internal ARP Request Send Internal ARP Response Receive Internal ARP Response Send Internal ICMP Receive Internal ICMP Send Internal NetX IGMP Receive Internal IP Receive Internal IP Send Internal TCP Data Receive Internal TCP Data Send Internal TCP FIN Receive Internal TCP FIN Send Internal TCP RST Receive Internal TCP RST Send Internal TCP SYN Receive Internal TCP SYN Send Internal UDP Receive Internal UDP Send User Guide TraceX User Guide 137 Internal RARP Receive Internal RARP Send Internal TCP Retry Internal TCP State Change Internal I/O Driver Packet Send Internal I/O Driver Initialize Internal I/O Driver Link Enable Internal I/O Driver Link Disable Internal I/O Driver Packet Broadcast Internal I/O Driver ARP Send Internal I/O Driver ARP Response Send Internal I/O Driver RARP Send Internal I/O Driver Multicast Join Internal I/O Driver Multicast Leave Internal I/O Driver Get Status Internal I/O Driver Get Speed Internal I/O Driver Get Duplex Type Internal I/O Driver Get Error Count Internal I/O Driver Get RX Count Internal I/O Driver Get TX Count Internal I/O Driver Get Allocation Errors Internal I/O Driver Un-initialize Express Logic, Inc. 138 NetX Trace Events Internal I/O Driver Deferred Processing ARP Dynamic Entries Invalidate (nx_arp_dynamic_entries_invalidate) ARP Dynamic Entry Set (nx_arp_dynamic_entry_set) ARP Enable (nx_arp_enable) ARP Gratuitous Send (nx_arp_gratuitous_send) ARP Hardware Address Find (nx_arp_hardware_address_find) ARP Information Get (nx_arp_info_get) ARP IP Address Find (nx_arp_ip_address_find) ARP Static Entries Delete (nx_arp_static_entries_delete) ARP Static Entry Create (nx_arp_static_entry_create) ARP Static Entry Delete (nx_arp_static_entry_delete) Duo Cache Entry Delete (nxd_nd_cache_entry_delete) Duo Cache Entry Set (nxd_nd_cache_entry_set) Duo Cache Invalidate (nxd_nd_cache_invalidate) Duo Cache IP Address Find (nxd_nd_cache_ip_address_find) Duo ICMP Enable (nxd_icmp_enable) Duo ICMP IPv6 Ping (nxd_icmp_ping) Duo IP Max Payload Size Find (nx_max_payload_size_find) Duo IP Raw Packet Send (nxd_ip_raw_packet_send) Duo IPv6 Default Router Add (nxd_ipv6_default_router_add) Duo IPv6 Default Router Delete (nxd_ipv6_default_router_delete) Duo IPv6 Enable (nxd_ipv6_enable) User Guide TraceX User Guide 139 Duo IPv6 Global Address Get (nxd_ipv6_global_address_get) Duo IPv6 Global Address Set (nxd_ipv6_global_address_set) Duo IPv6 Initiate Dad Process (nxd_ipv6_initiate_dad_process) Duo IPv6 Interface Address Get (nxd_ipv6_interface_address_get) Duo IPv6 Interface Address Set (nxd_ipv6_interface_address_set) Duo IPv6 Link Local Address Get (nxd_ipv6_linklocal_address_get) Duo IPv6 Link Local Address Set (nxd_ipv6_linklocal_address_set) Duo IPv6 Raw Packet Send (nxd_ipv6_raw_packet_send) Duo TCP Socket Peer Info Get (nxd_tcp_socket_peer_info_get) Duo TCP Socket Set Interface (nxd_tcp_socket_set_interface) Duo UDP Socket Send (nxd_udp_socket_send) Duo UDP Socket Set Interface (nxd_udp_socket_set_interface) Duo UDP Source Extract (nxd_udp_source_extract) ICMP Enable (nx_icmp_enable) ICMP Information Get (nx_icmp_info_get) ICMP Ping (nx_icmp_ping) IGMP Enable (nx_igmp_enable) IGMP Information Get (nx_igmp_info_get) IGMP Loopback Disable (nx_igmp_loopback_disable) IGMP Loopback Enable (nx_igmp_loopback_enable) IGMP Multicast Join (nx_igmp_multicast_join) IGMP Multicast Leave (nx_igmp_multicast_leave) Express Logic, Inc. 140 NetX Trace Events IP Address Change Notify (nx_ip_address_change_notify) IP Address Get (nx_ip_address_get) IP Address Set (nx_ip_address_set) IP Create (nx_ip_create) IP Delete (nx_ip_delete) IP Driver Direct Command (nx_ip_driver_direct_command) IP Forwarding Disable (nx_ip_forwarding_disable) IP Forwarding Enable (nx_ip_forwarding_enable) IP Fragment Disable (nx_ip_fragment_disable) IP Fragment Enable (nx_ip_fragment_enable) IP Gateway Address Set (nx_ip_gateway_address_set) IP Information Get (nx_ip_info_get) IP Interface Attach (nx_ip_interface_attach) IP Interface Info Get (nx_ip_interface_info_get) IP Raw Packet Disable (nx_ip_raw_packet_disable) IP Raw Packet Enable (nx_ip_raw_packet_enable) IP Raw Packet Receive (nx_ip_raw_packet_receive) IP Raw Packet Send (nx_ip_raw_packet_send) IP Status Check (nx_ip_status_check) IP Static Route Add (nx_ip_static_route_add) IP Static Route Delete (nx_ip_static_route_delete) IPSEC Enable (nx_ipsec_enable) User Guide TraceX User Guide 141 Packet Allocate (nx_packet_allocate) Packet Copy (nx_packet_copy) Packet Data Append (nx_packet_data_append) Packet Data Extract Offset (nx_packet_data_extract_offset) Packet Data Retrieve (nx_packet_data_retrieve) Packet Length Get (nx_packet_length_get) Packet Pool Create (nx_packet_pool_create) Packet Pool Delete (nx_packet_pool_delete) Packet Pool Information Get (nx_packet_pool_info_get) Packet Release (nx_packet_release) Packet Transmit Release (nx_packet_transmit_release) RARP Disable (nx_rarp_disable) RARP Enable (nx_rarp_enable) RARP Information Get (nx_rarp_info_get) System Initialize (nx_system_initialize) TCP Client Socket Bind (nx_tcp_client_socket_bind) TCP Client Socket Connect (nx_tcp_client_socket_connect) TCP Client Socket Port Get (nx_tcp_client_socket_port_get) TCP Client Socket Unbind (nx_tcp_client_socket_unbind) TCP Enable (nx_tcp_enable) TCP Free Port Find (nx_tcp_free_port_find) TCP Information Get (nx_tcp_info_get) TCP Server Socket Accept (nx_tcp_server_socket_accept) Express Logic, Inc. 142 NetX Trace Events TCP Server Socket Listen (nx_tcp_server_socket_listen) TCP Server Socket Relisten (nx_tcp_server_socket_relisten) TCP Server Socket Unaccept (nx_tcp_server_socket_unaccept) TCP Server Socket Unlisten (nx_tcp_server_socket_unlisten) TCP Socket Bytes Available (nx_tcp_socket_bytes_available) TCP Socket Create (nx_tcp_socket_create) TCP Socket Delete (nx_tcp_socket_delete) TCP Socket Disconnect (nx_tcp_socket_disconnect) TCP Socket Information Get (nx_tcp_socket_info_get) TCP Socket MSS Get (nx_tcp_socket_mss_get) TCP Socket MSS Peer Get (nx_tcp_socket_mss_peer_get) TCP Socket MSS Set (nx_tcp_socket_mss_set) TCP Socket Peer Info Get (nx_tcp_socket_peer_info_get) TCP Socket Receive (nx_tcp_socket_receive) TCP Socket Receive Notify (nx_tcp_socket_receive_notify) TCP Socket Send (nx_tcp_socket_send) TCP Socket State Wait (nx_tcp_socket_state_wait) TCP Socket Transmit Configure (nx_tcp_socket_transmit_configure) TCP Socket Window Update Notify Set (nx_tcp_socket_window_update_notify_set) UDP Enable (nx_udp_enable) UDP Free Port Find (nx_udp_free_port_find) UDP Information Get (nx_udp_info_get) User Guide TraceX User Guide 143 UDP Socket Bind (nx_udp_socket_bind) UDP Socket Bytes Available (nx_udp_socket_bytes_available) UDP Socket Checksum Disable (nx_udp_socket_checksum_disable) UDP Socket Checksum Enable (nx_udp_socket_checksum_enable) UDP Socket Create (nx_udp_socket_create) UDP Socket Delete (nx_udp_socket_delete) UDP Socket Information Get (nx_udp_socket_info_get) UDP Socket Interface Set (nx_udp_socket_interface_set) UDP Socket Port Get (nx_udp_socket_port_get) UDP Socket Receive (nx_udp_socket_receive) UDP Socket Receive Notify (nx_udp_socket_receive_notify) UDP Socket Send (nx_udp_socket_send) UDP Socket Unbind (nx_udp_socket_unbind) UDP Source Extract (nx_udp_source_extract) Event Descriptions The following pages describe the NetX Trace Events. Express Logic, Inc. 144 NetX Trace Events Internal ARP Request Receive Internal ARP Request Send Internal ARP request receive Internal ARP request send Icon Icon Description Description This event represents an internal NetX ARP request receive event. Information Fields This event represents an internal NetX ARP request send event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Source IP address Info Field 3: Pointer to packet Info Field 4: Not used Internal ARP Response Receive Info Field 1: Pointer to the IP instance Info Field 2: Destination IP address Info Field 3: Pointer to packet Info Field 4: Not used Internal ARP Response Send Internal ARP Response Receive Internal ARP response send Icon Icon Description Description This event represents an internal NetX ARP response receive event. Information Fields This event represents an internal NetX response send event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Source IP address Info Field 3: Pointer to packet Info Field 4: Not used Internal ICMP Receive Info Field 1: Pointer to the IP instance Info Field 2: Destination IP address Info Field 3: Pointer to packet Info Field 4: Not used Internal ICMP Send Internal ICMP receive Internal ICMP send Icon Icon Description Description This event represents an internal NetX ICMP receive event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Source IP address Info Field 3: Pointer to packet Info Field 4: Word 0 of ICMP header User Guide This event represents an internal NetX ICMP send event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Destination IP address Info Field 3: Pointer to packet Info Field 4: Word 0 of ICMP header TraceX User Guide Internal IGMP Receive 145 Internal IP Receive Internal IGMP receive Internal IP receive Icon Icon Description Description This event represents an internal NetX IGMP receive event. Information Fields This event represents an internal NetX IP receive event. Information Fields Info Field 1: IP Pointer Info Field 2: Source IP address Info Field 3: Pointer to packet Info Field 4: Word 0 of IGMP header Internal IP Send Info Field 1: Pointer to the IP instance Info Field 2: Source IP address Info Field 3: Pointer to packet Info Field 4: Packet length Internal TCP Data Receive Internal IP send Internal TCP data receive Icon Icon Description Description This event represents an internal NetX IP send event. Information Fields This event represents an internal NetX TCP data receive event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Destination IP address Info Field 3: Pointer to packet Info Field 4: Packet length Internal TCP Data Send Info Field 1: Pointer to the IP instance Info Field 2: Source IP address Info Field 3: Pointer to packet Info Field 4: Receive sequence number Internal TCP FIN Receive Internal TCP data send Internal TCP FIN receive Icon Icon Description Description This event represents an internal NetX TCP data send event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to socket Info Field 3: Pointer to packet Info Field 4: Transmit sequence number This event represents an internal NetX TCP FIN receive event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to socket Info Field 3: Pointer to packet Info Field 4: Receive sequence number Express Logic, Inc. 146 NetX Trace Events Internal TCP RST Receive Internal TCP FIN Send Internal TCP FIN send Internal TCP RST receive Icon Icon Description Description This event represents an internal NetX TCP FIN send event. Information Fields This event represents an internal NetX TCP reset receive event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to socket Info Field 3: Pointer to packet Info Field 4:Transmit sequence number Internal TCP RST Send Info Field 1: Pointer to the IP instance. Info Field 2: Pointer to socket. Info Field 3: Pointer to packet. Info Field 4: Receive sequence number. Internal TCP SYN Receive Internal TCP RST send Internal TCP data receive Icon Icon Description Description This event represents an internal NetX TCP reset send event. Information Fields This event represents an internal NetX TCP SYN receive event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to socket Info Field 3: Pointer to packet Info Field 4: Transmit sequence number Internal TCP SYN Send Info Field 1: Pointer to the IP instance Info Field 2: Pointer to socket Info Field 3: Pointer to packet Info Field 4: Receive sequence number Internal UDP Receive Internal TCP SYN send Internal UDP receive Icon Icon Description Description This event represents an internal NetX TCP SYN send event. Information Fields This event represents an internal NetX UDP receive event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to socket Info Field 3: Pointer to packet Info Field 4: Transmit sequence number User Guide Info Field 1: Pointer to the IP instance Info Field 2: Pointer to socket Info Field 3: Pointer to packet Info Field 4: Word 0 of UDP header TraceX User Guide Internal UDP Send 147 Internal RARP Receive Internal UDP send Internal RARP receive Icon Icon Description Description This event represents an internal NetX UDP send event. Information Fields This event represents an internal NetX RARP receive event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to socket Info Field 3: Pointer to packet Info Field 4: Word 0 of UDP header Internal RARP Send Info Field 1: Pointer to the IP instance Info Field 2: Target IP address Info Field 3: Pointer to packet Info Field 4: Word 1 of RARP header Internal TCP Retry Internal RARP send Internal TCP retry Icon Icon Description Description This event represents an internal NetX RARP send event. Information Fields This event represents an internal NetX TCP retry event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Target IP address Info Field 3: Pointer to packet Info Field 4: Word 1 of RARP header Internal TCP State Change Info Field 1: Pointer to the IP instance Info Field 2: Pointer to socket Info Field 3: Pointer to packet Info Field 4: Number of retries Internal I/O Driver Packet Send Internal TCP state change Internal I/O driver packet send Icon Icon Description Description This event represents an internal NetX TCP socket state change event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to socket Info Field 3: Previous state Info Field 4: New state This event represents an internal NetX I/O driver packet send event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to packet Info Field 3: Packet size Info Field 4: Not used Express Logic, Inc. 148 NetX Trace Events Internal I/O Driver Initialize Internal I/O Driver Link Enable Internal I/O driver initialize Internal I/O driver link enable Icon Icon Description Description This event represents an internal NetX I/O driver initialize event. Information Fields This event represents an internal NetX I/O driver link enable event. Information Fields Info Field 1: Pointer to the IP instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Internal I/O Driver Link Disable Info Field 1: Pointer to the IP instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Internal I/O Driver Packet Broadcast Internal I/O driver link disable Internal I/O driver packet broadcast Icon Icon Description Description This event represents an internal NetX I/O driver link disable event. Information Fields This event represents an internal NetX I/O driver packet broadcast event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Internal I/O Driver ARP Send Info Field 1: Pointer to the IP instance Info Field 2: Pointer to packet Info Field 3: Packet size Info Field 4: Not used Internal I/O Driver ARP Response Send Internal I/O driver ARP send Internal I/O driver ARP response send Icon Icon Description Description This event represents an internal NetX I/O driver ARP send event. Information Fields This event represents an internal NetX I/O driver ARP response send event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to packet Info Field 3: Packet size Info Field 4: Not used User Guide Info Field 1: Pointer to the IP instance Info Field 2: Pointer to packet Info Field 3: Packet size Info Field 4: Not used TraceX User Guide Internal I/O Driver RARP Send 149 Internal I/O Driver Multicast Join Internal I/O driver RARP send Internal I/O driver multicast join Icon Icon Description Description This event represents an internal NetX I/O driver RARP send event. Information Fields This event represents an internal NetX I/O driver multicast join event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to packet Info Field 3: Packet size Info Field 4: Not used Internal I/O Driver Multicast Leave Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Internal I/O Driver Get Status Internal I/O driver multicast leave Internal I/O driver get status Icon Icon Description Description This event represents an internal NetX I/O driver multicast leave event. Information Fields This event represents an internal NetX I/O driver get status event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Internal I/O Driver Get Speed Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Internal I/O Driver Get Duplex Type Internal I/O driver get speed Internal I/O driver get duplex type Icon Icon Description Description This event represents an internal NetX I/O driver get speed event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used This event represents an internal NetX I/O driver get duplex type event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Express Logic, Inc. 150 NetX Trace Events Internal I/O Driver Get Error Count Internal I/O Driver Get RX Count Internal I/O driver get error count Internal I/O driver get RX count Icon Icon Description Description This event represents an internal NetX I/O driver get error count event. Information Fields This event represents an internal NetX I/O driver get RX count event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Internal I/O Driver Get TX Count Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Internal I/O Driver Get Allocation Errors Internal I/O driver get TX count Internal I/O driver get allocation errors Icon Icon Description Description This event represents an internal NetX I/O driver get TX count event. Information Fields This event represents an internal NetX I/O driver get allocation errors event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Internal I/O Driver Un-initialize Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Internal I/O Driver Deferred Processing Internal I/O driver un-initialize Internal I/O driver deferred processing Icon Icon Description Description This event represents an internal NetX I/O driver un-initialize event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used User Guide This event represents an internal NetX I/O driver deferred processing event. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to packet Info Field 3: Packet length Info Field 4: Not used TraceX User Guide ARP Dynamic Entries Invalidate ARP Dynamic Entry Set nx_arp_dynamic_entries_invalidate nx_arp_dynamic_entry_set Icon Icon Description Description This event represents invalidating all dynamic ARP entires via nx_arp_dynamic_entries_invalidate. 151 This event represents setting a dynamic ARP entry via nx_arp_dynamic_entry_set. Information Fields Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Entries invalidated Info Field 3: Not used Info Field 4: Not used ARP Enable Info Field 1: Pointer to the IP instance Info Field 2: IP address Info Field 3: Physical address (MSW) Info Field 4: Physical address (LSW) ARP Gratuitous Send nx_arp_enable nx_arp_gratuitous_send Icon Icon Description Description This event represents enabling ARP via nx_arp_enable. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: ARP cache memory pointer Info Field 3: ARP cache memory size Info Field 4: Not used ARP Hardware Address Find This event represents a gratuitous ARP send via nx_arp_gratuitous_send. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used ARP Information Get nx_arp_hardware_address_find nx_arp_info_get Icon Icon Description Description This event represents finding a physical address via nx_arp_hardware_address_find. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: IP address Info Field 3: Physical address (MSW) Info Field 4: Physical address (LSW) This event represents getting information via nx_arp_info_get. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: ARPs sent Info Field 3: ARP responses Info Field 4: ARPs received Express Logic, Inc. 152 NetX Trace Events ARP Static Entries Delete ARP IP Address Find nx_arp_ip_address_find nx_arp_static_entries_delete Icon Icon Description Description This event represents finding an IP address associated with the supplied physical address via nx_arp_ip_address_find. This event represents deleting all ARP static entries via nx_arp_static_entries_delete. Information Fields Information Fields Info Field 1: Pointer to the IP instance Info Field 2: IP address Info Field 3: Physical address (MSW) Info Field 4: Physical address (LSW) ARP Static Entry Create Info Field 1: Pointer to the IP instance Info Field 2: Entries deleted Info Field 3: Not used Info Field 4: Not used ARP Static Entry Delete nx_arp_static_entry_create nx_arp_static_entry_delete Icon Icon Description Description This event represents creating a static ARP entry via nx_arp_static_entry_create. Information Fields This event represents deleting a static ARP entry via nx_arp_static_entry_delete. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: IP address Info Field 3: Physical address (MSW) Info Field 4: Physical address (LSW) Duo Cache Entry Delete Info Field 1: Pointer to the IP instance Info Field 2: IP address Info Field 3: Physical address (MSW) Info Field 4: Physical address (LSW) Duo Cache Entry Set nxd_nd_cache_entry_delete nxd_nd_cache_entry_set Icon Icon Description Description This event represents deleting an entry in the neighbor cache table via nx_udp_socket_create. Information Fields Info Field 1: Fourth (least significant) word of the IPv6 link local address to delete Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used User Guide This event represents creating a cache entry and adding to the neighbor cache table via nxd_nd_cache_entry_set. Information Fields Info Field 1: Fourth (least significant) word of the IPv6 address to add Info Field 2: Physical address msb Info Field 3: Physical address lsb Info Field 4: Not used TraceX User Guide Duo Cache Invalidate 153 Duo Cache IP Address Find nxd_nd_cache_invalidate nxd_nd_cache_ip_address_find Icon Icon Description Description This event represents invalidating the entire neighbor cache table via nxd_nd_cache_invalidate. This event represents retrieving an IP address matching the supplied physical address from the cache table via nxd_nd_cache_ip_address_find. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Duo ICMP Enable Information Fields Info Field 1: Pointer to IP instance Info Field 2: Fourth (least significant) word of the IPv6 address Info Field 3: Physical address msb Info Field 4: Physical address lsb Duo ICMP Ping nxd_icmp_enable nxd_icmp_ping Icon Icon Description Description This event represents ICMPv4 and ICMPv6 services being enabled on the specified IP instance via nxd_icmp_enable. This event represents sending a ping (echo request) to an IPv6 host via nxd_icmp_ping. Information Fields Information Fields Info Field 1: Pointer to IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Duo IP Max Payload Size Find Info Field 1: Pointer to IP instance Info Field 2: IPv6 address Info Field 3: Pointer to echo data Info Field 4: Size of echo data Duo IP Raw Packet Send nxd_ip_raw_packet_send nx_ip_max_payload_size Icon Icon Description Description This event computes the max payload the specified packet can carry without requiring fragmentation. Information Fields Info Field 1: Socket pointer Info Field 2: Peer IP address Info Field 3: Peer port Info Field 4: Not used This event represents sending a raw IP packet out the specified network interface to the supplied IP destination addressvia nxd_ip_raw_packet_send. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to packet to send Info Field 3: Pointer to destination address Info Field 4: Packet protocol Express Logic, Inc. 154 NetX Trace Events Duo IPv6 Default Router Delete Duo IPv6 Enable nxd_ipv6_default_router_delete nxd_ipv6_enable event Icon Icon Description Description This event represents removing a default router from the IP instance’s IPv6 routing table via nxd_ipv6_default_router_delete. Information Fields This event represents enabling IPv6 services on the supplied IP instance via nxd_ipv6_enable. Information Fields Info Field 1: Pointer to IP instance. Info Field 2: Fourth word (least significant) of the default router IPv6 address. Info Field 3: Not used. Info Field 4: Not used. Duo IPv6 Global Address Get Info Field 1: Pointer to IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Duo IPv6 Global Address Set nxd_ipv6_global_address_get nxd_ipv6_global_address_set Icon Icon Description Description This event represents retrieving the global (primary) IP address on the IP instance located at index 1 in the IP instance interface table via nxd_ipv6_global_address_get. Information Fields This event represents setting the global (primary) IP address on the IP instance located at index 1 in the IP instance interface table via nxd_ipv6_global_address_set. Information Fields Info Field 1: Pointer to IP instance. Info Field 2: Fourth word (least significant) of the global address Info Field 3: IPv6 address prefix length. Info Field 4: Index into IP interface table (1). Duo IPv6 Initiate Dad Process Info Field 1: Pointer to IP instance Info Field 2: Fourth word (least significant) of the global address Info Field 3: IPv6 address prefix length Info Field 4: Index into IP interface table (1) Duo IPv6 Interface Address Get nxd_ipv6_initiate_dad_process nxd_ipv6_interface_address_get Icon Icon Description Description This event represents the start of the Duplicate Address Detection (DAD) process when the IP instance is assigned a link local or an IP interface address via nxd_ipv6_initiate_dad_process. This event represents retrieving the IP address and prefix at the specified index into the IP instance interface address table via nxd_ipv6_interface_address_get. Information Fields Information Fields Info Field 1: Pointer to IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used User Guide Info Field 1: Pointer to IP instance Info Field 2: Fourth word (least significant) of the IPv6 address to return Info Field 3: Prefix length Info Field 4: Index of interface into the IP instance interface table TraceX User Guide Duo IPv6 Interface Address Set Duo IPv6 Link Local Address Get nxd_ipv6_interface_address_set nxd_ipv6_linklocal_address_get Icon Icon Description Description This event represents setting the IP address and prefix at the specified index into the IP instance interface address table. Not permitted on index zero (link local address) via nxd_ipv6_interface_address_set. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Fourth word (least significant) of the IPv6 address to return Info Field 3: Prefix length Info Field 4: Index of interface into the IP instance interface table Duo IPv6 Link Local Address Set 155 This event represents retrieving the link local address of the specified IP instance via nxd_ipv6_linklocal_address_get. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Fourth word (least significant) of the IP v6 link local address Info Field 3: Not used Info Field 4: Not used Duo TCP Socket Peer Info Get nxd_ipv6_linklocal_address_set nxd_tcp_socket_peer_info_get Icon Icon Description Description This event represents setting the link local address of the IP instance via nxd_ipv6_linklocal_address_set. This event extracts the sender data from a received TCP packet on the specified socket. It returns the IP address and port of the sender. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Fourth (least significant) word of the IPv6 link local address Info Field 3: Not used Info Field 4: Not used Duo TCP Socket Set Interface Information Fields Info Field 1: Socket pointer Info Field 2: Peer IP address Info Field 3: Peer port Info Field 4: Not used Duo UDP Socket Set Interface nxd_tcp _socket_set_interface event Icon Description This event represents setting the outgoing socket interface after a client connects with a TCP server on the specified server IP address via nxd_tcp_client_socket_connect. Information Fields Info Field 1: Pointer to TCP Socket Info Field 2: Interface ID Info Field 3: Not used Info Field 4: Not used nxd_udp_socket_set_interface event Icon Description This event represents setting the specified UDP socket outgoing interface to the interface corresponding to the input interface ID via nxd_udp_socket_set_interface. Information Fields Info Field 1: Pointer to UDP Socket Info Field 2: Interface ID Info Field 3: Not used Info Field 4: Not used Express Logic, Inc. 156 NetX Trace Events Duo UDP Source Extract Duo UDP Source Send nxd_udp_source_extract nxd_udp_source_send event Icon Icon Description Description This event represents extracting the IP address and source port of a received packet (either IPv4 or IPv6). If IPv6, the fourth word (least significant) of the IP address is returned via nxd_udp_source_extract. Information Fields Info Field 1: Pointer to the packet Info Field 2: IP version Info Field 3: Source IP address (IPv4 or IPv6) Info Field 4: Source port ICMP Enable This event represents enabling checksum processing on a socket via nxd_udp_source_send. Information Fields Info Field 1: Pointer to IP socket Info Field 2: Pointer to packet Info Field 3: Packet Size Info Field 4: IP Address ICMP Information Get nx_icmp_enable nx_icmp_info_get Icon Icon Description Description This event represents enabling ICMP via nx_icmp_enable. Information Fields This event represents getting information via nx_icmp_info_get. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used ICMP Ping Info Field 1: Pointer to the IP instance Info Field 2: Pings sent Info Field 3: Ping responses Info Field 4: Pings received IGMP Enable nx_icmp_ping nx_igmp_enable Icon Icon Description Description This event represents pinging a target IP address via nx_icmp_ping. Information Fields This event represents enabling IGMP via nx_igmp_enable. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: IP address Info Field 3: Pointer to data Info Field 4: Size of data User Guide Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used TraceX User Guide 157 IGMP Loopback Disable IGMP Information Get nx_igmp_info_get nx_igmp_loopback_disable Icon Icon Description Description This event represents getting information via nx_igmp_info_get. Information Fields This event represents disabling IGMP loopback via nx_igmp_loopback_disable. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Reports sent Info Field 3: Queries received Info Field 4: Groups joined IGMP Loopback Enable Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used IGMP Multicast Join nx_igmp_loopback_enable nx_igmp_multicast_join Icon Icon Description Description This event represents enabling IGMP loopback via nx_igmp_loopback_enable. Information Fields This event represents joining a multicast group via nx_igmp_multicast_join. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Info Field 1: Pointer to the IP instance Info Field 2: Group IP address Info Field 3: Not used Info Field 4: Not used IP Address Change Notify IGMP Multicast Leave nx_igmp_multicast_leave nx_ip_address_change_notify Icon Icon Description Description This event represents leaving a multicast group via nx_igmp_multicast_leave. This event represents registering for IP change notification via nx_ip_address_change_notify. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Group IP address Info Field 3: Not used Info Field 4: Not used Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Callback function pointer Info Field 3: Additional information pointer Info Field 4: Not used Express Logic, Inc. 158 NetX Trace Events IP Address Set IP Address Get nx_ip_address_get nx_ip_address_set Icon Icon Description Description This event represents getting the IP address via nx_ip_address_get. Information Fields This event represents setting the IP address via nx_ip_address_set. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: IP address Info Field 3: Network mask Info Field 4: Not used Info Field 1: Pointer to the IP instance Info Field 2: IP address Info Field 3: Network mask Info Field 4: Not used IP Create IP Delete nx_ip_create nx_ip_delete Icon Icon Description Description This event represents creating an IP instance via nx_ip_create. Information Fields This event represents deleting an IP instance via nx_ip_delete. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: IP address Info Field 3: Network mask Info Field 4: Default packet pool pointer IP Driver Direct Command Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used IP Forwarding Disable nx_ip_driver_direct_command nx_ip_fowarding_disable Icon Icon Description Description This event represents a direct I/O driver command via nx_ip_driver_direct_command. Information Fields This event represents disabling IP forwarding via nx_ip_forwarding_disable. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Driver command Info Field 3: Return value Info Field 4: Not used User Guide Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used TraceX User Guide 159 IP Fragment Disable IP Forwarding Enable nx_ip_address_get nx_ip_fragment_disable Icon Icon Description Description This event represents enabling IP forwarding via nx_ip_forwarding_enable. Information Fields This event represents disabling IP fragmenting via nx_ip_fragment_disable. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used IP Fragment Enable Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used IP Gateway Address Set nx_ip_fragment_enable nx_ip_gateway_address_set Icon Icon Description Description This event represents enabling IP fragmenting via nx_ip_fragment_enable. Information Fields This event represents setting the gateway IP address via nx_ip_gateway_address_set. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Info Field 1: Pointer to the IP instance Info Field 2: Gateway IP address Info Field 3: Not used Info Field 4: Not used IP Interface Attach IP Information Get nx_ip_interface_attach nx_ip_info_get Icon Icon Description Description This event represents getting IP information via nx_ip_info_get. This event represents a secondary network interface being attached to the IP instance via nx_ip_interface_attach. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: IP bytes sent Info Field 3: IP bytes received Info Field 4: IP packets dropped Information Fields Info Field 1: Pointer to IP instance Info Field 2: Interface IP Address Info Field 3: Index into IP interface table Info Field 4: Not used Express Logic, Inc. 160 NetX Trace Events IP Interface Info Get IP Raw Packet Disable nx_ip_interface_info_get nx_ip_raw_packet_disable Icon Icon Description Description This event represents information retrieved from the specified network interface via nx_ip_interface_info_get. Information Fields This event represents disabling raw IP packet communication via nx_ip_raw_packet_disable. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Interface IP address Info Field 3: Interface MAC address msb Info Field 4: Interface MAC address lsb IP Raw Packet Enable Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used IP Raw Packet Receive nx_ip_address_get nx_ip_raw_packet_receive Icon Icon Description Description This event represents enabling raw IP packet communication via nx_ip_raw_packet_enable. This event represents receiving a raw IP packet via nx_ip_raw_packet_receive. Information Fields Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used IP Raw Packet Send Info Field 1: Pointer to the IP instance Info Field 2: Pointer to packet Info Field 3: Wait option Info Field 4: Not used IP Static Route Add nx_ip_raw_packet_send nx_ip_static_route_add Icon Icon Description Description This event represents sending a raw IP packet via nx_ip_raw_packet_send. This event represents a static route being added to the IP instance routing table via nx_ip_static_route_add. Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Pointer to packet Info Field 3: Destination IP address Info Field 4: Type of service User Guide Information Fields Info Field 1: Pointer to IP instance Info Field 2: Network address Info Field 3: Network mask Info Field 4: Next hop TraceX User Guide IP Static Route Delete 161 IP Status Check nx_ip_static_route_delete nx_ip_status_check Icon Icon Description Description This event represents a static route being removed from the IP instance routing table via nx_ip_static_route_delete. This event represents checking for an IP status via nx_ip_status_check. Information Fields Information Fields Info Field 1: Pointer to the IP instance Info Field 2: Requested status Info Field 3: Actual status Info Field 4: Wait option Info Field 1: Pointer to IP instance Info Field 2: Network address Info Field 3: Network mask Info Field 4: Not used IPSEC Enable Packet Allocate nx_ipsec_enable nx_packet_allocate Icon Icon Description Description This event represents enabling IPSec services on the supplied IP instance via nx_ipsec_enable. This event represents allocating a packet via nx_packet_allocate. Information Fields Information Fields Info Field 1: Pointer to the packet pool Info Field 2: Pointer to packet allocated Info Field 3: Packet type Info Field 4: Available packets Info Field 1: Pointer to IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Packet Copy Packet Data Append nx_packet_copy nx_packet_data_append Icon Icon Description Description This event represents copying a packet via nx_packet_copy. Information Fields Info Field 2: New packet pointer Info Field 3: Pointer to packet pool Info Field 4: Wait option This event represents appending data to a packet via nx_packet_data_append. Information Fields Info Field 1: Pointer to the packet Info Field 2: Pointer to data Info Field 3: Size of data Info Field 4: Pointer to packet pool Express Logic, Inc. 162 NetX Trace Events Packet Data Extract Offset Packet Data Retrieve nx_udp_source_extract_offset nx_packet_data_retrieve Icon Icon Description Description This event represents packet data that is extracted into a supplied buffer from a packet via nx_udp_source_extract_offset. This event represents retrieving data from a packet via nx_packet_data_retrieve. Information Fields Information Fields Info Field 1: Pointer to packet Info Field 2: Size of specified buffer Info Field 3: Number of bytes copied Info Field 4: Not used Packet Length Get Info Field 1: Pointer to the packet Info Field 2: Pointer to start of buffer Info Field 3: Bytes copied Info Field 4: Not used Packet Pool Create nx_packet_length_get nx_packet_pool_create Icon Icon Description Description This event represents getting the length of a packet via nx_packet_length_get. Information Fields This event represents creating a packet pool via nx_packet_pool_create. Information Fields Info Field 1: Pointer to the packet Info Field 2: Packet length Info Field 3: Not used Info Field 4: Not used Packet Pool Delete Info Field 1: Pointer to the packet pool Info Field 2: Packet payload size Info Field 3: Pointer to pool memory area Info Field 4: Size of pool memory area Packet Pool Information Get nx_packet_pool_delete nx_packet_pool_info_get Icon Icon Description Description This event represents deleting a packet pool via nx_packet_pool_delete. Information Fields Info Field 1: Pointer to the packet pool Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used User Guide This event represents getting packet pool information via nx_packet_pool_info_get. Information Fields Info Field 1: Pointer to packet pool Info Field 2: Total packets Info Field 3: Available packets Info Field 4: Empty requests TraceX User Guide Packet Release 163 Packet Transmit Release nx_packet_release nx_packet_transmit_release Icon Icon Description Description This event represents releasing a packet via nx_packet_release. Information Fields This event represents releasing a transmit packet via nx_packet_transmit_release. Information Fields Info Field 1: Pointer to the packet Info Field 2: Packet status Info Field 3: Available packets Info Field 4: Not used Info Field 1: Pointer to the packet Info Field 2: Packet status Info Field 3: Available packets Info Field 4: Not used RARP Disable RARP Enable nx_rarp_disable nx_rarp_enable Icon Icon Description Description This event represents disabling RARP via nx_rarp_disable. Information Fields This event represents enabling RARP via nx_rarp_enable. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Info Field 1: Pointer to IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used RARP Information Get System Initialize nx_rarp_info_get nx_system_initialize Icon Icon Description Description This event represents getting RARP information via nx_rarp_info_get. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Requests sent Info Field 3: Responses received Info Field 4: Invalid responses This event represents initializing NetX via nx_system_initialize. Information Fields Info Field 1: Not used Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used Express Logic, Inc. 164 NetX Trace Events TCP Client Socket Connect TCP Client Socket Bind nx_tcp_client_socket_bind nx_tcp_client_socket_connect Icon Icon Description Description This event represents binding a client socket to a port via nx_tcp_client_socket_bind. This event represents making a client socket connection via nx_tcp_client_socket_connect. Information Fields Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Port requested Info Field 4: Wait option Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Server IP address Info Field 4: Server port requested TCP Client Socket Port Get TCP Client Socket Unbind nx_tcp_client_socket_port_get nx_tcp_client_socket_unbind Icon Icon Description Description This event represents getting the client socket port number via nx_tcp_client_socket_port_get. Information Fields This event represents unbinding the port associated with the socket via nx_tcp_client_socket_unbind. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Port number Info Field 4: Not used Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Not used Info Field 4: Not used TCP Free Port Find TCP Enable nx_tcp_enable nx_tcp_free_port_find Icon Icon Description Description This event represents enabling TCP via nx_tcp_enable. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used User Guide This event represents finding a free TCP port via nx_tcp_free_port_find. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Starting search port number Info Field 3: Free port number Info Field 4: Not used TraceX User Guide TCP Socket Bytes Available 165 TCP Socket Create nx_tcp_socket_bytes_available nx_tcp_socket_create Icon Icon Description Description This event represents the number of bytes currently available on the specified TCP receiving socket via nx_tcp_socket_bytes_available. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to TCP socket Info Field 3: Bytes received on the socket Info Field 4: Not used TCP Socket Delete This event represents creating a TCP socket via nx_tcp_socket_create. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Type of service Info Field 4: Receive window size TCP Socket Disconnect nx_tcp_socket_delete nx_tcp_socket_disconnect Icon Icon Description Description This event represents deleting a socket via nx_tcp_socket_delete. Information Fields This event represents disconnecting a socket via nx_tcp_socket_disconnect. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Socket state Info Field 4: Not used TCP Socket Information Get Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Wait option Info Field 4: Socket state TCP Socket MSS Get nx_tcp_socket_info_get nx_tcp_socket_mss_get Icon Icon Description Description This event represents getting information about a socket via nx_tcp_socket_info_get. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Bytes sent through this socket Info Field 4: Bytes received through this socket This event represents getting the socket's MSS via nx_tcp_socket_mss_get. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Maximum Segment Size (MSS) Info Field 4: Socket state Express Logic, Inc. 166 NetX Trace Events TCP Socket MSS Peer Get TCP Socket MSS Set nx_tcp_socket_mss_peer_get nx_tcp_socket_mss_set Icon Icon Description Description This event represents getting the MSS value of the socket's peer via nx_tcp_socket_mss_peer_get. This event represents setting a socket's MSS via nx_tcp_socket_mss_set. Information Fields Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Peer's MSS Info Field 4: Socket state TCP Socket Peer Info Get Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: MSS Info Field 4: Socket state TCP Socket Receive nx_tcp_socket_peer_info_get nx_tcp_socket_receive Icon Icon Description Description This event represents information retrieved from the TCP socket regarding the peer (e.g. connecting host) IP address and port via nx_tcp_socket_peer_info_get. Information Fields Info Field 1: Pointer to TCP socket Info Field 2: Peer IP address Info Field 3: Peer port number Info Field 4: Not used TCP Socket Receive Notify This event represents receiving data from a socket via nx_tcp_socket_receive. Information Fields Info Field 1: Pointer to socket Info Field 2: Pointer to received packet Info Field 3: Received packet length Info Field 4: Receive sequence number TCP Socket Send nx_tcp_socket_receive_notify nx_tcp_socket_send Icon Icon Description Description This event represents registering a receive notify callback for a socket via nx_tcp_socket_receive_notify. This event represents sending data on a socket via nx_tcp_socket_send. Information Fields Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Pointer to receive notify callback Info Field 4: Not used User Guide Info Field 1: Pointer to socket Info Field 2: Pointer to packet Info Field 3: Length of packet Info Field 4: Transmit sequence number TraceX User Guide 167 TCP Socket Transmit Configure TCP Socket State Wait nx_tcp_socket_state_wait nx_tcp_socket_transmit_configure Icon Icon Description Description This event represents waiting for a socket to enter a particular state via nx_tcp_socket_state_wait. Information Fields This event represents configuring the transmit options for a socket via nx_tcp_socket_transmit_configure. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Desired socket state Info Field 4: Previous socket state TCP Socket Window Update Notify Set Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Transmit queue depth Info Field 4: Timeout value UDP Enable nx_tcp_window_update_notify_set event nx_udp_enable Icon Icon Description Description This event represents a TCP socket receiving notification of an increase in the remote host receive window via nx_tcp_window_update_notify_set. Information Fields Info Field 1: Pointer to TCP socket Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used UDP Free Port Find This event represents enabling UDP via nx_udp_enable. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Not used Info Field 3: Not used Info Field 4: Not used UDP Information Get nx_udp_free_port_find nx_udp_info_get Icon Icon Description Description This event represents finding a free UDP port via nx_udp_free_port_find. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Starting port to search from Info Field 3: Free port Info Field 4: Not used This event represents getting information via nx_udp_info_get. Information Fields Info Field 1: Pointer to IP instance Info Field 2: UDP bytes sent Info Field 3: UDP bytes received Info Field 4: Invalid packets Express Logic, Inc. 168 NetX Trace Events UDP Socket Bytes Available UDP Socket Bind nx_udp_socket_bind nx_udp_socket_bytes_available Icon Icon Description Description This event represents binding a UDP socket to a port via nx_udp_socket_bind. This event represents the current number of bytes received on the UDP socket via nx_udp_socket_bytes_available. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Port number Info Field 4: Wait option UDP Socket Checksum Disable Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Bytes received on socket Info Field 4: Not used UDP Socket Checksum Enable nx_udp_socket_checksum_disable nx_udp_socket_checksum_enable Icon Icon Description Description This event represents disabling the checksum for data on a UDP socket via nx_udp_socket_checksum_disable. Information Fields This event represents enabling checksum processing on a socket via nx_udp_socket_checksum_enable. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Not used Info Field 4: Not used UDP Socket Create Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Not used Info Field 4: Not used UDP Socket Delete Event nx_udp_socket_create nx_udp_socket_delete event Icon Icon Description Description This event represents creating a UDP socket via nx_udp_socket_create. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Type of service Info Field 4: Maximum receive queue User Guide This event represents deleting a UDP socket via nx_udp_socket_delete. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Not used Info Field 4: Not used TraceX User Guide UDP Socket Information Get Event UDP Socket Interface Set nx_udp_socket_info_get event nx_udp_socket_interface_set event Icon Icon Description Description This event represents getting information about a UDP socket via nx_udp_socket_info_get. 169 This event represents setting the outgoing interface of the specified UDP socket with the specified interface via nx_udp_socket_interface_set. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Bytes sent through socket Info Field 4: Bytes received through socket UDP Socket Port Get Information Fields Info Field 1: Pointer to UDP socket Info Field 2: Index corresponding to the interface for the socket Info Field 3: Not used Info Field 4: Not used UDP Socket Receive nx_udp_socket_port_get nx_udp_socket_receive Icon Icon Description Description This event represents retrieving the UDP port the specified UDP socket is bound to via nx_udp_socket_port_get. Information Fields This event represents receiving data on the specified UDP socket via nx_udp_socket_receive. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to UDP socket Info Field 3: Port number Info Field 4: Not used UDP Socket Receive Notify Info Field 1: Pointer to IP instance Info Field 2: Pointer to UDP socket Info Field 3: Pointer to received packet Info Field 4: Received packet size UDP Socket Send nx_udp_socket_receive_notify nx_udp_socket_send Icon Icon Description Description This event represents registering a receive notify callback via nx_udp_socket_receive_notify. This event represents sending data through a UDP socket via nx_udp_socket_send. Information Fields Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Pointer to receive notify function Info Field 4: Not used Info Field 1: Pointer to socket Info Field 2: Pointer to packet Info Field 3: Packet length Info Field 4: Destination IP address Express Logic, Inc. 170 NetX Trace Events UDP Source Extract UDP Socket Unbind nx_udp_socket_unbind nx_udp_source_extract Icon Icon Description Description This event represents unbinding a UDP port with a socket via nx_udp_socket_unbind. This event represents getting the IP address and port number of a received UDP packet via nx_udp_source_extract. Information Fields Info Field 1: Pointer to IP instance Info Field 2: Pointer to socket Info Field 3: Port number Info Field 4: Not used User Guide Information Fields Info Field 1: Pointer to packet Info Field 2: Sender's IP address Info Field 3: Sender's port number Info Field 4: Not used 9 CHAPTER 1 USBX Trace Events This chapter contains a description of the USBX events displayed by TraceX. 1 List of Events and Icons 172 1 Event Descriptions 182 Express Logic, Inc. 172 USBX Trace Events List of Events and Icons The following is a list of USBX events displayed by TraceX. Icon Meaning Device Class Cdc Activate (ux_device_class_cdc_activate) Device Class Cdc Deactivate (ux_device_class_cdc_deactivate) Device Class Cdc Read (ux_device_class_cdc_read) Device Class Cdc Write (ux_device_class_cdc_write) Device Class Dpump Activate (ux_device_class_dpump_activate) Device Class Dpump Deactivate (ux_device_class_dpump_deactivate) Device Class Dpump Read (ux_device_class_dpump_read) Device Class Dpump Write (ux_device_class_dpump_write) Device Class Hid Activate (ux_device_class_hid_activate) Device Class Hid Deactivate (ux_device_class_hid_deactivate) Device Class Hid Descriptor Send (ux_device_class_hid_descriptor_send) Device Class Hid Event Get (ux_device_class_hid_event_get) Device Class Hid Event Set (ux_device_class_hid_event_set) Device Class Hid Report Get (ux_device_class_hid_report_get) Device Class Hid Report Set (ux_device_class_hid_report_set) Device Class Pima Activate (ux_device_class_pima_activate) Device Class Pima Deactivate (ux_device_class_pima_deactivate) Device Class Pima Device Info Send (ux_device_class_pima_device_info_send) Device Class Pima Event Get (ux_device_class_pima_event_get) User Guide TraceX User Guide 173 Device Class Pima Event Set (ux_device_class_pima_event_set) Device Class Pima Object Add (ux_device_class_pima_object_add) Device Class Pima Object Data Get (ux_device_class_pima_object_data_get) Device Class Pima Object Data Send (ux_device_class_pima_object_data_send) Device Class Pima Object Delete (ux_device_class_pima_object_delete) Device Class Pima Object Handles Send (ux_device_class_pima_object_handles_send) Device Class Pima Object Info Get (ux_device_class_pima_object_info_get) Device Class Pima Object Info Send (ux_device_class_pima_object_info_send) Device Class Pima Objects Number Send (ux_device_class_pima_objects_number_send) Device Class Pima Partial Object Data Get (ux_device_class_pima_partial_object_data_get) Device Class Pima Response Send (ux_device_class_pima_response_send) Device Class Pima Storage Id Send (ux_device_class_pima_storage_id_send) Device Class Pima Storage Info Send (ux_device_class_pima_storage_info_send) Device Class Rndis Activate (ux_device_class_rndis_activate) Device Class Rndis Deactivate (ux_device_class_rndis_deactivate) Device Class Rndis Message Keep Alive (ux_device_class_rndis_msg_keep_alive) Device Class Rndis Message Query (ux_device_class_rndis_msg_query) Device Class Rndis Message Reset (ux_device_class_rndis_msg_reset) Device Class Rndis Message Set (ux_device_class_rndis_msg_set) Device Class Rndis Packet Receive (ux_device_class_rndis_packet_receive) Device Class Rndis Packet Transmit (ux_device_class_rndis_packet_transmit) Device Class Storage Activate (ux_device_class_storage_activate) Express Logic, Inc. 174 USBX Trace Events Device Class Storage Deactivate (ux_device_class_storage_deactivate) Device Class Storage Format (ux_device_class_storage_format) Device Class Storage Inquiry (ux_device_class_storage_inquiry) Device Class Storage Mode Select (ux_device_class_storage_mode_select) Device Class Storage Mode Sense (ux_device_class_storage_mode_sense) Device Class Storage Prevent Allow Media Removal (ux_device_class_storage_prevent_allow_media_removal) Device Class Storage Read (ux_device_class_storage_read) Device Class Storage Read Capacity (ux_device_class_storage_read_capacity) Device Class Storage Read Format Capacity (ux_device_class_storage_read_format_capacity) Device Class Storage Read TOC (ux_device_class_storage_read_toc) Device Class Storage Request Sense (ux_device_class_storage_request_sense) Device Class Storage Start Stop (ux_device_class_storage_start_stop) Device Class Storage Test Ready (ux_device_class_storage_test_ready) Device Class Storage Verify (ux_device_class_storage_verify) Device Class Storage Write (ux_device_class_storage_write) Device Stack Alternate Setting Get (ux_device_stack_alternate_setting_get) Device Stack Alternate Setting Set (ux_device_stack_alternate_setting_set) Device Stack Class Register (ux_device_stack_class_register) Device Stack Clear Feature (ux_device_stack_clear_feature) Device Stack Configuration Get (ux_device_stack_configuration_get) Device Stack Configuration Set (ux_device_stack_configuration_set) Device Stack Connect (ux_device_stack_connect) User Guide TraceX User Guide 175 Device Stack Descriptor Send (ux_device_stack_descriptor_send) Device Stack Disconnect (ux_device_stack_disconnect) Device Stack Endpoint Stall (ux_device_stack_endpoint_stall) Device Stack Get Status (ux_device_stack_get_status) Device Stack Host Wakeup (ux_device_stack_host_wakeup) Device Stack Initialize (ux_device_stack_initialize) Device Stack Interface Delete (ux_device_stack_interface_delete) Device Stack Interface Get (ux_device_stack_interface_get) Device Stack Interface Set (ux_device_stack_interface_set) Device Stack Set Feature (ux_device_stack_set_feature) Device Stack Transfer Abort (ux_device_stack_transfer_abort) Device Stack Transfer All Request Abort (ux_device_stack_transfer_all_request_abort) Device Stack Transfer Request (ux_device_stack_transfer_request) Host Class Asix Activate (ux_host_class_asix_activate) Host Class Asix Deactivate (ux_host_class_asix_deactivate) Host Class Asix Interrupt Notification (ux_host_class_asix_interrupt_notification) Host Class Asix Read (ux_host_class_asix_read) Host Class Asix Write (ux_host_class_asix_write) Host Class Audio Activate (ux_host_class_audio_activate) Host Class Audio Control Value Get (ux_host_class_audio_control_value_get) Host Class Audio Control Value Set (ux_host_class_audio_control_value_set) Host Class Audio Deactivate (ux_host_class_audio_deactivate) Express Logic, Inc. 176 USBX Trace Events Host Class Audio Read (ux_host_class_audio_read) Host Class Audio Streaming Sampling Get (ux_host_class_audio_streaming_sampling_get) Host Class Audio Streaming Sampling Set (ux_host_class_audio_streaming_sampling_set) Host Class Audio Write (ux_host_class_audio_write) Host Class Cdc Acm Activate (ux_host_class_cdc_acm_activate) Host Class Cdc Acm Deactivate (ux_host_class_cdc_acm_deactivate) Host Class Cdc Acm Ioctl Abort In Pipe (ux_host_class_cdc_acm_ioctl_abort_in_pipe) Host Class Cdc Acm Ioctl Abort Out Pipe (ux_host_class_cdc_acm_ioctl_abort_out_pipe) Host Class Cdc Acm Ioctl Get Device Status (ux_host_class_cdc_acm_ioctl_get_device_status) Host Class Cdc Acm Ioctl Get Line Coding (ux_host_class_cdc_acm_ioctl_get_line_coding) Host Class Cdc Acm Ioctl Notification Callback (ux_host_class_cdc_acm_ioctl_notification_callback) Host Class Cdc Acm Ioctl Send Break (ux_host_class_cdc_acm_ioctl_send_break) Host Class Cdc Acm Ioctl Set Line Coding (ux_host_class_cdc_acm_ioctl_set_line_coding) Host Class Cdc Acm Ioctl Set Line State (ux_host_class_cdc_acm_ioctl_set_line_state) Host Class Cdc Acm Read (ux_host_class_cdc_acm_read) Host Class Cdc Acm Reception Start (ux_host_class_cdc_acm_reception_start) Host Class Cdc Acm Reception Stop (ux_host_class_cdc_acm_reception_stop) Host Class Cdc Acm Write (ux_host_class_cdc_acm_write) Host Class Dpump Activate (ux_host_class_dpump_activate) Host Class Dpump Deactivate (ux_host_class_dpump_deactivate) Host Class Dpump Read (ux_host_class_dpump_read) User Guide TraceX User Guide 177 Host Class Dpump Write (ux_host_class_dpump_write) Host Class Hid Activate (ux_host_class_hid_activate) Host Class Hid Client Register (ux_host_class_hid_client_register) Host Class Hid Deactivate (ux_host_class_hid_deactivate) Host Class Hid Idle Get (ux_host_class_hid_idle_get) Host Class Hid Idle Set (ux_host_class_hid_idle_set) Host Class Hid Keyboard Activate (ux_host_class_hid_keyboard_activate) Host Class Hid Keyboard Deactivate (ux_host_class_hid_keyboard_deactivate) Host Class Hid Mouse Activate (ux_host_class_hid_mouse_activate) Host Class Hid Mouse Deactivate (ux_host_class_hid_mouse_deactivate) Host Class Hid Remote Control Activate (ux_host_class_hid_remote_control_activate) Host Class Hid Remote Control Deactivate (ux_host_class_hid_remote_control_deactivate) Host Class Hid Report Get (ux_host_class_hid_report_get) Host Class Hid Report Set (ux_host_class_hid_report_set) Host Class Hub Activate (ux_host_class_hub_activate) Host Class Hub Change Detect (ux_host_class_hub_change_detect) Host Class Hub Deactivate (ux_host_class_hub_deactivate) Host Class Hub Port Change Connection Process (ux_host_class_hub_port_change_connection_process) Host Class Hub Port Change Enable Process (ux_host_class_hub_port_change_enable_process) Host Class Hub Port Change Over Current Process (ux_host_class_hub_port_change_over_current_process) Host Class Hub Port Change Reset Process (ux_host_class_hub_port_change_reset_process) Express Logic, Inc. 178 USBX Trace Events Host Class Hub Port Change Suspend Process (ux_host_class_hub_port_change_suspend_process) Host Class Pima Activate (ux_host_class_prima_activate) Host Class Pima Deactivate (ux_host_class_pima_deactivate) Host Class Pima Device Info Get (ux_host_class_pima_device_info_get) Host Class Pima Device Reset (ux_host_class_pima_device_reset) Host Class Pima Notification (ux_host_class_pima_notification) Host Class Pima Number Objects Get (ux_host_class_pima_num_objects_get) Host Class Pima Object Close (ux_host_class_pima_object_close) Host Class Pima Object Copy (ux_host_class_pima_object_copy) Host Class Pima Object Delete (ux_host_class_pima_object_delete) Host Class Pima Object Get (ux_host_class_pima_object_get) Host Class Pima Object Info Get (ux_host_class_pima_object_info_get) Host Class Pima Object Info Send (ux_host_class_pima_object_info_send) Host Class Pima Object Move (ux_host_class_pima_object_move) Host Class Pima Object Send (ux_host_class_pima_object_send) Host Class Pima Object Transfer Abort (ux_host_class_object_transfer_abort) Host Class Pima Read (ux_host_class_pima_read) Host Class Pima Request Cancel (ux_host_class_pima_request_cancel) Host Class Pima Session Close (ux_host_class_pima_session_close) Host Class Pima Session Open (ux_host_class_pima_session_open) Host Class Pima Storage Ids Get (ux_host_class_pima_storage_ids_get) Host Class Pima Storage Info Get (ux_host_class_pima_storage_info_get) User Guide TraceX User Guide 179 Host Class Pima Thumb Get (ux_host_class_pima_thumb_get) Host Class Pima Write (ux_host_class_pima_write) Host Class Printer Activate (ux_host_class_printer_activate) Host Class Printer Deactivate (ux_host_class_printer_deactivate) Host Class Printer Name Get (ux_host_class_printer_name_get) Host Class Printer Read (ux_host_class_printer_read) Host Class Printer Soft Reset (ux_host_class_printer_soft_reset) Host Class Printer Status Get (ux_host_class_printer_status_get) Host Class Printer Write (ux_host_class_printer_write) Host Class Prolific Activate (ux_host_class_prolific_activate) Host Class Prolific Deactivate (ux_host_class_prolific_deactivate) Host Class Prolific Ioctl Abort In Pipe (ux_host_class_prolific_ioctl_abort_in_pipe) Host Class Prolific Ioctl Abort Out Pipe (ux_host_class_prolific_ioctl_abort_out_pipe) Host Class Prolific Ioctl Get Device Status (ux_host_class_prolific_ioctl_get_device_status) Host Class Prolific Ioctl Get Line Coding (ux_host_class_prolific_ioctl_get_line_coding) Host Class Prolific Ioctl Purge (ux_host_class_prolific_ioctl_purge) Host Class Prolific Ioctl Report Device Status Change (ux_host_class_prolific_ioctl_report_device_status_change) Host Class Prolific Ioctl Send Break (ux_host_class_prolific_ioctl_send_break) Host Class Prolific Ioctl Set Line Coding (ux_host_class_prolific_ioctl_set_line_coding) Host Class Prolific Ioctl Set Line State (ux_host_class_prolific_ioctl_set_line_state) Host Class Prolific Read (ux_host_class_prolific_read) Host Class Prolific Reception Start (ux_host_class_prolific_reception_start) Express Logic, Inc. 180 USBX Trace Events Host Class Prolific Reception Stop (ux_host_class_prolific_reception_stop) Host Class Prolific Write (ux_host_class_prolific_write) Host Class Storage Activate (ux_host_class_storage_activate) Host Class Storage Deactivate (ux_host_class_storage_deactivate) Host Class Storage Media Capacity Get (ux_host_class_storage_media_capacity_get) Host Class Storage Media Format Capacity Get (ux_host_class_storage_media_format_capacity_get) Host Class Storage Media Mount (ux_host_class_storage_media_mount) Host Class Storage Media Open (ux_host_class_storage_media_open) Host Class Storage Media Read (ux_host_class_storage_media_read) Host Class Storage Media Write (ux_host_class_storage_media_write) Host Class Storage Request Sense (ux_host_class_storage_request_sense) Host Class Storage Start Stop (ux_host_class_storage_start_stop) Host Class Storage Unit Ready Test (ux_host_class_storage_activate) Host Stack Class Instance Create (ux_host_stack_class_instance_create) Host Stack Class Instance Destroy (ux_host_stack_class_instance_destroy) Host Stack Configuration Delete (ux_host_stack_configuration_delete) Host Stack Configuration Enumerate (ux_host_stack_configuration_enumerate) Host Stack Configuration Instance Create (ux_host_stack_configuration_instance_create) Host Stack Configuration Instance Delete (ux_host_stack_configuration_instance_delete) Host Stack Configuration Set (ux_host_stack_configuration_set) Host Stack Device Address Set (ux_host_stack_device_set) Host Stack Device Configuration Get (ux_host_stack_device_configuration_get) Host Stack Device Configuration Select (ux_host_stack_device_configuration_select) User Guide TraceX User Guide 181 Host Stack Device Descriptor Read (ux_host_stack_device_descriptor_read) Host Stack Device Get (ux_host_stack_device_get) Host Stack Device Remove (ux_host_stack_device_get) Host Stack Device Resource Free (ux_host_stack_device_resource_free) Host Stack Endpoint Instance Create (ux_host_stack_endpoint_instance_create) Host Stack Endpoint Instance Delete (ux_host_stack_endpoint_instance_delete) Host Stack Endpoint Reset (ux_host_stack_endpoint_reset) Host Stack Endpoint Transfer Abort (ux_host_stack_endpoint_transfer_abort) Host Stack Host Controller Register (ux_host_stack_hcd_register) Host Stack Initialize (ux_host_stack_initialize) Host Stack Interface Endpoint Get (ux_host_stack_interface_endpoint_get) Host Stack Interface Instance Create (ux_host_stack_interface_instance_create) Host Stack Interface Instance Delete (ux_host_stack_interface_instance_delete) Host Stack Interface Set (ux_host_stack_interface_set) Host Stack Interface Setting Select (ux_host_stack_interface_setting_select) Host Stack New Configuration Create (ux_host_stack_new_configuration_create) Host Stack New Device Create (ux_host_stack_new_device_create) Host Stack New Endpoint Create (ux_host_stack_new_endpoint_create) Host Stack Root Hub Change Process (ux_host_stack_rh_change_process) Host Stack Root Hub Device Extraction (ux_host_stack_rh_device_extraction) Host Stack Root Hub Device Insertion (ux_host_stack_rh_device_insertion) Host Stack Transfer Request (ux_host_stack_transfer_request) Express Logic, Inc. 182 USBX Trace Events Host Stack Transfer Request Abort (ux_host_stack_transfer_request_abort) USBX Error (ux_error) Event Descriptions The following pages describe the USBX Trace Events. User Guide TraceX User Guide Device Class Cdc Activate Device Class Cdc Deactivate ux_device_class_cdc_activate ux_device_class_cdc_deactivate Icon Icon Description Description This event represents a USBX Device Class Cdc Activate Event. Information Fields 183 This event represents a USBX Device Class Cdc Deactivate. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Cdc Read Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Cdc Write ux_device_class_cdc_read ux_device_class_cdc_write Icon Icon Description Description This event represents a USBX Device Class Cdc Read Event. Information Fields Info Field 1: Class Instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. Device Class Dpump Activate This event represents a USBX Device Class Cdc Write Event. Information Fields Info Field 1: Class Instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. Device Class Dpump Deactivate ux_device_class_dpump_activate ux_device_class_dpump_deactivate Icon Icon Description Description This event represents a USBX Device Class Dpump Activate Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. This event represents a USBX Device Class Dpump Deactivate Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 184 USBX Trace Events Device Class Dpump Read Device Class Dpump Write ux_device_class_dpump_read ux_device_class_dpump_write Icon Icon Description Description This event represents a USBX Device Class Dpump Read Event. Information Fields This event represents a USBX Device Class Dpump Write Event. Information Fields Info Field 1: Class Instance. Info Field 2: Buffer. Info Field 3: Requested length. Info Field 4: Not used. Device Class Hid Activate Info Field 1: Class Instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. Device Class Hid Deactivate ux_device_class_hid_activate ux_device_class_hid_deactivate Icon Icon Description Description This event represents a USBX Device Class Hid Activate Event. Information Fields This event represents a USBX Device Class Hid Deactivate Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Hid Descriptor Send Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Hid Event Get ux_device_class_hid_descriptor_send ux_device_class_hid_event_get Icon Icon Description Description This event represents a USBX Device Class Hid Descriptor Send Event. Information Fields This event represents a USBX Device Class Hid Event Get Event. Information Fields Info Field 1: Class Instance. Info Field 2: Descriptor type. Info Field 3: Request index. Info Field 4: Not used. User Guide Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Device Class Hid Event Set 185 Device Class Hid Report Get ux_device_class_hid_event_set ux_device_class_hid_report_get Icon Icon Description Description This event represents a USBX Device Class Hid Event Set. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Hid Report Set This event represents a USBX Device Class Hid Report Get Event. Information Fields Info Field 1: Class Instance. Info Field 2: Descriptor type. Info Field 3: Request index. Info Field 4: Not used. Device Class Pima Activate ux_device_class_hid_report_set ux_device_class_pima_activate Icon Icon Description Description This event represents a USBX Device Class Hid Report Set Event. Information Fields Info Field 1: Class Instance. Info Field 2: Descriptor type. Info Field 3: Request index. Info Field 4: Not used. Device Class Pima Deactivate This event represents a USBX Device Class Pima Activate Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Pima Device Info Send ux_device_class_pima_deactivate ux_device_class_pima_device_info_send Icon Icon Description Description This event represents a USBX Device Class Pima Deactivate Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. This event represents a USBX Device Class Pima Device Info Send Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 186 USBX Trace Events Device Class Pima Event Get Device Class Pima Event Set ux_device_class_pima_event_get ux_device_class_pima_event_set Icon Icon Description Description This event represents a USBX Device Class Pima Event Get Event. Information Fields This event represents a USBX Device Class Pima Event Set Event. Information Fields Info Field 1: Class Instance. Info Field 2: Pima event. Info Field 3: Not used. Info Field 4: Not used. Device Class Pima Object Add Info Field 1: Class Instance. Info Field 2: Pima event. Info Field 3: Not used. Info Field 4: Not used. Device Class Pima Object Data Get ux_device_class_pima_object_add ux_device_class_pima_object_data_get Icon Icon Description Description This event represents a USBX Device Class Pima Object Add Event. Information Fields This event represents a USBX Device Class Pima Object Data Get Event. Information Fields Info Field 1: Class Instance. Info Field 2: Object handle. Info Field 3: Not used. Info Field 4: Not used. Device Class Pima Object Data Send Info Field 1: Class Instance. Info Field 2: Object handle. Info Field 3: Not used. Info Field 4: Not used. Device Class Pima Object Delete ux_device_class_pima_object_data_send ux_device_class_pima_object_delete Icon Icon Description Description This event represents a USBX Device Class Pima Object Data Send Event. Information Fields This event represents a USBX Device Class Pima Object Delete Event. Information Fields Info Field 1: Class Instance. Info Field 2: Object handle. Info Field 3: Not used. Info Field 4: Not used. User Guide Info Field 1: Class Instance. Info Field 2: Object handle. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Device Class Pima Object Handles Send Device Class Pima Object Info Get ux_device_class_pima_object_handles_send ux_device_class_pima_object_info_get Icon Icon Description Description This event represents a USBX Device Class Pima Object Handles Send Event. Information Fields Info Field 1: Class instance. Info Field 2: Storage ID. Info Field 3: Object format code. Info Field 4: Object association. Device Class Pima Object Info Send This event represents a USBX Device Class Pima Object Info Get Event. Information Fields Info Field 1: Class Instance. Info Field 2: Object handle. Info Field 3: Not used. Info Field 4: Not used. Device Class Pima Objects NumberSend ux_device_class_pima_object_info_send ux_device_class_pima_objects_number_send Icon Icon Description Description This event represents a USBX Device Class Pima Object Info Send Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Pima Partial Object Data Get This event represents a USBX Device Class Pima Object Number Send event. Information Fields Info Field 1: Class Instance. Info Field 2: Storage ID. Info Field 3: Object format code. Info Field 4: Object associate. Device Class Pima Response Send ux_device_class_pima_partial_object_data_get ux_device_class_pima_response_send Icon Icon Description Description This event represents a USBX Device Class Pima Partial Object Data Get Event. Information Fields Info Field 1: Class Instance. Info Field 2: Object handle. Info Field 3: Offset requested. Info Field 4: Length requested. 187 This event represents a USBX Device Class Pima Response Send Event. Information Fields Info Field 1: Class instance. Info Field 2: Response code. Info Field 3: Number parameter. Info Field 4: Pima parameter 1. Express Logic, Inc. 188 USBX Trace Events Device Class Pima Storage Id Send Device Class Pima Storage Info Send ux_device_class_pima_storage_id_send ux_device_class_pima_storage_info_send Icon Icon Description Description This event represents a USBX Device Class Pima Storage Id Send Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Rndis Activate This event represents a USBX Device Class Pima Storage Info Send Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Rndis Deactivate ux_device_class_rndis_activate ux_device_class_rndis_deactivate Icon Icon Description Description This event represents a USBX Device Class Rndis Activate Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Rndis Message Keep Alive This event represents a USBX Device Class Rndis Deactivate Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Rndis Message Query ux_device_class_rndis_msg_keep_alive ux_device_class_rndis_msg_query Icon Icon Description Description This event represents a USBX Device Class Rndis Message Keep Alive Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. User Guide This event represents a USBX Device Class Rndis Message Query Event. Information Fields Info Field 1: Class Instance. Info Field 2: Rndis OID. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Device Class Rndis Message Reset Device Class Rndis Message Set ux_device_class_rndis_msg_reset ux_device_class_rndis_msg_set Icon Icon Description Description This event represents a USBX Device Class Rndis Message Reset Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Rndis Packet Receive This event represents a USBX Device Class Rndis Message Set Event. Information Fields Info Field 1: Class Instance. Info Field 2: Rndis OID. Info Field 3: Not used. Info Field 4: Not used. Device Class Rndis Packet Transmit ux_device_class_rndis_packet_receive ux_device_class_rndis_packet_transmit Icon Icon Description Description This event represents a USBX Device Class Rndis Packet Receive Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Storage Activate This event represents a USBX Device Class Rndis Packet Transmit Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Class Storage Deactivate ux_device_class_storage_activate ux_device_class_storage_deactivate Icon Icon Description Description This event represents a USBX Device Class Storage Activate Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. 189 This event represents a USBX Device Class Storage Deactivate Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 190 USBX Trace Events Device Class Storage Format Device Class Storage Inquiry ux_device_class_storage_format ux_device_class_storage_inquiry Icon Icon Description Description This event represents a USBX Device Class Storage Format Event. Information Fields This event represents a USBX Device Class Storage Inquiry Event. Information Fields Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Not used. Info Field 4: Not used. Device Class Storage Mode Select Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Not used. Info Field 4: Not used. Device Class Storage Mode Sense ux_device_class_storage_mode_select ux_device_class_storage_mode_sense Icon Icon Description Description This event represents a USBX Device Class Storage Mode Select Event. Information Fields This event represents a USBX Device Class Storage Mode Sense Event. Information Fields Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Not used. Info Field 4: Not used. Device Class Storage Prevent Allow Media Removal ux_device_class_storage_prevent_allow_media_removal Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Not used. Info Field 4: Not used. Device Class Storage Read ux_device_class_storage_read Icon Icon Description Description This event represents a USBX Device Class Storage Prevent Allow Media Removal Event. This event represents a USBX Device Class Storage Read Event. Information Fields Information Fields Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Not used. Info Field 4: Not used. User Guide Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Sector. Info Field 4: Number sectors. TraceX User Guide Device Class Storage Read Capacity 191 Device Class Storage Read Format Capacity ux_device_class_storage_read_capacity ux_device_class_storage_read_format_capacity Icon Icon Description Description This event represents a USBX Device Class Storage Read Capacity Event. Information Fields Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Not used. Info Field 4: Not used. Device Class Storage Read TOC This event represents a USBX Device Class Storage Read Format Capacity Event. Information Fields Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Not used. Info Field 4: Not used. Device Class Storage Request Sense ux_device_class_storage_read_toc ux_device_class_storage_request_sense Icon Icon Description Description This event represents a USBX Device Class Storage Read TOC Event. Information Fields Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Not used. Info Field 4: Not used. Device Class Storage Start Stop This event represents a USBX Device Class Storage Request Sense Event. Information Fields Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Sense key. Info Field 4: Code. Device Class Storage Test Ready ux_device_class_storage_start_stop ux_device_class_storage_test_ready Icon Icon Description Description This event represents a USBX Device Class Storage Start Stop Event. Information Fields Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Not used. Info Field 4: Not used. This event represents a USBX Device Class Storage Test Ready Event. Information Fields Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 192 USBX Trace Events Device Class Storage Verify Device Class Storage Write ux_device_class_storage_verify ux_device_class_storage_write Icon Icon Description Description This event represents a USBX Device Class Storage Verify Event. Information Fields This event represents a USBX Device Class Storage Write Event. Information Fields Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Not used. Info Field 4: Not used. Device Stack Alternate Setting Get Info Field 1: Class Instance. Info Field 2: Lun. Info Field 3: Sector. Info Field 4: Number sectors. Device Stack Alternate Setting Set ux_device_stack_events_base ux_device_stack_alternate_setting_get Icon Icon Description Description This event represents a USBX Device Stack Alternate Setting Get Event. Information Fields This event represents a USBX Device Stack Alternate Setting Set Event. Information Fields Info Field 1: Interface value. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Stack Class Register Info Field 1: Interface value. Info Field 2: Alternate setting value. Info Field 3: Not used. Info Field 4: Not used. Device Stack Clear Feature ux_device_stack_class_register ux_device_stack_clear_feature Icon Icon Description Description This event represents a USBX Device Stack Class Register Event. Information Fields This event represents a USBX Device Stack Clear Feature Event. Information Fields Info Field 1: Class name. Info Field 2: Interface number. Info Field 3: Parameter. Info Field 4: Not used. User Guide Info Field 1: Request type. Info Field 2: Request value. Info Field 3: Request index. Info Field 4: Not used. TraceX User Guide Device Stack Configuration Get Device Stack Configuration Set ux_device_stack_configuration_get t ux_device_stack_configuration_set Icon Icon Description Description This event represents a USBX Device Stack Configuration Get Event. Information Fields This event represents a USBX Device Stack Configuration Set Event. Information Fields Info Field 1: Configuration value. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Stack Connect Info Field 1: Configuration value. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Stack Descriptor Send ux_device_stack_connect ux_device_stack_descriptor_send Icon Icon Description Description This event represents a USBX Device Stack Descriptor Send Event. Information Fields This event represents a USBX Device Stack Descriptor Send Event. Information Fields Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Descriptor type. Info Field 2: Request index. Info Field 3: Not used. Info Field 4: Not used. Device Stack Disconnect Device Stack Endpoint Stall ux_device_stack_disconnect ux_device_stack_endpoint_stall Icon Icon Description Description This event represents a USBX Device Stack Disconnect Event. Information Fields Info Field 1: Device. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. 193 This event represents a USBX Device Stack Endpoint Stall Event. Information Fields Info Field 1: Endpoint. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 194 USBX Trace Events Device Stack Get Status Device Stack Host Wakeup ux_device_stack_get_status ux_device_stack_host_wakeup Icon Icon Description Description This event represents a USBX Device Stack Get Status Event. Information Fields This event represents a USBX Device Stack Host Wakeup Event. Information Fields Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Stack Initialize Device Stack Interface Delete ux_device_stack_initialize ux_device_stack_interface_delete Icon Icon Description Description This event represents a USBX Device Stack Initialize Event. Information Fields This event represents a USBX Device Stack Interface Delete Event. Information Fields Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Interface. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Device Stack Interface Get Device Stack Interface Set ux_device_stack_interface_get ux_device_stack_interface_set Icon Icon Description Description This event represents a USBX Device Stack Interface Get Event. Information Fields This event represents a USBX Device Stack Interface Set Event. Information Fields Info Field 1: Interface value. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. User Guide Info Field 1: Request value. Info Field 2: Request index. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Device Stack Set Feature Device Stack Transfer Abort ux_device_stack_set_feature ux_device_stack_transfer_abort Icon Icon Description Description This event represents a USBX Device Stack Set Feature Event. Information Fields 195 This event represents a USBX Device Stack Transfer Abort Event. Information Fields Info Field 1: Request value. Info Field 2: Request index. Info Field 3: Not used. Info Field 4: Not used. Device Stack Transfer All Request Abort Info Field 1: Transfer request. Info Field 2: Completion code. Info Field 3: Not used. Info Field 4: Not used. Device Stack Transfer Request ux_device_stack_transfer_all_request_abort ux_device_stack_transfer_request Icon Icon Description Description This event represents a USBX Device Stack Transfer All Request Abort Event. Information Fields This event represents a USBX Device Stack Transfer Request Event. Information Fields Info Field 1: Endpoint. Info Field 2: Completion code. Info Field 3: Not used. Info Field 4: Not used. Host Class Asix Activate Info Field 1: Transfer request. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Asix Deactivate ux_host_class_asix_activate ux_host_class_asix_deactivate Icon Icon Description Description This event represents a USBX Host Class Asix Activate. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. This event represents a USBX Host Class Asix Deactivate Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 196 USBX Trace Events Host Class Asix Interrupt Notification Host Class Asix Read ux_host_class_asix_interrupt_notification ux_host_class_asix_read Icon Icon Description Description This event represents a USBX Host Class Asix Interrupt Notification Event. Information Fields This event represents a USBX Host Class Asix Read Event. Information Fields Info Field 1: Class Instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Asix Write Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. Host Class Audio Activate ux_host_class_asix_write ux_host_class_audio_activate Icon Icon Description Description This event represents a USBX Host Class Asix Write Event. Information Fields This event represents a USBX Host Class Audio Activate Event. Information Fields Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. Host Class Audio Control Value Get Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Audio Control Value Set ux_host_class_audio_control_value_get ux_host_class_audio_control_value_set Icon Icon Description Description This event represents a USBX Host Class Audio Control Value Get Event. Information Fields This event represents an internal NetX I/O driver deferred processing event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. User Guide Info Field 1: Class instance. Info Field 2: Audio control. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Host Class Audio Deactivate 197 Host Class Audio Read ux_host_class_audio_deactivate ux_host_class_audio_read Icon Icon Description Description This event represents a USBX Host Class Audio Deactivate Event. Information Fields This event represents a USBX Host Class Audio Read Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Audio Streaming Sampling Get Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. Host Class Audio Streaming Sampling Set ux_host_class_audio_streaming_sampling_get ux_host_class_audio_streaming_sampling_set Icon Icon Description Description This event represents a USBX Host Class Audio Streaming Sampling Get Event. Information Fields This event represents a USBX Host Class Audio Streaming Sampling Set Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Audio Write Info Field 1: Class instance. Info Field 2: Audio Sampling. Info Field 3: Not used. Info Field 4: Not used. Host Class Cdc Acm Activate ux_host_class_audio_write ux_host_class_cdc_acm_activate Icon Icon Description Description This event represents a USBX Host Class Audio Write Event. Information Fields Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. This event represents a USBX Host Class Cdc Acm Activate Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 198 USBX Trace Events Host Class Cdc Acm Deactivate Host Class Cdc Acm Ioctl Abort In Pipe ux_host_class_cdc_acm_deactivate ux_host_class_cdc_acm_ioctl_abort_in_pipe Icon Icon Description Description This event represents a USBX Host Class Cdc Acm Deactivate Event. Information Fields This event represents a USBX Host Class Cdc Acm Ioctl Abort In Pipe Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Cdc Acm Ioctl Abort Out Pipe Info Field 1: Class instance. Info Field 2: Endpoint. Info Field 3: Not used. Info Field 4: Not used. Host Class Cdc Acm Ioctl Get Device Status ux_host_class_cdc_acm_ioct_abort_out_pipe ux_host_class_cdc_acm_ioctl_get_device_status Icon Icon Description Description This event represents a USBX Host Class Cdc Acm Ioctl Abort Out Pipe Event. Information Fields This event represents a USBX Host Class Cdc Acm Ioctl Get Device Status Event. Information Fields Info Field 1: Class instance. Info Field 2: Endpoint. Info Field 3: Not used. Info Field 4: Not used. Host Class Cdc Acm Ioctl Get Line Coding ux_host_class_cdc_acm_ioctl_get_line_coding Info Field 1: Class instance. Info Field 2: Device status. Info Field 3: Not used. Info Field 4: Not used. Host Class Cdc Acm Ioctl Notification Callback ux_host_class_cdc_acm_ioctl_notification_callback Icon Icon Description This event represents a USBX Host Class Cdc Acm Ioctl Get Line Coding Event. Description This event represents a USBX Host Class Cdc Acm Ioctl Notification Callback Event. Information Fields Info Field 1: Class instance. Info Field 2: Parameter. Info Field 3: Not used. Info Field 4: Not used. User Guide Information Fields Info Field 1: Class instance. Info Field 2: Parameter. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Host Class Cdc Acm Ioctl Send Break 199 Host Class Cdc Acm Ioctl Set Line Coding ux_host_class_cdc_acm_ioctl_send_break ux_host_class_cdc_acm_ioctl_set_line_coding Icon Icon Description Description This event represents a USBX Host Class Cdc Acm Ioctl Send Break Event. Information Fields Info Field 1: Class instance. Info Field 2: Parameter. Info Field 3: Not used. Info Field 4: Not used. Host Class Cdc Acm Ioctl Set Line State This event represents a USBX Host Class Cdc Acm Ioctl Set Line Coding Event. Information Fields Info Field 1: Class instance. Info Field 2: Parameter. Info Field 3: Not used. Info Field 4: Not used. Host Class Cdc Acm Read ux_host_class_cdc_acm_ioctl_set_line_state ux_host_class_cdc_acm_read Icon Icon Description Description This event represents a USBX Host Class Cdc Acm Ioctl Set Line State Event. Information Fields Info Field 1: Class instance. Info Field 2: Parameter. Info Field 3: Not used. Info Field 4: Not used. Host Class Cdc Acm Reception Start This event represents a USBX Host Class Cdc Acm Read Event. Information Fields Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested Length. Info Field 4: Not used. Host Class Cdc Acm Reception Stop ux_host_class_cdc_acm_reception_start ux_host_class_cdc_acm_reception_stop Icon Icon Description Description This event represents a USBX Host Class Cdc Acm Reception Start Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. This event represents a USBX Host Class Cdc Acm Reception Stop Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 200 USBX Trace Events Host Class Cdc Acm Write Host Class Dpump Activate ux_host_class_cdc_acm_write ux_host_class_dpump_activate Icon Icon Description Description This event represents a USBX Host Class Cdc Acm Write Event. Information Fields This event represents a USBX Host Class Dpump Activate Event. Information Fields Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested Length. Info Field 4: Not used. Host Class Dpump Deactivate Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Dpump Read ux_host_class_dpump_deactivate ux_host_class_dpump_read Icon Icon Description Description This event represents a USBX Host Class Dpump Deactivate Event. Information Fields This event represents a USBX Host Class Dpump Read Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Dpump Write Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. Host Class Hid Activate ux_host_class_dpump_write ux_host_class_hid_activate Icon Icon Description Description This event represents a USBX Host Class Dpump Write Event. Information Fields This event represents a USBX Host Class Hid Activate Event. Information Fields Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. User Guide Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Host Class Hid Client Register 201 Host Class Hid Deactivate ux_host_class_hid_client_register ux_host_class_hid_deactivate Icon Icon Description Description This event represents a USBX Host Class Hid Client Register Event. Information Fields This event represents a USBX Host Class Hid Deactivate Event. Information Fields Info Field 1: Hid client name. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Hid Idle Get Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Hid Idle Set ux_host_class_hid_idle_get ux_host_class_hid_idle_set Icon Icon Description Description This event represents a USBX Host Class Hid Idle Get Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Hid Keyboard Activate This event represents a USBX Host Class Hid Idle Set Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Hid Keyboard Deactivate ux_host_class_hid_keyboard_activate ux_host_class_hid_keyboard_deactivate Icon Icon Description Description This event represents a USBX Host Class Hid Keyboard Activate Event. Information Fields Info Field 1: Class instance. Info Field 2: Hid client instance. Info Field 3: Not used. Info Field 4: Not used. This event represents a USBX Host Class Hid Keyboard Deactivate Event. Information Fields Info Field 1: Class instance. Info Field 2: Hid client instance. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 202 USBX Trace Events Host Class Hid Mouse Activate Host Class Hid Mouse Deactivate ux_host_class_hid_mouse_activate ux_host_class_hid_mouse_deactivate Icon Icon Description Description This event represents a USBX Host Class Hid Mouse Activate Event. Information Fields This event represents a USBX Host Class Hid Mouse Deactivate Event. Information Fields Info Field 1: Class instance. Info Field 2: Hid client instance. Info Field 3: Not used. Info Field 4: Not used. Host Class Hid Remote Control Activate Info Field 1: Class instance. Info Field 2: Hid client instance. Info Field 3: Not used. Info Field 4: Not used. Host Class Hid Remote Control Deactivate ux_host_class_hid_remote_control_activate ux_host_class_hid_remote_control_deactivate Icon Icon Description Description This event represents a USBX Host Class Hid Remote Control Activate Event. Information Fields This event represents a USBX Host Class Hid Remote Control Deactivate Event. Information Fields Info Field 1: Class instance. Info Field 2: Hid client instance. Info Field 3: Not used. Info Field 4: Not used. Host Class Hid Report Get Info Field 1: Class instance. Info Field 2: Hid client instance. Info Field 3: Not used. Info Field 4: Not used. Host Class Hid Report Set ux_host_class_hid_report_get ux_host_class_hid_report_set Icon Icon Description Description This event represents a USBX Host Class Hid Report Get. Information Fields This event represents a USBX Host Class Hid Report Set. Information Fields Info Field 1: Class instance. Info Field 2: Client report. Info Field 3: Not used. Info Field 4: Not used. User Guide Info Field 1: Class instance. Info Field 2: Client report. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Host Class Hub Activate Host Class Hub Change Detect ux_host_class_hub_activate ux_host_class_hub_change_detect Icon Icon Description Description This event represents a USBX Host Class Hub Activate Event. Information Fields 203 This event represents a USBX Host Class Hub Change Detect Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Hub Deactivate ux_host_class_hub_deactivate Icon Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Hub Port Change Connection Process ux_host_class_hub_port_change_connection_process Icon Description This event represents a USBX Host Class Hub Deactivate Event. Description This event represents a USBX Host Class Hub Port Change Connection Process Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Hub Port Change Enable Process ux_host_class_hub_port_change_enable_process Information Fields Info Field 1: Class instance. Info Field 2: Port. Info Field 3: Port status. Info Field 4: Not used. Host Class Hub Port Change Over Current Process ux_host_class_hub_port_change_over_current_process Icon Icon Description Description This event represents a USBX Host Class Hub Port Change Enable Process Event. Information Fields Info Field 1: Class instance. Info Field 2: Port. Info Field 3: Port status. Info Field 4: Not used. This event represents allocating a packet via nx_packet_allocate. Information Fields Info Field 1: Class instance. Info Field 2: Port. Info Field 3: Port status. Info Field 4: Not used. Express Logic, Inc. 204 USBX Trace Events Host Class Hub Port Change Reset Process ux_host_class_hub_port_change_reset_process Host Class Hub Port Change Suspend Process ux_host_class_hub_port_change_suspend_process Icon Icon Description This event represents a USBX Host Class Hub Port Change Reset Process Event. Description This event represents a USBX Host Class Hub Port Change Suspend Process Event. Information Fields Info Field 1: Hub. Info Field 2: Port. Info Field 3: Port status. Info Field 4: Not used. Information Fields Info Field 1: Class instance. Info Field 2: Port. Info Field 3: Port status. Info Field 4: Not used. Host Class Pima Activate Host Class Pima Deactivate ux_host_class_pima_activate ux_host_class_pima_deactivate Icon Icon Description Description This event represents a USBX Host Class Pima Activate Event. Information Fields This event represents a USBX Host Class Pima Deactivate Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Pima Device Info Get Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Pima Device Reset ux_host_class_pima_device_info_get ux_host_class_pima_device_reset Icon Icon Description Description This event represents a USBX Host Class Pima Device Info Get Event. Information Fields This event represents a USBX Host Class Pima Device Reset Event. Information Fields Info Field 1: Class instance. Info Field 2: Pima device. Info Field 3: Not used. Info Field 4: Not used. User Guide Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Host Class Pima Notification Host Class Pima Number Objects Get ux_host_class_pima_notification ux_host_class_pima_num_objects_get Icon Icon Description Description This event represents a USBX Host Class Pima Notification Event. Information Fields 205 This event represents a USBX Host Class Pima Number Objects Get Event. Information Fields Info Field 1: Class instance. Info Field 2: Event code. Info Field 3: Transaction ID. Info Field 4: Parameter1. Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Pima Object Close Host Class Pima Object Copy ux_host_class_pima_object_close ux_host_class_pima_object_copy Icon Icon Description Description This event represents a USBX Host Class Pima Object Close Event. Information Fields Info Field 1: Class instance. Info Field 2: Object. Info Field 3: Not used. Info Field 4: Not used. Host Class Pima Object Delete This event represents a USBX Host Class Pima Object Copy Event. Information Fields Info Field 1: Class instance. Info Field 2: Object handle. Info Field 3: Not used. Info Field 4: Not used. Host Class Pima Object Get ux_host_class_pima_object_delete ux_host_class_pima_object_get Icon Icon Description Description This event represents a USBX Host Class Pima Object Delete Event. Information Fields Info Field 1: Class instance. Info Field 2: Object handle. Info Field 3: Not used. Info Field 4: Not used. This event represents getting RARP information via nx_rarp_info_get. Information Fields Info Field 1: Class instance. Info Field 2: Object handle. Info Field 3: Object. Info Field 4: Not used. Express Logic, Inc. 206 USBX Trace Events Host Class Pima Object Info Get Host Class Pima Object Info Send ux_host_class_pima_object_info_get ux_host_class_pima_object_info_send Icon Icon Description Description This event represents a USBX Host Class Pima Object Info Get Event. Information Fields This event represents a USBX Host Class Pima Object Info Send Event. Information Fields Info Field 1: Class instance. Info Field 2: Object handle. Info Field 3: Object. Info Field 4: Not used. Info Field 1: Class instance. Info Field 2: Object. Info Field 3: Not used. Info Field 4: Not used. Host Class Pima Object Move Host Class Pima Object Send ux_host_class_pima_object_move ux_host_class_pima_object_send Icon Icon Description Description This event represents a USBX Host Class Pima Object Move Event. Information Fields This event represents a USBX Host Class Pima Object Send Event. Information Fields Info Field 1: Class instance. Info Field 2: Object handle. Info Field 3: Object. Info Field 4: Not used. Host Class Pima Object Transfer Abort Info Field 1: Class instance. Info Field 2: Object. Info Field 3: Object buffer. Info Field 4: Object length. Host Class Pima Read ux_host_class_pima_object_transfer_abort ux_host_class_pima_read Icon Icon Description Description This event represents a USBX Host Class Pima Object Transfer Abort Event. Information Fields This event represents a USBX Host Class Pima Read Event. Information Fields Info Field 1: Class instance. Info Field 2: Object handle. Info Field 3: Object. Info Field 4: Not used. User Guide Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Data length. Info Field 4: Not used. TraceX User Guide Host Class Pima Request Cancel Host Class Pima Session Close ux_host_class_pima_request_cancel ux_host_class_pima_session_close Icon Icon Description Description This event represents a USBX Host Class Pima Request Cancel Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Pima Session Open This event represents a USBX Host Class Pima Session Close Event. Information Fields Info Field 1: Class instance. Info Field 2: Pima session. Info Field 3: Not used. Info Field 4: Not used. Host Class Pima Storage Ids Get ux_host_class_pima_session_open ux_host_class_pima_storage_ids_get Icon Icon Description Description This event represents a USBX Host Class Pima Session Open Event. Information Fields Info Field 1: Class instance. Info Field 2: Pima session. Info Field 3: Not used. Info Field 4: Not used. Host Class Pima Storage Info Get This event represents a USBX Host Class Pima Storage Ids Get Event. Information Fields Info Field 1: Class instance. Info Field 2: Storage ID array. Info Field 3: Storage ID length. Info Field 4: Not used. Host Class Pima Thumb Get ux_host_class_pima_storage_info_get ux_host_class_pima_thumb_get Icon Icon Description Description This event represents a USBX Host Class Pima Storage Info Get Event. 207 This event represents unaccepting a TCP server connection via nx_tcp_server_socket_unaccept. Information Fields Info Field 1: Class instance. Info Field 2: Storage ID. Info Field 3: Storage. Info Field 4: Not used. Information Fields Info Field 1: Class instance. Info Field 2: Object handle. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 208 USBX Trace Events Host Class Printer Activate Host Class Pima Write ux_host_class_pima_write ux_host_class_printer_activate Icon Icon Description Description This event represents a USBX Host Class Pima Write. Information Fields This event represents a USBX Host Class Printer Activate Event. Information Fields Info Field 1: Class Instance. Info Field 2: Data pointer. Info Field 3: Data length. Info Field 4: Not used. Host Class Printer Deactivate Info Field 1: Pointer to IP instance. Info Field 2: Pointer to socket. Info Field 3: Type of service. Info Field 4: Receive window size. Host Class Printer Name Get ux_host_class_printer_deactivate ux_host_class_printer_name_get Icon Icon Description Description This event represents a USBX Host Class Printer Deactivate Event. Information Fields This event represents a USBX Host Class Printer Name Get Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Printer Read Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Printer Soft Reset ux_host_class_printer_read ux_host_class_printer_soft_reset Icon Icon Description Description This event represents a USBX Host Class Printer Read Event. Information Fields This event represents a USBX Host Class Printer Soft Reset Event. Information Fields Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. User Guide Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Host Class Printer Status Get 209 Host Class Printer Write ux_host_class_printer_status_get ux_host_class_printer_write Icon Icon Description Description This event represents a USBX Host Class Printer Status Get Event. Information Fields This event represents a USBX Host Class Printer Write. Information Fields Info Field 1: Class instance. Info Field 2: Printer status. Info Field 3: Not used. Info Field 4: Not used. Host Class Prolific Activate Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. Host Class Prolific Deactivate ux_host_class_prolific_activate ux_host_class_prolific_deactivate Icon Icon Description Description This event represents a USBX Host Class Prolific Activate Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Prolific Ioctl Abort In Pipe This event represents a USBX Host Class Prolific Deactivate Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Prolific Ioctl Abort Out Pipe ux_host_class_prolific_ioctl_abort_in_pipe ux_host_class_prolific_ioctl_abort_out_pipe Icon Icon Description Description This event represents a USBX Host Class Prolific Ioctl Abort In Pipe Event. Information Fields Info Field 1: Class instance. Info Field 2: Endpoint. Info Field 3: Not used. Info Field 4: Not used. This event represents a USBX Host Class Prolific Ioctl Abort Out Pipe Event. Information Fields Info Field 1: Class instance. Info Field 2: Endpoint. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 210 USBX Trace Events Host Class Prolific Ioctl Get Device Status Host Class Prolific Ioctl Get Line Coding ux_host_class_prolific_ioctl_get_device_status ux_host_class_prolific_ioctl_get_line_coding Icon Icon Description Description This event represents a USBX Host Class Prolific Ioctl Get Device Status Event. Information Fields This event represents a USBX Host Class Prolific Ioctl Get Line Coding Event. Information Fields Info Field 1: Class instance. Info Field 2: Device status. Info Field 3: Not used. Info Field 4: Not used. Host Class Prolific Ioctl Purge ux_host_class_prolific_ioctl_purge Info Field 1: Class instance. Info Field 2: Parameter. Info Field 3: Not used. Info Field 4: Not used. Host Class Prolific Ioctl Report Device Status Change ux_host_class_prolific_ioctl_report_device_status _change Icon Icon Description This event represents a USBX Host Class Prolific Ioctl Purge Event. Information Fields Info Field 1: Class instance. Info Field 2: Parameter. Info Field 3: Not used. Info Field 4: Not used. Host Class Prolific Ioctl Send Break Description This event represents a USBX Host Class Prolific Ioctl Report Device Status Change Event. Information Fields Info Field 1: Class instance. Info Field 2: Parameter. Info Field 3: Not used. Info Field 4: Not used. Host Class Prolific Ioctl Set Line Coding ux_host_class_prolific_ioctl_send_break ux_host_class_prolific_ioctl_set_line_coding Icon Icon Description Description This event represents a USBX Host Class Prolific Ioctl Send Break Event. Information Fields This event represents a USBX Host Class Prolific Ioctl Set Line Coding Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. User Guide Info Field 1: Class instance. Info Field 2: Parameter. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Host Class Prolific Ioctl Set Line State 211 Host Class Prolific Read ux_host_class_prolific_ioctl_set_line_state ux_host_class_prolific_read Icon Icon Description Description This event represents a USBX Host Class Prolific Ioctl Set Line State Event. Information Fields This event represents a USBX Host Class Prolific Read Event. Information Fields Info Field 1: Class instance. Info Field 2: Parameter. Info Field 3: Not used. Info Field 4: Not used. Host Class Prolific Reception Start Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. Host Class Prolific Reception Stop ux_host_class_prolific_reception_start ux_host_class_prolific_reception_stop Icon Icon Description Description This event represents a USBX Host Class Prolific Reception Start Event. Information Fields This event represents a USBX Host Class Prolific Reception Stop Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Prolific Write Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Storage Activate ux_host_class_prolific_write ux_host_class_storage_activate Icon Icon Description Description This event represents a USBX Host Class Prolific Write Event. Information Fields Info Field 1: Class instance. Info Field 2: Data pointer. Info Field 3: Requested length. Info Field 4: Not used. This event represents a USBX Host Class Storage Activate Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 212 USBX Trace Events Host Class Storage Deactivate Host Class Storage Media Capacity Get ux_host_class_storage_deactivate ux_host_class_storage_media_capacity_get Icon Icon Description Description This event represents a USBX Host Class Storage Deactivate Event. Information Fields This event represents a USBX Host Class Storage Media Capacity Get Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Storage Media Format Capacity Get ux_host_class_storage_media_format_capacity_get Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Storage Media Mount ux_host_class_storage_media_mount Icon Icon Description Description This event represents a USBX Host Class Storage Media Format Capacity Get Event. This event represents a USBX Host Class Storage Media Mount Event. Information Fields Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Storage Media Open Info Field 1: Class instance. Info Field 2: Sector. Info Field 3: Not used. Info Field 4: Not used. Host Class Storage Media Read ux_host_class_storage_media_open ux_host_class_storage_media_read Icon Icon Description Description This event represents a USBX Host Class Storage Media Open Event. This event represents a USBX Host Class Storage Media Read Event. Information Fields Information Fields Info Field 1: Class instance. Info Field 2: Media. Info Field 3: Not used. Info Field 4: Not used. User Guide Info Field 1: Class instance. Info Field 2: Sector start. Info Field 3: Sector count. Info Field 4: Data pointer. TraceX User Guide Host Class Storage Media Write Host Class Storage Request Sense ux_host_class_storage_media_write ux_host_class_storage_request_sense Icon Icon Description Description This event represents a USBX Host Class Storage Media Write Event. Information Fields Info Field 1: Class instance. Info Field 2: Sector start. Info Field 3: Sector count. Info Field 4: Data pointer. Host Class Storage Start Stop This event represents a USBX Host Class Storage Request Sense Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Class Storage Unit Ready Test ux_host_class_storage_start_stop ux_host_class_storage_unit_ready_test Icon Icon Description Description This event represents a USBX Host Class Storage Start Stop Event. Information Fields Info Field 1: Class instance. Info Field 2: Start stop signal. Info Field 3: Not used. Info Field 4: Not used. Host Stack Class Instance Create This event represents a USBX Host Class Storage Unit Ready Test Event. Information Fields Info Field 1: Class instance. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Stack Class Instance Destroy ux_host_stack_class_instance_create ux_host_stack_class_instance_create Icon Icon Description Description This event represents a USBX Host Stack Class Instance Create Event. Information Fields Info Field 1: Class. Info Field 2: Class Instance. Info Field 3: Not used. Info Field 4: Not used. 213 This event represents a USBX Host Stack Class Instance Destroy Event. Information Fields Info Field 1: Class. Info Field 2: Class Instance. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 214 USBX Trace Events Host Stack Configuration Delete Host Stack Configuration Enumerate ux_host_stack_configuration_delete ux_host_stack_configuration_enumerate Icon Icon Description Description This event represents a USBX Host Stack Configuration Delete Event. Information Fields This event represents a USBX Host Stack Configuration Enumerate Event. Information Fields Info Field 1: Configuration. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Stack Configuration Instance Create Info Field 1: Device. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Stack Configuration Instance Delete ux_host_stack_configuration_instance_create ux_host_stack_configuration_instance_delete Icon Icon Description Description This event represents a USBX Host Stack Configuration Instance Create Event. Information Fields This event represents a USBX Host Stack Configuration Instance Delete Event. Information Fields Info Field 1: Configuration. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Stack Configuration Set Info Field 1: Configuration. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Stack Device Address Set ux_host_stack_configuration_set ux_host_stack_device_address_set Icon Icon Description Description This event represents a USBX Host Stack Configuration Set Event. Information Fields This event represents a USBX Host Stack Device Address Set Event. Information Fields Info Field 1: Configuration. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. User Guide Info Field 1: Device. Info Field 2: Device Address. Info Field 3: Not used. Info Field 4: Not used. TraceX User Guide Host Stack Device Configuration Get Host Stack Device Configuration Select ux_host_stack_device_configuration_get ux_host_stack_device_configuration_select Icon Icon Description Description This event represents a USBX Host Stack Device Configuration Get Event. Information Fields 215 This event represents a USBX Host Stack Device Configuration Select Event. Information Fields Info Field 1: Device. Info Field 2: Configuration. Info Field 3: Not used. Info Field 4: Not used. Host Stack Device Descriptor Read Info Field 1: Device. Info Field 2: Configuration. Info Field 3: Not used. Info Field 4: Not used. Host Stack Device Get ux_host_stack_device_descriptor_read ux_host_stack_device_get Icon Icon Description Description This event represents a USBX Host Stack Device Descriptor Read Event. Information Fields This event represents a USBX Host Stack Device Get Event. Information Fields Info Field 1: Device. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Stack Device Remove Info Field 1: Device index. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Stack Device Resource Free ux_host_stack_device_remove ux_host_stack_device_resource_free Icon Icon Description Description This event represents a USBX Host Stack Device Remove Event. Information Fields Info Field 1: Hcd. Info Field 2: Parent. Info Field 3: Port Index. Info Field 4: Device. This event represents a USBX Host Stack Device Resource Free Event. Information Fields Info Field 1: Device. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 216 USBX Trace Events Host Stack Endpoint Instance Create Host Stack Endpoint Instance Delete ux_host_stack_endpoint_instance_create ux_host_stack_endpoint_instance_delete Icon Icon Description Description This event represents a USBX Host Stack Endpoint Instance Create Event. Information Fields This event represents a USBX Host Stack Endpoint Instance Delete Event. Information Fields Info Field 1: Device. Info Field 2: Endpoint. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Device. Info Field 2: Endpoint. Info Field 3: Not used. Info Field 4: Not used. Host Stack Endpoint Reset Host Stack Endpoint Transfer Abort ux_host_stack_endpoint_reset ux_host_stack_endpoint_transfer_abort Icon Icon Description Description This event represents a USBX Host Stack Endpoint Reset Event. Information Fields This event represents a USBX Host Stack Endpoint Transfer Abort Event. Information Fields Info Field 1: Device. Info Field 2: Endpoint. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Endpoint. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Stack Host Controller Register Host Stack Initialize ux_host_stack_hcd_register ux_host_stack_initialize Icon Icon Description Description This event represents a USBX Host Stack Host Controller Register. Information Fields This event represents a USBX Host Stack Initialize Event. Information Fields Info Field 1: Hcd Name. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Not used. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. User Guide TraceX User Guide Host Stack Interface Endpoint Get 217 Host Stack Interface Instance Create Internal TCP retry event ux_host_stack_interface_instance_create Icon Icon Description Description This event represents an internal NetX TCP retry event. Information Fields Info Field 1: Interface. Info Field 2: Endpoint index. Info Field 3: Not used. Info Field 4: Not used. Host Stack Interface Instance Delete This event represents a USBX Host Stack Interface Instance Create Event. Information Fields Info Field 1: Interface. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Stack Interface Set ux_host_stack_interface_instance_delete ux_host_stack_interface_set Icon Icon Description Description This event represents a USBX Host Stack Interface Instance Delete Event. Information Fields Info Field 1: Interface. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Stack Interface Setting Select This event represents a USBX Host Stack Interface Set Event. Information Fields Info Field 1: Interface. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Host Stack New Configuration Create ux_host_stack_interface_setting_select ux_host_stack_new_configuration_create Icon Icon Description Description This event represents a USBX Host Stack Interface Setting Select Event. Information Fields Info Field 1: Interface. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. This event represents a USBX Host Stack New Configuration Create Event. Information Fields Info Field 1: Device. Info Field 2: Configuration. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 218 USBX Trace Events Host Stack New Device Create Host Stack New Endpoint Create ux_host_stack_new_device_create ux_host_stack_new_endpoint_create Icon Icon Description Description This event represents a USBX Host Stack New Device Create Event. Information Fields This event represents a USBX Host Stack New Endpoint Create Event. Information Fields Info Field 1: Hcd. Info Field 2: Device owner. Info Field 3: Port index. Info Field 4: Device. Host Stack Root Hub Change Process Info Field 1: Interface. Info Field 2: Endpoint. Info Field 3: Not used. Info Field 4: Not used. Host Stack Root Hub Device Extraction ux_host_stack_rh_change_process ux_host_stack_rh_device_extraction Icon Icon Description Description This event represents a USBX Host Stack Root Hub Change Process. Information Fields This event represents a USBX Host Stack Root Hub Device Extraction Event. Information Fields Info Field 1: Port index. Info Field 2: Not used. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Hcd. Info Field 2: Port index. Info Field 3: Not used. Info Field 4: Not used. Host Stack Root Hub Device Insertion Host Stack Transfer Request ux_host_stack_rh_device_insertion ux_host_stack_transfer_request Icon Icon Description Description This event represents a USBX Host Stack Root Hub Device Insertion. Information Fields This event represents a USBX Host Stack Transfer Request. Information Fields Info Field 1: Hcd. Info Field 2: Port index. Info Field 3: Not used. Info Field 4: Not used. Info Field 1: Device. Info Field 2: Endpoint. Info Field 3: Transfer request. Info Field 4: Not used. User Guide TraceX User Guide Host Stack Transfer Request Abort USB Error Internal I/O driver get status ux _error Icon Icon Description Description This event represents a USBX Host Stack Transfer Request Abort. 219 This event represents a USBX Error Event. Information Fields Information Fields Info Field 1: Device. Info Field 2: Endpoint. Info Field 3: Transfer request. Info Field 4: Not used. Info Field 1: USBX error. Info Field 2: Error Name. Info Field 3: Not used. Info Field 4: Not used. Express Logic, Inc. 220 USBX Trace Events User Guide 10 CHAPTER 1 Customer User Events This chapter contains a description of how to create user-defined events and custom icons and information fields for such events. This chapter includes the following sections: 1 Inserting User-Defined Events 222 1 Default Display of User-Defined Events 222 1 Defining Custom User-Defined Event Icons 224 Express Logic, Inc. 222 Customer User Events Inserting User-Defined Events ThreadX provides the ability for developers to log their own user-defined events, providing even more useful information that can be viewed graphically by TraceX. User-defined event numbers range from TX_TRACE_USER_EVENT_START (4096) through TX_TRACE_USER_EVENT_END (65535), inclusive. The placement of the events in the trace buffer is done via the tx_trace_user_event_insert, defined in Chapter 5. The following example calls insert two user-defined events into the current trace buffer on the target, namely user-defined event 4096 and event 4098: tx_trace_user_event_insert(4096, 1, 2, 3, 4); tx_trace_user_event_insert(4098,0x100,0x200,0x300,0x400); Default Display of User-Defined Events By default, TraceX displays all user events with a default user-defined Event icon as described in Chapter 6. Figure 10.1 shows the default user-defined event icon for events 202 User Guide TraceX User Guide 223 and 203, which were placed in the event buffer via the previous tx_trace_user_event_insert examples. FIGURE 10.1 Detailed information is also available for user-defined Events. Figure 10.2 shows the detailed event information for event 202, which has event number 4096 and shows the specified 4 information fields. FIGURE 10.2 Express Logic, Inc. 224 Customer User Events Defining Custom User-Defined Event Icons TraceX also provides the user the ability to create custom user-defined event icons as well as custom information field labels. This is achieved by adding event icon specifications to the eltrxcustom.trxc configuration file, which is located in the CustomEvents sub-directory in the main TraceX installation directory. An example directory path is shown in Figure 10.3. FIGURE 10.3 The eltrxcustom.trxc custom event configuration file is a simple ASCII text file containing 0 or more custom event definitions. The format of the file is as follows: //Comments Start [custom event definition(s)] End Each line between Start and End is used to defined a single custom event. TraceX provides a template version of this file with no custom events defined (nothing between the “Start” User Guide TraceX User Guide 225 and “End” labels). The format of a custom event definition is as follows: number,name, abbreviation,top_color, bottom_color,label1,lab el2,label2,label4 where: number Defines the user-defined event number, between 4096 and 65535, inclusive. name Defines the logical name for the userdefined event. abbreviation Defines the 2-letter user-defined event abbreviation. top_color Defines the RGB value for the top-half of the icon, which is a three digit number in parenthesis. Some typical RGB definitions are BLACK = (0,0,0) WHITE = (255,255,255) RED = (255,0,0) GREEN = (0,255,0) BLUE = (0,0,255) YELLOW = (255,255,0) CYAN = (0,255,255) MAGENTA = (255,0,255) Using the RBG specification gives the user a broad range of colors for each user-defined icon. For more information on RBG color definition, please see: http://en.wikipedia.org/wiki/RGB#Digital_representations botton_color Defines the RGB value for the bottom- half of the icon, which is a three digit number in parenthesis. Express Logic, Inc. 226 Customer User Events label1 Label for info_field_1, as specified in the tx_trace_user_event_insert call. label2 Label for info_field_2, as specified in the tx_trace_user_event_insert call. label3 Label for info_field_3, as specified in the tx_trace_user_event_insert call. label4 Label for info_field_4, as specified in the tx_trace_user_event_insert call. Example definitions for each of the two user-defined events used in this chapter are shown in Figure 10.4. The first definition is for event 4096 at line 5 of the eltrxcustom.trxc file. This definition gives userdefined event 4096 the name First_User_Event, specifies a two-letter abbreviation of FE, makes the top portion of the icon red, the bottom portion of the icon green, and names the information fields as First_Info1, First_Info2, First_Info3, and User Guide TraceX User Guide 227 First_Info4. User-defined event 4098 is defined similarly at line 6 of eltrxcustom.trxc. FIGURE 10.4 Since the eltrxcustom.trxc file is read by TraceX during initialization, TraceX must be exited and restarted before the custom icon definitions can take effect. Figure 10.5 shows the TraceX display of user- Express Logic, Inc. 228 Customer User Events defined events 202 and 203 with the custom event icons defined in eltrxcustom.trxc. FIGURE 10.5 The additional information in the custom event definition is shown when the event is selected via a double-click, mouse-over, or selection of the current event button. Figure 10.6 shows the double-click selection on event 202. Note that the event name User Guide TraceX User Guide 229 and information fields all match the sample definition that was added to eltrxcustom.trxc. FIGURE 10.6 Express Logic, Inc. 230 Customer User Events User Guide 11 CHAPTER 1 Format of Event Trace Buffer ThreadX provides built-in event trace support for all ThreadX services, thread state changes, and userdefined events. To use event trace, simply build the ThreadX, NetX, and FileX libraries with TX_ENABLE_EVENT_TRACE defined and enable tracing by calling the tx_trace_enable function. This chapter describes that process. 1 1 1 1 1 Event Trace Format 232 Event Trace Control Header 232 Control Header ID 233 Timer Valid Mask 233 Trace Base Address 234 Registry Start and End Pointers 234 Registry Name Size 234 Buffer Start and End Pointers 234 Current Buffer Pointer 235 Event Trace Object Registry 235 Object Available Flag 235 Object Entry Type 236 Object Pointer 237 Object Reserved Fields 237 Object Parameters 237 Object Name 237 Event Trace Entries 238 Thread Pointer 238 Thread Priority 239 Event ID 239 Information Fields (1-4) 239 Express Logic, Inc. 232 Format of Event Trace Buffer Event Trace Format The format of the ThreadX event trace buffer is divided into three sections, namely the control header, object registry, and the trace entries. The following describes the general layout of the ThreadX event trace buffer: Control Header Object Registry Entry 0 … Object Register Entry “n” Event Trace Entry 0 … Event Trace Entry “n” Event Trace Control Header The control header defines the exact layout of the event trace buffer. This includes how many ThreadX objects can be registered as well as how many events can be recorded. In addition, the control header defines where each of the elements of the User Guide TraceX User Guide 233 trace buffer resides. The following data structure defines the control header: typedef struct TX_TRACE_CONTROL_HEADER_STRUCT { ULONG tx_trace_control_header_id; ULONG tx_trace_control_header_timer_valid_ mask; ULONG tx_trace_control_header_trace_base_a ddress; ULONG tx_trace_control_header_object_regis try_start_pointer; USHORT tx_trace_control_header_reserved1; USHORT tx_trace_control_header_object_regis try_name_size; ULONG tx_trace_control_header_object_regis try_end_pointer; ULONG tx_trace_control_header_buffer_start _pointer; ULONG tx_trace_control_header_buffer_end_p ointer; ULONG tx_trace_control_header_buffer_curre nt_pointer; ULONG tx_trace_control_header_reserved2; ULONG tx_trace_control_header_reserved3; ULONG tx_trace_control_header_reserved4; } TX_TRACE_CONTROL_HEADER; Control Header ID The control header ID consists of the 32-bit HEX value of 0x54585442, which corresponds to the ASCII characters TXTB. Since this value is written as a 32-bit unsigned variable, it can also be used to detect the endianness of the event trace buffer. For example, if the value in the first four byes of memory is 0x54, 0x58, 0x54, 0x42, the event trace buffer was written in big endian format. Otherwise, the event trace buffer was written in little endian format. Timer Valid Mask The timer valid mask defines how many bits of the timestamp in the actual event trace entries are valid. For example, if the time-stamp source has 16-bits, the value in this field should be 0xFFFF. A 32-bit time-stamp source would have a value of 0xFFFFFFFF. This value is defined by the TX_TRACE_TIME_MASK constant in tx_port.h. Express Logic, Inc. 234 Format of Event Trace Buffer Trace Base Address The trace buffer base address is the address the application specified as the start of the trace buffer in the tx_trace_enable call. This address is maintained for the sole use of the analysis tool to derive bufferrelative offsets for the various elements in the buffer. For example, the buffer relative offset of the current event in the trace buffer is calculated by simple subtraction of the base address from the current event address. Registry Start and End Pointers The registry start pointer points to the address of the first object registry entry, while the registry end pointer points to the address immediately following the last register entry. These values are setup during the tx_trace_enable processing and are not changed throughout the duration of tracing. Registry Name Size The registry name size defines maximum size in bytes for each object name in the registry entry and is defined by the symbol TX_TRACE_OBJECT_REGISTRY_NAME. The default value is 32 and is defined in tx_trace.h. The object name corresponds to the name given by the application when the object was created. For example, the object registry name for a thread is the name supplied by the application to the tx_thread_create call. Buffer Start and End Pointers The event trace buffer start pointer points to the address of the first trace entry, while the registry end pointer points to the address immediately following the last trace entry. These values are setup during the tx_trace_enable processing and are not changed throughout the duration of tracing. User Guide TraceX User Guide Current Buffer Pointer 235 The event trace buffer current pointer points to the address of the oldest trace entry. Since the trace entries are maintained in a circular list, the current buffer pointer is also represents the next trace entry to be written. Event Trace Object Registry The event trace object registry contains n object registry entries that correspond to the objects created by the application. The main purpose of the object registry is for external analysis tools to correlate actual object names with the object addresses of the trace buffer entries. The number of registry entries is specified by the application in the tx_trace_enable call. Each object register entry contains information about a specific ThreadX object previously created by the application. The following data structure defines each object registry entry: typedef struct TX_TRACE_OBJE CT_REGISTRY_ENTRY_STRUCT { UCHAR UCHAR UCHAR UCHAR ULONG ULONG ULONG UCHAR tx_trace_obje ct_registry_entry_object_available; tx_trace_obje ct_registry_entry_object_type; tx_trace_obje ct_registry_entry_object_reserved1; tx_trace_obje ct_registry_entry_object_reserved2; tx_trace_thre ad_registry_entry_object_pointer; tx_trace_obje ct_registry_entry_object_parameter_1; tx_trace_obje ct_registry_entry_object_parameter_2; tx_trace_thre ad_registry_entry_object_name [TX_TRACE_OBJECT_REGISTRY_NAME]; } TX_TRACE_O BJECT_REGISTRY_ENTRY; Object Available Flag The object available flag is set to 1 if the object registry entry is available. Otherwise, if the value is not 1, the object registry entry is not available. Note Express Logic, Inc. 236 Format of Event Trace Buffer that the entry could still contain valid information even though it is available. Object Entry Type The object entry type identifies the type of object in this entry. The following is a list of the valid object types: User Guide Value Object Type 0 Not Valid 1 Thread 2 Timer 3 Queue 4 Semaphore 5 Mutex 6 Event Flags Group 7 Block Pool 8 Byte Pool 9 Media 10 File 11 IP 12 Packet Pool 13 TCP Socket 14 UDP Socket 15-20 Reserved 21 USB Host Stack Device 22 USB Host Stack Interface 23 USB Host Endpoint 24 USB Host Class 25 USB Device 26 USB Device Interface 27 USB Device Endpoint 28 USB Device Class TraceX User Guide 237 Object Pointer The object pointer specifies the object address that is used for accessing the object using the ThreadX API. Object Reserved Fields For all objects other than threads, these reserved fields should be 0. For threads, the priority of the thread at the time it is entered into the registry is placed in these two reserved fields. Object Parameters The object parameters contain supplemental information about the object. The following describes the supplemental information for each ThreadX object: Object Type Parameter 1 Parameter 2 Thread Stack Start Stack Size Timer Initial Ticks Reschedule Ticks Queue Queue Size Message Size Semaphore Initial Instances - Mutex Inheritance Flag - Event Flags Group - - Block Pool Total Blocks Block Size Byte Pool Total Bytes - Media Fat Cache Size Sector Cache Size File - - IP Stack Start Stack Size Packet Pool Packet Size Number of Packets TCP Socket IP address Window Size UDP Socket IP address RX Queue Max Object Name The object name contains the name of the ThreadX object. The name is the name provided to ThreadX at the time the object was created. By default, the object Express Logic, Inc. 238 Format of Event Trace Buffer name has a maximum of 32 characters. Actual names greater than 32 characters are truncated. Event Trace Entries The event trace entries are found in the bottom portion of the event trace buffer. The entries are maintained in a circular list, with the current entry pointer pointing to the oldest entry. The number of entries in the list is calculated by the tx_trace_enable call. Each object register entry contains information about a specific ThreadX trace event. The following data structure defines each trace event entry: typedef struct TX_TRACE_BUFFER_ENTRY_STRUCT { ULONG ULONG ULONG ULONG ULONG ULONG ULONG ULONG tx_trace_buffer_entry_thread_po inter; tx_trace_buffer_entry_thread_pr iority; tx_trace_buffer_entry_event_id; tx_trace_buffer_entry_time_stam p; tx_trace_buffer_entry_informati on_field_1; tx_trace_buffer_entry_informati on_field_2; tx_trace_buffer_entry_informati on_field_3; tx_trace_buffer_entry_informati on_field_4; } TX_TRACE_BUFFER_ENTRY; Thread Pointer The thread pointer contains the address of the thread running at the time of this event. If the event occurred during initialization (no thread running), the value of this pointer is 0xF0F0F0F0. If the event occurred during an Interrupt Service Routine (ISR), the value of this pointer is 0xFFFFFFFF. If the entry has not yet been used, the value of this pointer is 0. User Guide TraceX User Guide 239 Thread Priority The thread priority field contains the thread priority and preemption-threshold of the thread that was running at the time of this event. If an interrupt context is present (thread pointer is 0xFFFFFFFF), the value of this field is not the priority but instead the value of _tx_thread_current_ptr at the time of the event. Otherwise, the value of this field is 0. Event ID The event ID specifies the event that took place. Valid ThreadX trace event IDs range from 1 through 1024. Values starting at 1025 and above are reserved for user-specific events. Please refer to the tx_trace.h file for the complete definition of ThreadX event IDs. Information Fields (1-4) The information fields contain additional information about the specific event. Please refer to the tx_trace.h file for the complete description of the information fields for each of the defined ThreadX event IDs. Express Logic, Inc. 240 Format of Event Trace Buffer User Guide A CHAPTER 1 Sample tx_port.h This chapter displays a sample tx_port.h file. Express Logic, Inc. 242 /**************************************************************************/ /* */ /* Copyright (c) 1996-2006 by Express Logic Inc. */ /* */ /* This software is copyrighted by and is the sole property of Express */ /* Logic, Inc. All rights, title, ownership, or other interests */ /* in the software remain the property of Express Logic, Inc. This */ /* software may only be used in accordance with the corresponding */ /* license agreement. Any unauthorized use, duplication, transmission, */ /* distribution, or disclosure of this software is expressly forbidden. */ /* */ /* This Copyright notice may not be removed or modified without prior */ /* written consent of Express Logic, Inc. */ /* */ /* Express Logic, Inc. reserves the right to modify this software */ /* without notice. */ /* */ /* Express Logic, Inc. [email protected] */ /* 11423 West Bernardo Court http://www.expresslogic.com */ /* San Diego, CA 92127 */ /* */ /**************************************************************************/ /**************************************************************************/ /**************************************************************************/ /** */ /** ThreadX Component */ /** */ /** Port Specific */ /** */ /**************************************************************************/ /**************************************************************************/ /**************************************************************************/ /* */ /* PORT SPECIFIC C INFORMATION RELEASE */ /* */ /* tx_port.h ARM7/RVDS */ /* 5.0 */ /* */ /* AUTHOR */ /* */ /* William E. Lamie, Express Logic, Inc. */ /* */ /* 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 */ /* */ /* 12-12-2005 William E. Lamie Initial ARM7 RealView */ /* Support Version 5.0 */ /* */ /**************************************************************************/ #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 User Guide */ TraceX User Guide 243 /* 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> /* Define ThreadX basic types for this port. #define typedef typedef typedef typedef typedef typedef typedef typedef VOID char unsigned int unsigned long unsigned short unsigned char int long short */ void CHAR; UCHAR; INT; UINT; LONG; ULONG; 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 #endif 32 /* 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 #endif 200 /* Minimum stack size for this port /* Define the system timer thread's default stack size and priority. if TX_TIMER_PROCESS_IN_ISR is not defined. */ */ These are only applicable #ifndef TX_TIMER_THREAD_STACK_SIZE #define TX_TIMER_THREAD_STACK_SIZE #endif 1024 /* Default timer thread stack size */ #ifndef TX_TIMER_THREAD_PRIORITY #define TX_TIMER_THREAD_PRIORITY #endif 0 /* Default timer thread priority */ 0xC0 /* Disable IRQ & FIQ interrupts */ 0x80 /* Disable IRQ interrupts */ 0x00 /* Enable IRQ interrupts */ /* Define various constants for the ThreadX ARM port. #ifdef TX_ENABLE_FIQ_SUPPORT #define TX_INT_DISABLE #else #define TX_INT_DISABLE #endif #define TX_INT_ENABLE */ /* Define the clock source for trace event entry time stamp. The following two item are port specific. For example, if the time source is at the address 0x0a800024 and is 16-bits in size, the clock source constants would be: #define TX_TRACE_TIME_SOURCE #define TX_TRACE_TIME_MASK *((ULONG *) 0x0a800024) 0x0000FFFFUL */ #ifndef TX_TRACE_TIME_SOURCE #define TX_TRACE_TIME_SOURCE ++_tx_trace_simulated_time Express Logic, Inc. 244 #endif #ifndef TX_TRACE_TIME_MASK #define TX_TRACE_TIME_MASK #endif 0xFFFFFFFFUL /* 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 #else #define TX_FIQ_ENABLED #endif #ifdef TX_ENABLE_IRQ_NESTING #define TX_IRQ_NESTING_ENABLED #else #define TX_IRQ_NESTING_ENABLED #endif #ifdef TX_ENABLE_FIQ_NESTING #define TX_FIQ_NESTING_ENABLED #else #define TX_FIQ_NESTING_ENABLED #endif #define TX_PORT_SPECIFIC_BUILD_OPTIONS TX_FIQ_NESTING_ENABLED 1 0 2 0 4 0 TX_FIQ_ENABLED | TX_IRQ_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 #define #define #define TX_THREAD_EXTENSION_0 TX_THREAD_EXTENSION_1 TX_THREAD_EXTENSION_2 TX_THREAD_EXTENSION_3 /* Define the port extensions of the remaining ThreadX objects. #define #define #define #define #define #define #define TX_BLOCK_POOL_EXTENSION TX_BYTE_POOL_EXTENSION TX_EVENT_FLAGS_GROUP_EXTENSION TX_MUTEX_EXTENSION TX_QUEUE_EXTENSION TX_SEMAPHORE_EXTENSION TX_TIMER_EXTENSION User Guide */ TraceX User Guide 245 /* 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. */ #define #define #define #define TX_THREAD_CREATE_EXTENSION(thread_ptr) TX_THREAD_DELETE_EXTENSION(thread_ptr) TX_THREAD_COMPLETED_EXTENSION(thread_ptr) TX_THREAD_TERMINATED_EXTENSION(thread_ptr) /* Define the ThreadX object creation extensions for the remaining objects. #define #define #define #define #define #define #define TX_BLOCK_POOL_CREATE_EXTENSION(pool_ptr) TX_BYTE_POOL_CREATE_EXTENSION(pool_ptr) TX_EVENT_FLAGS_GROUP_CREATE_EXTENSION(group_ptr) TX_MUTEX_CREATE_EXTENSION(mutex_ptr) TX_QUEUE_CREATE_EXTENSION(queue_ptr) TX_SEMAPHORE_CREATE_EXTENSION(semaphore_ptr) TX_TIMER_CREATE_EXTENSION(timer_ptr) /* Define the ThreadX object deletion extensions for the remaining objects. #define #define #define #define #define #define #define */ */ TX_BLOCK_POOL_DELETE_EXTENSION(pool_ptr) TX_BYTE_POOL_DELETE_EXTENSION(pool_ptr) TX_EVENT_FLAGS_GROUP_DELETE_EXTENSION(group_ptr) TX_MUTEX_DELETE_EXTENSION(mutex_ptr) TX_QUEUE_DELETE_EXTENSION(queue_ptr) TX_SEMAPHORE_DELETE_EXTENSION(semaphore_ptr) TX_TIMER_DELETE_EXTENSION(timer_ptr) /* 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. */ #ifndef __thumb #define TX_INTERRUPT_SAVE_AREA #ifdef TX_ENABLE_FIQ_SUPPORT #define TX_DISABLE #else #define TX_DISABLE register unsigned int interrupt_save, temp; __asm \ { \ MRS ORR MSR } __asm \ { \ MRS ORR MSR } interrupt_save, CPSR; \ temp, interrupt_save, 0xC0; \ CPSR_c, temp \ interrupt_save, CPSR; \ temp, interrupt_save, 0x80; \ CPSR_c, temp \ #endif #define TX_RESTORE __asm \ { \ MSR CPSR_c, interrupt_save \ } Express Logic, Inc. 246 #else unsigned int unsigned int _tx_thread_interrupt_disable(void); _tx_thread_interrupt_restore(UINT old_posture); #define TX_INTERRUPT_SAVE_AREA unsigned int interrupt_save; #define TX_DISABLE #define TX_RESTORE #endif interrupt_save = _tx_thread_interrupt_disable(); _tx_thread_interrupt_restore(interrupt_save); /* Define the interrupt lockout macros for each ThreadX object. #define #define #define #define #define #define TX_BLOCK_POOL_DISABLE TX_BYTE_POOL_DISABLE TX_EVENT_FLAGS_GROUP_DISABLE TX_MUTEX_DISABLE TX_QUEUE_DISABLE TX_SEMAPHORE_DISABLE /* Define the version ID of ThreadX. #ifdef TX_THREAD_INIT CHAR */ TX_DISABLE TX_DISABLE TX_DISABLE TX_DISABLE TX_DISABLE TX_DISABLE This may be utilized by the application. */ _tx_version_id[] = "Copyright (c) 1996-YYYY Express Logic Inc. * ThreadX ARM7/RVDS Version GVVVV.5.0 SN: ZZZZ *"; #else extern CHAR #endif _tx_version_id[]; #endif User Guide B CHAPTER 1 tx_trace.h File This chapter displays the tx_trace.h file. Express Logic, Inc. 248 /**************************************************************************/ /* */ /* Copyright (c) 1996-2009 by Express Logic Inc. */ /* */ /* This software is copyrighted by and is the sole property of Express */ /* Logic, Inc. All rights, title, ownership, or other interests */ /* in the software remain the property of Express Logic, Inc. This */ /* software may only be used in accordance with the corresponding */ /* license agreement. Any unauthorized use, duplication, transmission, */ /* distribution, or disclosure of this software is expressly forbidden. */ /* */ /* This Copyright notice may not be removed or modified without prior */ /* written consent of Express Logic, Inc. */ /* */ /* Express Logic, Inc. reserves the right to modify this software */ /* without notice. */ /* */ /* Express Logic, Inc. [email protected] */ /* 11423 West Bernardo Court http://www.expresslogic.com */ /* San Diego, CA 92127 */ /* */ /**************************************************************************/ /**************************************************************************/ /**************************************************************************/ /** */ /** ThreadX Component */ /** */ /** Trace */ /** */ /**************************************************************************/ /**************************************************************************/ /**************************************************************************/ /* */ /* COMPONENT DEFINITION RELEASE */ /* */ /* tx_trace.h PORTABLE C */ /* 5.4 */ /* AUTHOR */ /* */ /* William E. Lamie, Express Logic, Inc. */ /* */ /* DESCRIPTION */ /* */ /* This file defines the ThreadX trace component, including constants */ /* and structure definitions as well as external references. It is */ /* assumed that tx_api.h and tx_port.h have already been included. */ /* */ /* RELEASE HISTORY */ /* */ /* DATE NAME DESCRIPTION */ /* */ /* 12-12-2005 William E. Lamie Initial Version 5.0 */ /* 04-02-2007 William E. Lamie Modified comment(s), */ /* resulting in version 5.1 */ /* 12-12-2008 William E. Lamie Modified comment(s), added */ /* new event definitions, */ /* changed types to ensure the */ /* trace has universal format, */ /* optimized event macro, and */ /* added filter logic and new */ /* function prototypes, */ /* resulting in version 5.2 */ /* 07-04-2009 William E. Lamie Modified comment(s), removed */ /* FileX & NetX event IDs since*/ /* they are defined elsewhere, */ /* and corrected priority */ /* assignment in event trace, */ /* resulting in version 5.3 */ /* 12-12-2009 William E. Lamie Modified comment(s), added */ /* defines for default source, */ /* and added logic to insert */ /* the thread's preemption*/ /* threshold along with its */ /* priority, resulting in */ /* version 5.4 */ /* */ /**************************************************************************/ /* Include necessary system files. */ #ifndef TX_TRACE_H #define TX_TRACE_H /* Determine if tracing is enabled. If not, simply define the in-line trace macros to whitespace. */ #ifndef #define #define #define #define #else TX_ENABLE_EVENT_TRACE TX_TRACE_INITIALIZE TX_TRACE_OBJECT_REGISTER(t,p,n,a,b) TX_TRACE_OBJECT_UNREGISTER(o) TX_TRACE_IN_LINE_INSERT(i,a,b,c,d,f) User Guide TraceX User Guide /* Event tracing is enabled. 249 */ /* Ensure that the thread component information is included. */ #include "tx_thread.h" /* Define trace port-specfic extension to white space if it isn't defined already. */ #ifndef TX_TRACE_PORT_EXTENSION #define TX_TRACE_PORT_EXTENSION #endif /* Define the default clock source for trace event entry time stamp. The following two item are port specific. For example, if the time source is at the address 0x0a800024 and is 16-bits in size, the clock source constants would be: #define TX_TRACE_TIME_SOURCE #define TX_TRACE_TIME_MASK *((ULONG *) 0x0a800024) 0x0000FFFFUL */ #ifndef #define #endif #ifndef #define #endif TX_TRACE_TIME_SOURCE TX_TRACE_TIME_SOURCE ++_tx_trace_simulated_time TX_TRACE_TIME_MASK TX_TRACE_TIME_MASK 0xFFFFFFFFUL /* Define the ID showing the event trace buffer is valid. #define TX_TRACE_VALID */ 0x54585442UL /* ThreadX Trace Description. The ThreadX Trace feature is designed to capture events in real-time in a circular event buffer. This buffer may be analyzed by other tools. The high-level format of the Trace structure is: [Trace Control Header [Trace Object Registry - Entry 0 ... [Trace Object Registry - Entry "n" [Trace Buffer - Entry 0 ... [Trace Buffer - Entry "n" ] ] ] ] ] */ /* Trace Control Header. The Trace Control Header contains information that defines the format of the Trace Object Registry as well as the location and current entry of the Trace Buffer itself. The high-level format of the Trace Control Header is: Entry Size [Trace ID] 4 [Timer Valid Mask] 4 [Trace Base Address] 4 [Trace Object [Reserved] [Trace Object [Trace Object [Trace Buffer [Trace Buffer [Trace Buffer 4 2 2 4 4 4 4 Registry Start Pointer] Object Name Size] Registry End Pointer] Start Pointer] End Pointer] Current Pointer] [Reserved] [Reserved] [Reserved] 4 4 4 Description This 4-byte field contains the ThreadX Trace Identification. If the trace buffer is valid, the contents are 0x54585442 (TXTB). Since it is written as a 32-bit unsigned word, this value is also used to determine if the event trace information is in little or big endian format. Mask of valid bits in the 32-bit time stamp. This enables use of 32, 24, 16, or event 8-bit timers. If the time source is 32-bits, the mask is 0xFFFFFFFF. If the time source is 16-bits, the mask is 0x0000FFFF. The base address for all trace pointer. Subtracting the pointer and this address will yield the proper offset into the trace buffer. Pointer to the start of Trace Object Registry Reserved two bytes - should be 0x0000 Number of bytes in object name Pointer to the end of Trace Object Registry Pointer to the start of the Trace Buffer Area Pointer to the end of the Trace Buffer Area Pointer to the oldest entry in the Trace Buffer. This entry will be overwritten on the next event and incremented to the next event (wrapping to the top if the buffer end pointer is exceeded). Reserved 4 bytes, should be 0xAAAAAAAA Reserved 4 bytes, should be 0xBBBBBBBB Reserved 4 bytes, should be 0xCCCCCCCC */ /* Define the Trace Control Header. */ typedef struct TX_TRACE_CONTROL_HEADER_STRUCT { ULONG ULONG ULONG ULONG USHORT tx_trace_control_header_id; tx_trace_control_header_timer_valid_mask; tx_trace_control_header_trace_base_address; tx_trace_control_header_object_registry_start_pointer; tx_trace_control_header_reserved1; Express Logic, Inc. 250 USHORT ULONG ULONG ULONG ULONG ULONG ULONG ULONG } TX_TRACE_CONTROL_HEADER; tx_trace_control_header_object_registry_name_size; tx_trace_control_header_object_registry_end_pointer; tx_trace_control_header_buffer_start_pointer; tx_trace_control_header_buffer_end_pointer; tx_trace_control_header_buffer_current_pointer; tx_trace_control_header_reserved2; tx_trace_control_header_reserved3; tx_trace_control_header_reserved4; /* Trace Object Registry. The Trace Object Registry is used to map the object pointer in the trace buffer to the application's name for the object (defined during object creation in ThreadX). */ #ifndef TX_TRACE_OBJECT_REGISTRY_NAME #define TX_TRACE_OBJECT_REGISTRY_NAME #endif 32 /* Define the object name types as well as the contents of any additional parameters that might be useful in trace analysis. */ #define #define #define #define #define #define #define #define #define TX_TRACE_OBJECT_TYPE_NOT_VALID TX_TRACE_OBJECT_TYPE_THREAD TX_TRACE_OBJECT_TYPE_TIMER TX_TRACE_OBJECT_TYPE_QUEUE TX_TRACE_OBJECT_TYPE_SEMAPHORE TX_TRACE_OBJECT_TYPE_MUTEX TX_TRACE_OBJECT_TYPE_EVENT_FLAGS TX_TRACE_OBJECT_TYPE_BLOCK_POOL TX_TRACE_OBJECT_TYPE_BYTE_POOL 0 1 2 3 4 5 6 7 8 /* /* /* /* /* /* /* /* /* Object is not valid P1 = stack start address, P2 = stack size P1 = initial ticks, P2 = reschedule ticks P1 = queue size, P2 = message size P1 = initial instances P1 = priority inheritance flag none P1 = total blocks, P2 = block size P1 = total bytes */ */ */ */ */ */ */ */ */ typedef struct TX_TRACE_OBJECT_REGISTRY_ENTRY_STRUCT { UCHAR UCHAR UCHAR UCHAR ULONG ULONG ULONG UCHAR } TX_TRACE_OBJECT_REGISTRY_ENTRY; tx_trace_object_registry_entry_object_available; /* TX_TRUE -> available tx_trace_object_registry_entry_object_type; /* Types defined above tx_trace_object_registry_entry_object_reserved1; /* Should be zero - except for thread tx_trace_object_registry_entry_object_reserved2; /* Should be zero - except for thread tx_trace_thread_registry_entry_object_pointer; /* ThreadX object pointer */ tx_trace_object_registry_entry_object_parameter_1; /* Parameter value defined */ tx_trace_object_registry_entry_object_parameter_2; /* according to type above*/ tx_trace_thread_registry_entry_object_name[TX_TRACE_OBJECT_REGISTRY_NAME]; /* Trace Buffer Entry. The Trace Buffer Entry contains information about a particular event in the system. The high-level format of the Trace Buffer Entry is: Entry Size [Thread Pointer] 4 [Thread Priority or Current Thread Preemption-Threshold/ Priority] [Event ID] 4 [Time Stamp] [Information Field 1] 4 4 [Information Field 2] 4 [Information Field 3] 4 [Information Field 4] 4 4 Description This 4-byte field contains the pointer to the ThreadX thread running that caused the event. If this field is NULL, the entry hasn't been used yet. If this field is 0xFFFFFFFF, the event occurred from within an ISR. If this entry is 0xF0F0F0F0, the event occurred during initialization. This 4-byte field contains the current thread pointer for interrupt events or the thread preemption-threshold/priority for thread events. This 4-byte field contains the Event ID of the event. A value of 0xFFFFFFFF indicates the event is invalid. All events are marked as invalid during initialization. This 4-byte field contains the time stamp of the event. This 4-byte field contains the first 4-bytes of information specific to the event. This 4-byte field contains the second 4-bytes of information specific to the event. This 4-byte field contains the third 4-bytes of information specific to the event. This 4-byte field contains the fourth 4-bytes of information specific to the event. */ #define TX_TRACE_INVALID_EVENT 0xFFFFFFFFUL /* Define ThreadX Trace Events, along with a brief description of the additional information fields, where I1 -> Information Field 1, I2 -> Information Field 2, etc. */ /* Event numbers 0 through 4095 are reserved by Express Logic. Specific event assignments are: ThreadX events: FileX events: NetX events: USBX events: 1-199 200-299 300-599 600-999 User-defined event numbers start at 4096 and continue through 65535, as defined by the constants TX_TRACE_USER_EVENT_START and TX_TRACE_USER_EVENT_END, respectively. User events should be based on these constants in case the user event number assignment is changed in future releases. */ /* Define the basic ThreadX thread scheduling events first. #define TX_TRACE_THREAD_RESUME #define TX_TRACE_THREAD_SUSPEND #define TX_TRACE_ISR_ENTER */ 1 2 3 User Guide /* I1 = thread ptr, I2 = previous_state, I3 = stack ptr, I4 = next thread */ /* I1 = thread ptr, I2 = new_state, I3 = stack ptr I4 = next thread */ /* I1 = stack_ptr, I2 = ISR number, I3 = system state, I4 = preempt disable */ */ */ */ */ TraceX User Guide #define TX_TRACE_ISR_EXIT #define TX_TRACE_TIME_SLICE #define TX_TRACE_RUNNING /* Define the rest of the ThreadX system events. #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define 4 5 6 /* I1 = stack_ptr, I2 = ISR number, I3 = system state, I4 = preempt disable */ /* I1 = next thread ptr, I2 = system state, I3 = preempt disable, I4 = stack*/ /* None */ 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27 30 31 32 33 34 35 36 37 40 50 51 52 53 54 55 56 57 60 61 62 63 64 65 66 67 68 69 70 80 81 82 83 84 85 86 87 88 89 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 120 121 122 123 124 125 126 127 128 129 /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /* */ TX_TRACE_BLOCK_ALLOCATE TX_TRACE_BLOCK_POOL_CREATE TX_TRACE_BLOCK_POOL_DELETE TX_TRACE_BLOCK_POOL_INFO_GET TX_TRACE_BLOCK_POOL_PERFORMANCE_INFO_GET TX_TRACE_BLOCK_POOL_PERFORMANCE_SYSTEM_INFO_GET TX_TRACE_BLOCK_POOL_PRIORITIZE TX_TRACE_BLOCK_RELEASE TX_TRACE_BYTE_ALLOCATE TX_TRACE_BYTE_POOL_CREATE TX_TRACE_BYTE_POOL_DELETE TX_TRACE_BYTE_POOL_INFO_GET TX_TRACE_BYTE_POOL_PERFORMANCE_INFO_GET TX_TRACE_BYTE_POOL_PERFORMANCE_SYSTEM_INFO_GET TX_TRACE_BYTE_POOL_PRIORITIZE TX_TRACE_BYTE_RELEASE TX_TRACE_EVENT_FLAGS_CREATE TX_TRACE_EVENT_FLAGS_DELETE TX_TRACE_EVENT_FLAGS_GET TX_TRACE_EVENT_FLAGS_INFO_GET TX_TRACE_EVENT_FLAGS_PERFORMANCE_INFO_GET TX_TRACE_EVENT_FLAGS_PERFORMANCE_SYSTEM_INFO_GET TX_TRACE_EVENT_FLAGS_SET TX_TRACE_EVENT_FLAGS_SET_NOTIFY TX_TRACE_INTERRUPT_CONTROL TX_TRACE_MUTEX_CREATE TX_TRACE_MUTEX_DELETE TX_TRACE_MUTEX_GET TX_TRACE_MUTEX_INFO_GET TX_TRACE_MUTEX_PERFORMANCE_INFO_GET TX_TRACE_MUTEX_PERFORMANCE_SYSTEM_INFO_GET TX_TRACE_MUTEX_PRIORITIZE TX_TRACE_MUTEX_PUT TX_TRACE_QUEUE_CREATE TX_TRACE_QUEUE_DELETE TX_TRACE_QUEUE_FLUSH TX_TRACE_QUEUE_FRONT_SEND TX_TRACE_QUEUE_INFO_GET TX_TRACE_QUEUE_PERFORMANCE_INFO_GET TX_TRACE_QUEUE_PERFORMANCE_SYSTEM_INFO_GET TX_TRACE_QUEUE_PRIORITIZE TX_TRACE_QUEUE_RECEIVE TX_TRACE_QUEUE_SEND TX_TRACE_QUEUE_SEND_NOTIFY TX_TRACE_SEMAPHORE_CEILING_PUT TX_TRACE_SEMAPHORE_CREATE TX_TRACE_SEMAPHORE_DELETE TX_TRACE_SEMAPHORE_GET TX_TRACE_SEMAPHORE_INFO_GET TX_TRACE_SEMAPHORE_PERFORMANCE_INFO_GET TX_TRACE_SEMAPHORE_PERFORMANCE_SYSTEM_INFO_GET TX_TRACE_SEMAPHORE_PRIORITIZE TX_TRACE_SEMAPHORE_PUT TX_TRACE_SEMAPHORE_PUT_NOTIFY TX_TRACE_THREAD_CREATE TX_TRACE_THREAD_DELETE TX_TRACE_THREAD_ENTRY_EXIT_NOTIFY TX_TRACE_THREAD_IDENTIFY TX_TRACE_THREAD_INFO_GET TX_TRACE_THREAD_PERFORMANCE_INFO_GET TX_TRACE_THREAD_PERFORMANCE_SYSTEM_INFO_GET TX_TRACE_THREAD_PREEMPTION_CHANGE TX_TRACE_THREAD_PRIORITY_CHANGE TX_TRACE_THREAD_RELINQUISH TX_TRACE_THREAD_RESET TX_TRACE_THREAD_RESUME_API TX_TRACE_THREAD_SLEEP TX_TRACE_THREAD_STACK_ERROR_NOTIFY TX_TRACE_THREAD_SUSPEND_API TX_TRACE_THREAD_TERMINATE TX_TRACE_THREAD_TIME_SLICE_CHANGE TX_TRACE_THREAD_WAIT_ABORT TX_TRACE_TIME_GET TX_TRACE_TIME_SET TX_TRACE_TIMER_ACTIVATE TX_TRACE_TIMER_CHANGE TX_TRACE_TIMER_CREATE TX_TRACE_TIMER_DEACTIVATE TX_TRACE_TIMER_DELETE TX_TRACE_TIMER_INFO_GET TX_TRACE_TIMER_PERFORMANCE_INFO_GET TX_TRACE_TIMER_PERFORMANCE_SYSTEM_INFO_GET /* Define the an Trace Buffer Entry. 251 I1 = I1 = I1 = I1 = I1 = None I1 = I1 = I1 = I1 = I1 = I1 = I1 = None I1 = I1 = I1 = I1 = I1 = I1 = I1 = None I1 = I1 = I1 = I1 = I1 = I1 = I1 = I1 = None I1 = I1 = I1 = I1 = I1 = I1 = I1 = I1 = None I1 = I1 = I1 = I1 = I1 = I1 = I1 = I1 = I1 = I1 = None I1 = I1 = I1 = I1 = I1 = I1 = None I1 = I1 = None I1 = I1 = I1 = I1 = I1 = I1 = None I1 = I1 = I1 = I1 = I1 = I1 = I1 = I1 = I1 = I1 = I1 = I1 = I1 = None pool pool pool pool pool ptr, I2 = memory ptr, I3 = wait option, I4 = remaining blocks ptr, I2 = pool_start, I3 = total blocks, I4 = block size ptr, I2 = stack ptr ptr ptr */ */ */ */ */ */ pool ptr, I2 = suspended count, I3 = stack ptr */ pool ptr, I2 = memory ptr, I3 = suspended, I4 = stack ptr */ pool ptr, I2 = memory ptr, I3 = size requested, I4 = wait option */ pool ptr, I2 = start ptr, I3 = pool size, I4 = stack ptr */ pool ptr, I2 = stack ptr */ pool ptr */ pool ptr */ */ pool ptr, I2 = suspended count, I3 = stack ptr */ pool ptr, I2 = memory ptr, I3 = suspended, I4 = available bytes */ group ptr, I2 = stack ptr */ group ptr, I2 = stack ptr */ group ptr, I2 = requested flags, I3 = current flags, I4 = get option*/ group ptr */ group ptr */ */ group ptr, I2 = flags to set, I3 = set option, I4= suspended count */ group ptr */ new interrupt posture, I2 = stack ptr */ mutex ptr, I2 = inheritance, I3 = stack ptr */ mutex ptr, I2 = stack ptr */ mutex ptr, I2 = wait option, I3 = owning thread, I4 = own count */ mutex ptr */ mutex ptr */ */ mutex ptr, I2 = suspended count, I3 = stack ptr */ mutex ptr, I2 = owning thread, I3 = own count, I4 = stack ptr */ queue ptr, I2 = message size, I3 = queue start, I4 = queue size */ queue ptr, I2 = stack ptr */ queue ptr, I2 = stack ptr */ queue ptr, I2 = source ptr, I3 = wait option, I4 = enqueued */ queue ptr */ queue ptr */ */ queue ptr, I2 = suspended count, I3 = stack ptr */ queue ptr, I2 = destination ptr, I3 = wait option, I4 = enqueued */ queue ptr, I2 = source ptr, I3 = wait option, I4 = enqueued */ queue ptr */ semaphore ptr, I2 = current count, I3 = suspended count,I4 =ceiling */ semaphore ptr, I2 = initial count, I3 = stack ptr */ semaphore ptr, I2 = stack ptr */ semaphore ptr, I2 = wait option, I3 = current count, I4 = stack ptr */ semaphore ptr */ semaphore ptr */ */ semaphore ptr, I2 = suspended count, I2 = stack ptr */ semaphore ptr, I2 = current count, I3 = suspended count,I4=stack ptr*/ semaphore ptr */ thread ptr, I2 = priority, I3 = stack ptr, I4 = stack_size */ thread ptr, I2 = stack ptr */ thread ptr, I2 = thread state, I3 = stack ptr */ */ thread ptr, I2 = thread state */ thread ptr, I2 = thread state */ */ thread ptr, I2 = new threshold, I3 = old threshold, I4 =thread state*/ thread ptr, I2 = new priority, I3 = old priority, I4 = thread state */ stack ptr, I2 = next thread ptr */ thread ptr, I2 = thread state */ thread ptr, I2 = thread state, I3 = stack ptr */ sleep value, I2 = thread state, I3 = stack ptr */ */ thread ptr, I2 = thread state, I3 = stack ptr */ thread ptr, I2 = thread state, I3 = stack ptr */ thread ptr, I2 = new timeslice, I3 = old timeslice */ thread ptr, I2 = thread state, I3 = stack ptr */ current time, I2 = stack ptr */ new time */ timer ptr */ timer ptr, I2 = initial ticks, I3= reschedule ticks */ timer ptr, I2 = initial ticks, I3= reschedule ticks, I4 = enable */ timer ptr, I2 = stack ptr */ timer ptr */ timer ptr, I2 = stack ptr */ timer ptr */ */ */ typedef struct TX_TRACE_BUFFER_ENTRY_STRUCT { ULONG ULONG ULONG tx_trace_buffer_entry_thread_pointer; tx_trace_buffer_entry_thread_priority; tx_trace_buffer_entry_event_id; Express Logic, Inc. 252 ULONG ULONG ULONG ULONG ULONG tx_trace_buffer_entry_time_stamp; tx_trace_buffer_entry_information_field_1; tx_trace_buffer_entry_information_field_2; tx_trace_buffer_entry_information_field_3; tx_trace_buffer_entry_information_field_4; } TX_TRACE_BUFFER_ENTRY; /* Trace management component data declarations follow. */ /* Determine if the initialization function of this component is including this file. If so, make the data definitions really happen. Otherwise, make them extern so other functions in the component can access them. */ #ifdef TX_TRACE_INIT #define TRACE_DECLARE #else #define TRACE_DECLARE extern #endif /* Define the pointer to the start of the trace buffer control structure. TRACE_DECLARE TX_TRACE_CONTROL_HEADER */ *_tx_trace_control_header_ptr; /* Define the pointer to the start of the trace object registry area in the trace buffer. TRACE_DECLARE TX_TRACE_OBJECT_REGISTRY_ENTRY /* Define the pointer to the end of the trace object registry area in the trace buffer. TRACE_DECLARE TX_TRACE_OBJECT_REGISTRY_ENTRY */ *_tx_trace_registry_start_ptr; */ *_tx_trace_registry_end_ptr; /* Define the pointer to the starting entry of the actual trace event area of the trace buffer. TRACE_DECLARE TX_TRACE_BUFFER_ENTRY /* Define the pointer to the ending entry of the actual trace event area of the trace buffer. TRACE_DECLARE TX_TRACE_BUFFER_ENTRY TX_TRACE_BUFFER_ENTRY */ *_tx_trace_buffer_end_ptr; /* Define the pointer to the current entry of the actual trace event area of the trace buffer. TRACE_DECLARE */ *_tx_trace_buffer_start_ptr; */ *_tx_trace_buffer_current_ptr; /* Define the trace event enable bits, where each bit represents a type of event that can be enabled or disabled dynamically by the application. */ TRACE_DECLARE ULONG _tx_trace_event_enable_bits; /* Define a counter that is used in environments that don't have a timer source. This counter is incremented on each use giving each event a unique timestamp. */ TRACE_DECLARE ULONG _tx_trace_simulated_time; /* Define the function pointer used to call the application when the trace buffer wraps. If NULL, the application has not registered a callback function. */ TRACE_DECLARE VOID (*_tx_trace_full_notify_function)(VOID *); /* Define the event trace macros that are expanded in-line when event tracing is enabled. #define #define #define #define */ TX_TRACE_INITIALIZE _tx_trace_initialize(); TX_TRACE_OBJECT_REGISTER(t,p,n,a,b) _tx_trace_object_register(t, (VOID *) p, (CHAR *) n, (ULONG) a, (ULONG) b); TX_TRACE_OBJECT_UNREGISTER(o) _tx_trace_object_unregister((VOID *) o); TX_TRACE_IN_LINE_INSERT(i,a,b,c,d,e) \ { \ TX_TRACE_BUFFER_ENTRY *trace_event_ptr; \ ULONG trace_system_state; \ ULONG trace_priority; \ TX_THREAD *trace_thread_ptr; \ trace_event_ptr = _tx_trace_buffer_current_ptr; \ if ((trace_event_ptr) && (_tx_trace_event_enable_bits & ((ULONG) (e)))) \ { \ TX_TRACE_PORT_EXTENSION \ trace_system_state = (ULONG) _tx_thread_system_state; \ trace_thread_ptr = _tx_thread_current_ptr; \ \ if (trace_system_state == 0) \ { \ trace_priority = trace_thread_ptr -> tx_thread_priority; \ trace_priority = trace_priority | 0x80000000 | (trace_thread_ptr -> tx_thread_preempt_threshold << 16); \ } \ else if (trace_system_state < 0xF0F0F0F0UL) \ { \ trace_priority = (ULONG) trace_thread_ptr; \ trace_thread_ptr = (TX_THREAD *) 0xFFFFFFFFUL; \ User Guide TraceX User Guide 253 } \ else \ { \ trace_thread_ptr = (TX_THREAD *) 0xF0F0F0F0UL; \ trace_priority = 0; \ } \ trace_event_ptr -> tx_trace_buffer_entry_thread_pointer = (ULONG) trace_thread_ptr; \ trace_event_ptr -> tx_trace_buffer_entry_thread_priority = (ULONG) trace_priority; \ trace_event_ptr -> tx_trace_buffer_entry_event_id = (ULONG) (i); \ trace_event_ptr -> tx_trace_buffer_entry_time_stamp = (ULONG) TX_TRACE_TIME_SOURCE; \ trace_event_ptr -> tx_trace_buffer_entry_information_field_1 = (ULONG) (a); \ trace_event_ptr -> tx_trace_buffer_entry_information_field_2 = (ULONG) (b); \ trace_event_ptr -> tx_trace_buffer_entry_information_field_3 = (ULONG) (c); \ trace_event_ptr -> tx_trace_buffer_entry_information_field_4 = (ULONG) (d); \ trace_event_ptr++; \ if (trace_event_ptr >= _tx_trace_buffer_end_ptr) \ { \ trace_event_ptr = _tx_trace_buffer_start_ptr; \ _tx_trace_buffer_current_ptr = trace_event_ptr; \ _tx_trace_control_header_ptr -> tx_trace_control_header_buffer_current_pointer = (ULONG) trace_event_ptr; \ if (_tx_trace_full_notify_function) \ (_tx_trace_full_notify_function)((VOID *) _tx_trace_control_header_ptr); \ } \ else \ { \ _tx_trace_buffer_current_ptr = trace_event_ptr; \ _tx_trace_control_header_ptr -> tx_trace_control_header_buffer_current_pointer = (ULONG) trace_event_ptr; \ } \ } \ } #endif /* Define function prototypes of the trace component. UINT UINT UINT UINT VOID UINT VOID VOID VOID VOID UINT UINT */ _tx_trace_enable(VOID *trace_buffer_start, ULONG trace_buffer_size, ULONG registry_entries); _tx_trace_event_filter(ULONG event_filter_bits); _tx_trace_event_unfilter(ULONG event_filter_bits); _tx_trace_disable(VOID); _tx_trace_initialize(VOID); _tx_trace_interrupt_control(UINT new_posture); _tx_trace_isr_enter_insert(ULONG isr_id); _tx_trace_isr_exit_insert(ULONG isr_id); _tx_trace_object_register(UCHAR object_type, VOID *object_ptr, CHAR *object_name, ULONG parameter_1, ULONG parameter_2); _tx_trace_object_unregister(VOID *object_ptr); _tx_trace_buffer_full_notify(VOID (*full_buffer_callback)(VOID *)); _tx_trace_user_event_insert(ULONG event_id, ULONG info_field_1, ULONG info_field_2, ULONG info_field_3, ULONG info_field_4); #endif Express Logic, Inc. 254 User Guide C CHAPTER 1 DOS Command Line Utilities There are three DOS command line utilities found in the TraceX installation under the Utilities subdirectory. They are described on the following page. 1 ea2tracex.exe 1 hex2tracex.exe 1 mot2tracex.exe Express Logic, Inc. 256 The utilities supplied are listed below:. Utility Purpose Command Line Definitions ea2tracex.exe Converts the trace file generated by ThreadX in association with the GHS tools to the TraceX trace file format. > ea2tracex original_file converted_file <cr> Note: ThreadX for GHS tools produces a different trace format than ThreadX for nonGHS tools, which is why this conversion utility is needed. hex2tracex.exe Converts a trace file generated by ThreadX but dumped from the development tool in Intel HEX format to the binary TraceX trace file format. Note that TraceX V5 and above can open HEX files without converting them. > hex2tracex hex_file converted_file <cr> mot2tracex.exe Converts a trace file generated by ThreadX but dumped from the development tool in Motorola S-Record format to the binary TraceX trace file format. Note that TraceX V5 and above can open S-Record files without converting them. > mot2tracex mot_file converted_file <cr> User Guide D CHAPTER 1 Dumping the Trace Buffer Dumping the trace buffer created by ThreadX to a file on the host computer is done via commands and/or utilities provided by the specific development tool being used. This appendix contains examples of dumping a trace buffer to a host file in some of the more popular development tools used with ThreadX. 1 BenchX Tools 258 1 RealView Tools 259 1 IAR Tools 259 1 CodeWarrior Tools 260 1 MPLAB Tools 261 1 GHS Tools 267 1 Renesas HEW 268 Express Logic, Inc. 258 BenchX Tools The trace buffer can be dumped to a host file easily with the BenchX tools by selecting the Store Memory To File button within the Memory View, as shown below: At this point, specify the trace buffer address, size, destination file name (including path), and select the Save button as shown below. This will create the binary trace file for viewing within TraceX. User Guide TraceX User Guide 259 RealView Tools The trace buffer can be dumped to a host file easily with the ARM RealView tools by entering the following command at the command line prompt in RealView: > WRITEFILE,raw trace_file.trx=0x6860..0xE560 Upon completion, the file trace_file.trx will contain the trace buffer that is located starting at the address 0x6860 and goes up to address 0xE560. This file is ready for viewing by TraceX. IAR Tools The trace buffer can be dumped to a host file very easily with the IAR tools by simply right clicking in the memory view and selecting the Memory Save… option, as shown below. Express Logic, Inc. 260 This results in the Memory Save dialog to be displayed. Enter the starting and ending address and the trace file name, then select the Save button. In the example shown below, the IAR tools save the specified trace buffer into Intel HEX records in the file trace_file.hex. At this point, we have the trace buffer saved in the trace_file.hex file on the host and is ready for viewing with TraceX. CodeWarrior Tools The trace buffer can be dumped to a host file easily with the CodeWarrior tools by entering the save command in the Command Window. The following example save command assumes the trace buffer starts at 0x102200 and ends at 0x109F00: > save –b p:0x102200..0x109F00 trace_file.trx -a 32bit User Guide TraceX User Guide 261 This results in the trace buffer being saved in the file trace_file.trx on the host. MPLAB Tools MPLAB can create a TraceX-compatible trace file through its Export Table utility, which allows the export of any range of memory to a host file. To use this utility to create a trace file for TraceX, proceed as follows: Step 1 Open a memory window by selecting View Memory. Express Logic, Inc. 262 Step 2 Right-click within the Memory View to display a list of options. Specify Display Format -> 1 Byte to select byte display.. User Guide TraceX User Guide Step 3 263 Right-click again within the Memory View Window and select Go To, which opens a dialog box that enables you to specify the address of the event buffer. This example shows event_buffer being displayed. Express Logic, Inc. 264 User Guide TraceX User Guide Step 4 265 This highlights the contents of the first location of the trace buffer, which is always the string BTXT…. Express Logic, Inc. 266 Step 5 Now, right-click again to bring up the options menu, and select Export Table. Step 6 This brings up the Export Table dialog, as shown. Specify the range of addresses to export. For an 8K trace buffer, as is the case in this example, specify the range 0xA00006AC to 0xA00026AC, and enter a User Guide TraceX User Guide 267 name for the host file to be created (demo_threadx.trx in this example). Step 7 A file named demo_threadx.trx will be created on the host, and this file can be opened by TraceX. GHS Tools The trace buffer can be dumped to a host file easily with the GHS tools by entering the following command at the command line prompt in the debug command window: memdump raw c:\release\threadx\demo_threadx.trx event_buffer 32768 Upon completion, the file demo_threadx.trx will contain the trace buffer that is located in the event_buffer with a size of 32,768 bytes and is ready for viewing by TraceX. Express Logic, Inc. 268 Renesas HEW The trace buffer can be dumped to a host file easily with the Renasas HEW tools by following the three steps (and sub-steps) below: Step 1 Open Memory Window. User Guide TraceX User Guide 269 Step 2 Place cursor within memory window and right click. Step 3 Select Save, then in the Save Memory As window do the following: • • • • • Select File format: Binary. Specify Filename: As Desired Specify Start address: trace_buffer Specify End address: (trace_buffer+size) Specify Access size: 1 Express Logic, Inc. 270 • Click Save User Guide Index Symbols .NET framework installation 23 .NET v3.5 21 A actual time display 50 B base address of all trace file pointers 66 BenchX tools dumping trace buffer 258 buffer start and end pointers 234 building an event buffer 69 byte order of file 66 C CodeWarrior tools dumping trace buffer 260 completing TraceX installation 21 context Interrupt 37 moving 38 Relative Time 43 System Timer Thread 37 control header ID 233 controling elements of TraceX display 30 current event display 44 Customer Support Center information 9 D default location for TraceX installation 14 default view mode 33 defining time-stamp constants 70 delta number of ticks between events 49 demo_threadx.trx 25, 43 deterministic condition 51 deterministic priority inversion 52 deterministic priority inversion range 51 disable event tracing 84 display zoom in 47 display mode tabs 32 displaying all events on same line 35 displaying system events 32 DOS command line utilities 255 dumping the trace buffer 257 E ea2tracex.exe 256 enable event tracing 74 enabling event trace 70 event ID 239 event information detailed 42 event information display 42 event searching 46 event trace buffer current pointer 235 event trace entries 238 event trace object registry 235 event trace support 70 example of time-stamp definition 71 example trace files 25 execution profile 56 exporting the trace buffer 72 extended event trace API 73 Express Logic, Inc. 272 TraceX User Guide F M FileX performance statistics 63 statistics 56 FileX events 117, 118 format of event trace buffer 74, 76, 80, 231 format of the ThreadX event trace buffer 232 format of tx_trace_disable 84 format of tx_trace_isr_entry_insert 86 format of tx_trace_isr_exit_insert 88 format of tx_trace_user_event_insert 92 _fx_version_id 10 making support requests 10 maximum number of bytes for each object name 66 memory area dump 72 Microsoft .NET 14 Microsoft .NET framework 12 mot2tracex.exe 256 Motorola S-Record file format 72 MPlab tools dumping trace buffer 261 multiple event viewing 44 G general flow of .NET installation 22 GHS tools dumping trace buffer 267 Guide 9 guide cConventions 9 H hex2tracex.exe 256 high frequency timer 35 I IAR tools dumping trace buffer 259 information fields 239 Initialize/Idle 37 insert ISR entry event 86 insert ISR exit event 88 insert user event 92 installation dialogs 15 Intel HEX 72 L latest product information 9 launching the TraceX 16 launching TraceX 24 layout of the event trace buffer 232 User Guide N NetX performance statistics 65 statistics 56 NetX events 135, 136 non-deterministic priority inversion 52 non-deterministic priority inversions 51 number of ticks between events 49 _nx_version_id 10 O object available flag 235 object entry type 236 object name 237 object parameters 237 object pointer 237 object registry entry 235 object types 236 opened trace file information 66 overview of system activitiy 34 P performance analysis 56 performance statistics 56, 61 popular services 56, 58 post-mortem tool 70 priority inversions 51, 62 Index R Raw Time Stamp 43 raw trace dump 67 RealView tools dumping trace buffer 259 register trace buffer full application callback 90 registry name size 234 registry start and end pointer points 234 relative event numbers 33 relative ticks from beginning of trace 35 restoring to full icon view 48 run-time event information 42 S search parameters primary 46 sending comments to Express Logic 10 Sequential View 33 sequential view mode 33 Setup.exe 14 single summary line 35 size of time source 66 standard information 43 summary of context 36 support email 9 support engineer contact information 9 system contexts 36 system performance tuning 34 T terms of the license agreement 16 thread pointer 238 thread priority 239 thread stack usage 56 thread state changes 70 ThreadX 7, 12 stack usage 60 ThreadX events 95, 96 ThreadX event-trace capability 70 ThreadX object types 237 ticks between events 49 273 time relative 34 Time Stamp 43 time stamp 35 Time View 33 time view mode 34 timer valid mask 233 trace buffer base address 234 trace buffer in a binary 72 trace event entry 238 trace_file.hex 260 trace_file.trx 259, 261 TraceFiles subdirectory 25 TraceX building an event buffer 69 definition 11 installation 13 main display window 28 overall functionality 27 system event display 32 title bar 29 tool bar 30 tool bar buttons 30 using 24 version 29 TraceX constraints 12 TraceX execution profile 57 TraceX files 12 TraceX graphic user interface 24 TraceX performance analysis 55 _tx_build_options 10 TX_ENABLE_EVENT_TRACE 70, 73, 231 tx_port.h 70, 233, 241 tx_thread_create 234 tx_trace.h 239, 247 tx_trace_enable 70, 72, 84, 231, 234, 235, 238 TX_TRACE_OBJECT_REGISTRY_NAME 234 TX_TRACE_TIME_MASK 233 TX_TRACE_USER_EVENT_START 92 _tx_version_id 10 Express Logic, Inc. 274 TraceX User Guide U unfilter specified events 80 user responsibility 11 user-defined events 42, 70 Utilities sub-directory 255 V view of location of the system processing 34 Z zoom out 47 zooming 47 User Guide Renesas SynergyTM Platform User’s Manual: Software Publication Date: Rev.5 October, 2015 Renesas SynergyTM Platform User’s Manual: Software R11UM0009EU0500