Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
VxWorks Real-Time Kernel Connectivity:
Cumulative Report
CEN 4935
Joanne Sirois
FGCU
May 4, 2009
2
Table of Contents
1. Introduction ................................................................................................................................. 5
2. Software Requirement Specification .......................................................................................... 6
2.1. Introduction .............................................................................................................................. 6
2.1.1 Purpose ............................................................................................................................... 6
2.1.2 Scope of Document ............................................................................................................ 6
2.1.3 Definitions, Acronyms, and Abbreviations ........................................................................ 6
2.1.4 References .......................................................................................................................... 7
2.1.5 Overview of document ....................................................................................................... 7
2.2. Description of Project .............................................................................................................. 7
2.2.1 Project Overview ................................................................................................................ 7
2.2.2 Project Functions ................................................................................................................ 8
2.2.3 User Characteristics............................................................................................................ 9
2.2.4 Assumptions and Dependencies ......................................................................................... 9
2.3. Specific Requirements ........................................................................................................... 10
2.3.1 External Interfaces............................................................................................................ 10
2.3.2 Functional Requirements.................................................................................................. 10
2.3.3 Non-Functional Requirements ......................................................................................... 10
3.3.1 Reliability ..................................................................................................................... 10
3.3.2 Availability ................................................................................................................... 10
3.3.3 Security ......................................................................................................................... 10
3.3.4 Maintainability.............................................................................................................. 10
3.3.5 Portability ..................................................................................................................... 10
2.3.4 Organizing the Specific Requirements ............................................................................. 11
3
2.3.4.1 System Modes............................................................................................................ 11
2.3.4.2 User Class .................................................................................................................. 11
2.3.4.3 Objects ....................................................................................................................... 11
2.3.4.4 Feature ....................................................................................................................... 11
2.3.4.5 Response .................................................................................................................... 11
2.3.4.7 Functional hierarchy .................................................................................................. 11
3. Software Design Description .................................................................................................... 12
3.1. Introduction ............................................................................................................................ 12
3.1.1 Purpose ............................................................................................................................. 12
3.1.2 Scope of Document .......................................................................................................... 12
3.1.3 Definitions, Acronyms, and Abbreviations ...................................................................... 12
3.2. References .............................................................................................................................. 12
3.3. Decomposition and Dependency Description ........................................................................ 13
3.3.1 Module Decomposition .................................................................................................... 13
3.1.1 Simple WEB Server ...................................................................................................... 14
3.3.1.2 Interprocess Communication Service Module .......................................................... 15
3.3.1.3 Event and exception logging package ....................................................................... 16
3.1.4 Message-oriented IPC utility functions. ....................................................................... 16
3.3.1.5 Server's infinite loop .................................................................................................. 17
3.3.2 Dependency ...................................................................................................................... 17
3.3.2.1 Simple WEB Server................................................................................................... 17
3.3.1.2 Interprocess Communication Service Module .......................................................... 17
3.3.1.3 Event and exception logging package ....................................................................... 18
3.3.1.4 Message-oriented IPC utility functions. .................................................................... 18
3.3.1.5 Server's infinite loop .................................................................................................. 18
4
4. Implementation ......................................................................................................................... 19
4.1. User Instructions ................................................................................................................ 19
4.2 Program Development......................................................................................................... 27
4.2.1 Structure........................................................................................................................ 27
4.2.2 Example ........................................................................................................................ 29
4.2.3 Remote Access ............................................................................................................. 30
5. Testing Documents ................................................................................................................... 35
6. Conclusion ................................................................................................................................ 41
7. References ................................................................................................................................. 41
Appendix ....................................................................................................................................... 42
Compilation 1 ............................................................................................................................ 42
Compilation 2 ............................................................................................................................ 44
Compilation 3 ............................................................................................................................ 49
5
1. Introduction
When using automated data acquisitions systems, they need to be monitored frequently
for continuation of operation. This is important because data acquisitions whole purpose is to
take reliable readings using specific instruments. If this function is off even slightly, the results
could be considered completely worthless. That is why issues have to be resolved as quickly as
possible. One solution proposed by E. Desavouret and J. Nogiec is to create a type of toolkit
which gives technicians the ability to see the status of DAQ devices quickly through any
computer with an internet connection [1].
6
2. Software Requirement Specification
2.1. Introduction
2.1.1 Purpose
The software requirement specification document is particularly designed
to define the boundaries of the VxWorks Real-Time Kernel Connectivity project’s
design and functionality. This documentation is intended but not be limited to the
system owners, the system users, and the project manager.
2.1.2 Scope of Document
This document identifies the software product that will be developed using
the VxWorks engine and single board computer.
2.1.3 Definitions, Acronyms, and Abbreviations
SBC. Single Board Computer, seen in Figure 1.
user. The person, or persons, who operate or interact directly with the product.
DAQ. Data Acquisition.
Figure 1 Wind River SBC
7
2.1.4 References
[1] Desavouret, E., and J. Nogiec. "Web Tools To Monitor And Debug DAQ
Hardware." Fermilab 131 (2003).
[2] Fink, J. "What is a kernel?" What is a kernel? 25 Sept. 2008
<http://systhread.net/texts/200606kern_def.php>.
[3] Rogers, D. "Software on board mars pathfinder has Berkeley lab ties."
Berkeley Lab Currents. 8 Aug. 1997. 23 Sept. 2008
<http://www.lbl.gov/publications/currents/archive/aug-8-1997.html#rtftoc2>.
[4] "Wind River VxWorks." Wind River. Jan. 2008. Wind River. 21 Sept. 2008
<http://www.windriver.com/products/vxworks>.
[5] "Wind River Workbench awarded best commercial Eclipse-based developer
tool by the Eclipse Foundation." Wind River at EclipseCon 2008. 19 Mar. 2008.
Wind River. <http://www.windriver.com/announces/eclipsecon2008/>.
[6] "Introduction of an Embedded system." MIZI Linux SDK for S3C2410. MIZI
Research, Inc. 6 Oct. 2008
<http://www.mizi.com/developer/s3c2410x/index.html>.
2.1.5 Overview of document
The Software Requirement Specification defines and illustrates the overall
project and its requirements. In addition the SRS defines the users and their
respective characteristics as well as any constraints to development that have been
identified.
This requirements section addresses how this shall software interfaces
with data acquisition and control equipment connected to it. It delineates
specifications for every facet of the components design.
2.2. Description of Project
2.2.1 Project Overview
When using automated data acquisitions systems, they need to be
monitored frequently for continuation of operation. This is important because data
acquisitions whole purpose is to take reliable readings using specific instruments.
If this function is off even slightly, the results could be considered completely
8
worthless. That is why issues have to be resolved as quickly as possible. One
solution proposed by E. Desavouret and J. Nogiec [1] to create a type of toolkit
which gives technicians the ability to see the status of DAQ devices quickly
through any computer with an Internet connection [1].
In their solution, they have a host web server which collects information
from a set of data acquisition devices that have their own specialized web servers
installed on them. The host server takes the information from the devices and
publishes it to a viewable webpage, so that it can be accessed from computer with
an internet connection. This is what will be emulated, with the SBC box being the
DAQ device, and the HP desktop being the host server.
Figure 2- Initial system, target, and test selection for Toolkit
2.2.2 Project Functions
The web toolkit should consist of a set of HTML pages displayed in a web
browser, specialized web servers, test handlers, and support utilities.
The system shall be comprised of a central web server used for selecting a test
target, and specialized target web servers running on tested or monitored
computers.
The user should be able to select a system, then a computer to test, and finally a
device or monitoring program.
9
The tested computer should be selected either by its name or its function.
The user-specified requests should be sent to an appropriate specialized web
server on the chosen target computer.
The web server should execute a proper test handler and send a reply page back.
The toolkit should conform to an architecture that is parallel and independent to
application architecture.
The software should be able to interface and link all components of system refer
to figure 3.
Figure 3-Context Diagram
2.2.3 User Characteristics
Users should be developers of the DAQ devices.
User should be supplementary to the standard single-user rlogin mechanism [1].
2.2.4 Assumptions and Dependencies
The System relies on a relationship with DAQ devices.
The System relies on the connection to the internet.
The System requires communication with the Linux server Satnet.
Serial Connection
10
2.3. Specific Requirements
2.3.1 External Interfaces
Application shall receive updated information from DAQ devices after a request.
2.3.2 Functional Requirements
3.2.1 Input Requirements
The software shall verify that all data received from DAQ devices is valid.
The software shall verify inputs from the user are valid.
3.2.2 Output Requirements (Fig. 3)
The software shall output the requested DAQ devices data.
The software shall replace the existing DAQ devices data with new data as
received.
The system shall provide an error message if invalid data is requested.
The system shall provide an error message if the system is unable to find a
DAQ device.
2.3.3 Non-Functional Requirements
3.3.1 Reliability
The application shall perform its task while the SBC and Host machine are
running.
3.3.2 Availability
The application shall only be available to a user with an internet
connection.
The application shall only be available to a user with a login.
3.3.3 Security
The application shall have a user rlogin mechanism. [1]
3.3.4 Maintainability
The application shall not have any maintainability requirements.
3.3.5 Portability
The application shall be accessible from any computer with internet.
11
2.3.4 Organizing the Specific Requirements
2.3.4.1 System Modes
The initial system state upon execution will be in standby.
The software will request the status of the DAQ device when prompted by
the user.
2.3.4.2 User Class
There are no administrative functions associated with the system;
therefore it is not necessary to implement user classes.
2.3.4.3 Objects
The external objects associated with this program are the DAQ devices,
and the user who operates the system.
2.3.4.4 Feature
The initial version of the application will be completely independent of
any external systems or processes.
2.3.4.5 Response
The system shall respond only when prompted by a user.
2.3.4.7 Functional hierarchy
The application requests which devices to contact from user.
The application validates request received from user.
If the DAQ device is valid, the system will request data from the DAQ
device.
The system will display the data from the DAQ device.
12
3. Software Design Description
3.1. Introduction
3.1.1 Purpose
The software design description document specifies the design, layout,
and composition of the VxWorks Real-Time Kernel Connectivity project’s design
and functionality.
3.1.2 Scope of Document
This document encompasses the Architectural Layout, Data Design,
Architecture Design Interface Design and Procedural Design.
3.1.3 Definitions, Acronyms, and Abbreviations
SBC. Single Board Computer, seen in Figure 1.
user. The person, or persons, who operate or interact directly with the product.
DAQ. Data Acquisition.
Figure 4 Wind River SBC
3.2. References
[1] Desavouret, E., and J. Nogiec. "Web Tools To Monitor And Debug DAQ
Hardware." Fermilab 131 (2003).
[2] Fink, J. "What is a kernel?" What is a kernel? 25 Sept. 2008
<http://systhread.net/texts/200606kern_def.php>.
13
[3] Rogers, D. "Software on board mars pathfinder has Berkeley lab ties."
Berkeley Lab Currents. 8 Aug. 1997. 23 Sept. 2008
<http://www.lbl.gov/publications/currents/archive/aug-8-1997.html#rtftoc2>.
[4] "Wind River VxWorks." Wind River. Jan. 2008. Wind River. 21 Sept. 2008
<http://www.windriver.com/products/vxworks>.
[5] "Wind River Workbench awarded best commercial Eclipse-based developer
tool by the Eclipse Foundation." Wind River at EclipseCon 2008. 19 Mar. 2008.
Wind River. <http://www.windriver.com/announces/eclipsecon2008/>.
[6] "Introduction of an Embedded system." MIZI Linux SDK for S3C2410. MIZI
Research, Inc. 6 Oct. 2008
<http://www.mizi.com/developer/s3c2410x/index.html>.
[7] IEEE P1016/D7 Draft Standard for Information Technology – System Design
– Software Design Descriptions
3.3. Decomposition and Dependency Description
3.3.1 Module Decomposition
The modules will be based off of the context diagram shown below in
Figure 2.
14
Figure 5-Context Diagram
The system will have to request and receive data from the clients and publish
the data to the web server when prompted by the user. The host computer will
only be used to update/maintain the system. The webserver program itself
consist of five modules.
3.1.1 Simple WEB Server
Identification: WEBSERVER
Type:
Purpose:
The webserver program is a portable WEB server intended to be used for
local application. Webserver supports CGI with both POST and GET
methods. The Unix implementation is intended to be used mostly for CGI
testing purposes, while the VxWorks is intended to be a deployment
platform.
Function:
The webserver program running under VxWorks can be used to enable
querying RTDB (Real-Time Data Base) from Web browsers.
Serial Connection
15
The Web browser can be used also as a front end for various CGI
programs.
The set of environment variables defined by the webserver program is
limited to the following values: REQUEST_METHOD,
CONTENT_LENGTH, QUERY_STRING, and DOCUMENT_ROOT.
Webserver program doesn't implement any security policy.
The server is currently implemented as a single-threaded program.
The input to CGI programs is limited to 16kB.
3.3.1.2 Interprocess Communication Service Module
UTILITY: General purpose software
CONTENTS: This module contains the following functions that can be used
to implement a connection-oriented communication using stream sockets:
ipc_makeService - create a socket and bind it to the port
corresponding to the given
service
ipc_makeServer - create a socket a bind it to a given port
ipc_attachClient - accept incoming connection from client and get
client name
ipc_connectService - connect client to a server process using a name of
service as address
ipc_connectServer - connect client to a server using a port as address
ipc_rpc - send request to the server and receive reply
ipc_rpcTmout - send request to server and receive reply with
timeout protection
ipc_rpcTmoutC - send request to server and receive reply with
timeout protection using already established
connection
ipc_read - read a given number of bytes from a stream socket
ipc_write - write a given number of bytes to a stream socket
ipc_close - close connection (call shutdown() and close())
16
ipc_readOrTimeout -read requested number of bytes or time-out
ipc_setReadTimeout - set read time-out value
3.3.1.3 Event and exception logging package
UTILITY: VMTF
FUNCTION: Functions provide standard error reporting method as well as
event reporting method. Currently they print exception/event information on
stderr but in the future will be sending data to a central error and event logger.
CONTENTS: The module contains:
public routines:
log_error() - log error information
log_warning() - log warning information
log_event() - log event information
private routine:
log_doit() - print error/event information
log_construct() - assemble message
3.1.4 Message-oriented IPC utility functions.
Message format:
Figure 6 - Message Format for Web Server
msg_send() - write message to a given fd
msg_receive() - read message from a given fd
msg_receiveOrTimeout - read message from a given fd or time-out
17
3.3.1.5 Server's infinite loop
This module contains an universal server main loop and a set of functions to
manipulate the structure containg information about all the clients.
CONTENTS:
srv_init() - init Server Control Block
srv_loop() - receive and serve requests
srv_closeAllConnections() - close all active connections
srv_closeConnection() - close single connection
srv_clientNextFd() - iterator function to go thru all the
connections
srv_clientAdd() - add a new connection (client)
srv_clientDel() - remove a given connection (client)
srv_clientGetName() - get client's name
srv_getClientInfo() - get the information associated with
a client
srv_setClientInfo() - set the information associated with
a client
srv_clientAlloc() - allocate memory for Server control
Block
srv_setSpecialFd() - set special file descriptor
srv_getSpecialFd() - get special file descriptor
srv_catchSignals() - ignore some Unix signals
srv_srv_keepUnknownClients() - do not disconnect unidentified
clients
3.3.2 Dependency
3.3.2.1 Simple WEB Server
Function relies on service port number.
Function relies on root web directory.
3.3.1.2 Interprocess Communication Service Module
Function relies on service name, name of the service.
18
3.3.1.3 Event and exception logging package
Function relies on occurrence of an event.
3.3.1.4 Message-oriented IPC utility functions.
Function relies on request.
3.3.1.5 Server's infinite loop
Function relies on internet connectivity.
19
4. Implementation
The webserver program is a portable web server running on the VxWorks target
intended to be used for accessing local applications running on measurement devices (see
Figure 5). Webserver supports CGI with both POST and GET methods and is intended to
be a platform for an Internet based control of remote devices.
The webserver program can be also used to enable querying RTDB (Real-Time
Data Base) from web browsers. The web browser can be used also as a front end for
various CGI programs allowing for development of various diagnostic systems,
calibration applications, hardware tests, and resources monitoring applications.
4.1. User Instructions To fully understand the operation of the server and be able to program and modify it, one
has to have full command of VxWorks programming. This is explained in Victor Elci’s paper [9].
The following steps have to be followed to run the webserver:
1. Open the FTP server (Start->Programs->Wind River-> VxWorks 6.6 and General
Purpose Technologies->FTP Server). A window shown in Fig. 7 should appear.
Figure 7 - FTP Server
20
2. Open up Workbench Open the FTP server (Start->Programs->Wind River->
Workbench 3.0-> Workbench 3.0) A window shown in Figure 8 should appear.
Figure 8 - Workbench 3.0
21
3. Make sure the Build Properties are on gnu. You can see them by right clicking on
the Webserver project in the Project Explorer, assuming that the source is already
there, section in the top left of Figure 8. Then choose properties from the list and
then click on Build Properties on the left window that appears. You should see the
screen as shown in Figure 9.
Figure 9 - Build Properties
22
4. Right Click the Webserver folder and Build Project (Figure 10), to create an
executable webserver.out. As a result a compilation will occur and respective
messages will be shown in a Build Console window.
Figure 10 - Build Project
5. Connect to the Target by right clicking on the VxWorks in Remote Systems
window, and select connect VxWorks. As a result the VxWorks line in Remote
Systems window will expand and the conection status is shown in the bottom line
of the Workbench window.
Note: If the Connection is lost at any point, this step and all preceding it have to
be repeated after resetting the target hardware (by pressing the Power Button
twice)
23
6. Download the Webserver.out to the target (Figure 11). You can do this by
expanding the Webserver project and then expanding the Build Targets, then right
click on Webserver.out and choose download. A couple of diagnostic windows
may appear to which you should click OK. The Webserver.out file will appear in
the Remote Systems window under your box.
Figure 11 – Download Webserver.out file
24
7. Run the host shell by right clicking on the VxWorks line in Remote Systems
window as show in Figure 12. This can be accomplished in multiple ways, for
example by choosing the Target button from the Main menu of the Workbench.
Figure 12 – Run Host Shell
25
8. Select OK in the window which shows up and the host shell should appear as
shown in Figure 13.
Figure 13 - Host Shell
9. To run the web server execute the command:
taskSpawn "tWeb", 100, 8, 160000, webserver, 80, 50,
"/webserver/"
"/webserver" is the location of the directory in the above case. The directory is
located in the main drive of the device “JZ-HP-WINXP” or host computer. You can
change the contents in the directory without the need to reset the server.
26
The taskSpawn() function is show in figure 14. The values of three arguments are as
follows: Port = 80, maxClients = 50, rootDirectory = “/webserver/”
Figure 14 - Prototype of taskSpawn
The entry point for webserver is detailed below: int webserver(int servicePort, int maxClients, char *directory)
If no port is given the server uses its default port (80). The directory option is
given to define a root web directory. Only files located in this directory and its
subdirectories can be accessed by the user.
10. In order to get the web server running you need to request the website address
three times in the browser. After that, any other user should be able to connect
without being sent into an infinite waiting time. In my case I would request the IP
address, 69.88.163.22, in a web browser twice. (This bug will be fixed.)
27
4.2 Program Development
4.2.1 Structure
The structure of the entry point in the webserver is shown in a compact way in Figure 15 and 16.
Figure 15 - Flow chart of entry point Part A
28
Figure 16 - Flow Chart of Entry Point Part B
29
4.2.2 Example
Below is example code for a simple CGI program written for the vxWorks server.
Inorder for the CGI program to work the webserver should be in the svr_loop(),
successfully implement. In svr_loop is called by: srv_loop(&scb, listenFd, maxClients, &timeoutStruct, -1,
&web_message, &web_timeout);
Web_message is a function that calls the CGI handler so that a CGI program like the on
below could be implemented.
Example Code #1: Simple CGI Program
/* Simple CGI program that returns the parameters sent to it.*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef vxworks int simplecgi(void) #else extern char **environ; int main(int argc, char **argv) #endif { int content_length = 0; char *p_request_method = NULL; char *p_user_input = NULL; char *p_content_length = NULL; printf("<html>\n" "<head>\n" "<title>CGI</title>\n" "</head>\n" "<body>\n" "<pre>\n"); if((p_request_method=getenv("REQUEST_METHOD")) != NULL) { printf("REQUEST_METHOD = %s\n", p_request_method); printf("DOCUMENT_ROOT = '%s'\n", getenv("DOCUMENT_ROOT")); if(strncmp(p_request_method, "GET", 3) == 0) { printf("CONTENT_LENGTH = %s\n", getenv("CONTENT_LENGTH")); printf("USER_INPUT = '%s'\n", getenv("QUERY_STRING")); } else if(strncmp(p_request_method, "POST", 4) == 0) { if((p_content_length=getenv("CONTENT_LENGTH")) != NULL) { if(sscanf(p_content_length, "%d", &content_length) == 1){ printf("CONTENT_LENGTH = %d\n", content_length); if((p_user_input=malloc(content_length+1)) != NULL){ if(fread(p_user_input, 1, content_length, stdin) > 0) { p_user_input[content_length] = '\0'; printf("USER_INPUT = '%s'\n", p_user_input); } free(p_user_input); } } } } } printf("</pre>\n</body>\n<html>\n"); return 0; }
30
4.2.3 Remote Access Sometimes working on the host computer is not always possible. In order to work
on the webserver without working on the host computer physically the computer has been set up for remote access. Below is some instructions on how to remote into the host computer.
In order for you to connect remotely to the host computer your computer must be running on Windows 95 or later. You also need to know the IP address of the host computer.
To set up the Remote Desktop, start with the host computer (this set has already be initiate of the schools host).
1. Click Start, click Control Panel, and then click Performance and Maintenance.
Figure 17 - Control Panel
2. Click System.
31
Figure 18 - Performance and Maintenance
3. Click the Remote tab, select the Allow users to connect remotely to this computer check box, and then click OK.
Next, make sure you have Windows Firewall set up to allow exceptions.
1. In the Control Panel, click Security Center. 2. Under Manage security settings for, click Windows Firewall.
Figure 19 - Security Center
3. Make sure the Don't allow exceptions check box is not selected
32
Figure 20 - Windows Firewall
4. Click the Exceptions tab, and verify that the Remote Desktop check box is selected.
33
Figure 21 - Windows Firewall Exceptions
5. Click OK, and then close the Windows Security Center window. Your host computer is now set up to allow remote access.
To connect the client (or remote) computer to the host computer, follow these steps:
1. On your home computer, click Start, run, type mstsc (Microsoft Control Center)
Figure 22 – Run mstsc
2. In the Remote Desktop Connection box, type the IP Address of your host computer.
34
Figure 23 - Remote Desktop Connection
3. Click Connect. 4. When the Log On to Windows dialog box appears, type your user name, password,
and domain (if required), and then click OK.
Figure 24 - Log On to Windows
5. The Remote Desktop window opens, and you see the desktop settings, files, and programs that are on your host computer, which in this example is your work computer. Your host computer remains locked, and nobody can access it without a password. In addition, no one will be able to see the work you are doing remotely.
To end your Remote Desktop session: 1. Click Start and then click Log Off. 2. When Prompted, click Log Off
Figure 25 - Log of WIndows
35
5. Testing Documents
At the time of this writing the implementation of the webserver is still under
development. Below is the description of current problems and their suggested resolution.
After getting the code to compile I ran the program and got the following output
which can be seen in the Appendix under Compilation 1. If I ran the program in the Host
Shell by using the function taskSpawn, shown below, the task would pend and have the
error number 0x2b0001. taskSpawn "tWeb", 100, 8, 160000, webserver, 80, 50, " /webserver/"
Error number 0x2b0001 is: S_inetLib_ILLEGAL_INTERNET_ADDRESS (2818049 or 0x2b0001) May be set by the following routines:
arpAdd( ), arpDelete( ), arpResolve( ), dhcpcBind( ), dhcpcBootInformGet( ), dhcpcInformGet( ), dhcpsInit( ), dhcpsLeaseEntryAdd( ), ftpHookup( ), ftpLs( ), ftpXfer( ), hostAdd( ), hostDelete( ), ifAddrAdd( ), ifAddrDelete( ), ifAddrGet( ), ifAddrSet( ), ifBroadcastGet( ), ifBroadcastSet( ), ifDstAddrGet( ), ifDstAddrSet( ), ifFlagChange( ), ifFlagGet( ), ifFlagSet( ), ifMaskGet( ), ifMaskSet( ), ifMetricGet( ), ifMetricSet( ), ifUnnumberedSet( ), inet_addr( ), inet_aton( ), inet_netof_string( ), ipDetach( ), m2RipIfConfEntryGet( ), m2RipIfConfEntrySet( ), mRouteAdd( ), mRouteDelete( ), ping( ), proxyNetCreate( ), proxyNetDelete( ), proxyReg( ), proxyUnreg( ), rcmd( ), resolvInit( ), resolvParamsSet( ), ripAuthHookAdd( ), ripAuthHookDelete( ), ripLeakHookAdd( ), ripLeakHookDelete( ), ripSendHookAdd( ), ripSendHookDelete( ), rlogin( ), routeAdd( ), routeDelete( ), routeNetAdd( ), slipInit( ), sntpcTimeGet( ), sntpsConfigSet( ), sockUploadPathCreate( ), tftpCopy( ), tftpPeerSet( ), tftpXfer( ), wdbEndPktDevInit( ), wvNetAddressFilterSet( )
The issue is none of these routines are called through in the program or headers.
Therefore I figured the error was because the web server was made to compliment many
operating systems.
In order to see if that was true I commented out any code calling for another OS
function.
The first program I touched was ipclib.c and I commented out some header files
along with inside. Below is the commented out includes:
36
/*#ifndef vxworks *//* Unix */ /*#include <netdb.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> #include <netinet/in.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/time.h> #include <signal.h> #include <sys/wait.h> #include <netinet/tcp.h> #else */ /* vxworks */ #include <ioLib.h> #include <hostLib.h> #include <inetLib.h> #include <sys/socket.h> #include <sockLib.h> #include <in.h> #include <sysLib.h> #include <selectLib.h> #include <netinet/tcp.h> #include "netdblib.h" /*#endif *//* Unix */
If a compile then I get this list of errors:
37
Build Started in Project 'Webserver': 2009-04-29 04:52:00 Generation of makefiles started. Generation of makefiles finished (Elapsed Time: 00:00). Platform: Wind River VxWorks 6.6 Command: make --no-print-directory BUILD_SPEC=PPC860sfdiab DEBUG_MODE=0 TRACE=1 Working Directory: C:/WindRiver/workspace/Webserver/PPC860sfdiab if [ ! -d "`dirname "Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o"`" ]; then mkdir -p "`dirname "Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o"`"; fi;echo "building Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o"; dcc -XO -Xsize-opt -tPPC860FS:vxworks66 -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd -IC:/WindRiver/vxworks-6.6/target/h -IC:/WindRiver/vxworks-6.6/target/h/wrn/coreip -DCPU=PPC860 -DTOOL_FAMILY=diab -DTOOL=sfdiab -D_WRS_KERNEL -o "Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o" -c "C:/WindRiver/workspace/Webserver/webserver/ipclib/ipclib.c" building Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\wrapper/wrapperHostLib.h", line 36: error (dcc:1633): parse error near 'socklen_t' "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\wrapper/wrapperHostLib.h", line 37: error (dcc:1086): redeclaration of size_t "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\wrapper/wrapperHostLib.h", line 37: error (dcc:1086): redeclaration of size_t "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netinet/in.h", line 471: error (dcc:1100): member is incomplete "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netinet/in.h", line 480: error (dcc:1100): member is incomplete "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netinet/in.h", line 481: error (dcc:1100): member is incomplete "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netdb.h", line 226: error (dcc:1633): parse error near 'socklen_t' "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netdb.h", line 227: error (dcc:1086): redeclaration of size_t "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netdb.h", line 227: error (dcc:1086): redeclaration of size_t "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\hostLib.h", line 158: error (dcc:1633): parse error near 'socklen_t' "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\hostLib.h", line 158: warning (dcc:1503): missing semi-colon "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\hostLib.h", line 158: warning (dcc:1503): missing semi-colon "C:/WindRiver/workspace/Webserver/webserver/ipclib/ipclib.c", line 66: error (dcc:1722): junk after `#include <filename>' "C:/WindRiver/workspace/Webserver/webserver/ipclib/ipclib.c", line 68: error (dcc:1722): junk after `#include <filename>' "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\inetLib.h", line 79: error (dcc:1086): redeclaration of inet_lnaof "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\inetLib.h", line 80: error (dcc:1086): redeclaration of inet_netof "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\inetLib.h", line 81: error (dcc:1086): redeclaration of inet_network "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\sockLib.h", line 83: error (dcc:1086): redeclaration of setsockopt "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\sockLib.h", line 91: error (dcc:1086): redeclaration of sendmsg "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\sockLib.h", line 93: error (dcc:1086): redeclaration of sendto "C:/WindRiver/workspace/Webserver/webserver/ipclib/ipclib.c", line 73: error (dcc:1621): can't find include file netdblib.h C:\WindRiver\workbench-3.0\x86-win32\bin\make.exe: *** [Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o] Error 1 Build Failed in Project 'Webserver' (Process Exit Value was 2): 2009-04-29 04:52:00 (Elapsed Time: 00:01)
38
I decide to check out hostlib.h hostlib.h calls: #include <wrapper/wrapperHostLib.h> #include <netinet/in.h> #include <sys/socket.h> #include <netdb.h> #include <lstLib.h> #include <vwModNum.h> #include <net/if.h>
So I commented out socket.h, inetLib.h, sockLib.h since the compiler claim to have
redeclarations of functions. The segment now looks like: /*#ifndef vxworks *//* Unix */ /*#include <netdb.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> #include <netinet/in.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/time.h> #include <signal.h> #include <sys/wait.h> #include <netinet/tcp.h> #else */ /* vxworks */ #include <ioLib.h> #include <hostLib.h> /*#include <inetLib.h>*/ /*Already declared functions?*/ #include <sys/socket.h> /*#include <sockLib.h>*/ /*Already declared functions?*/ /*#include <in.h>*/ #include <sysLib.h> #include <selectLib.h> #include <netinet/tcp.h> /*#include "../netdblib/netdblib.h" */ /*#endif *//* Unix */
And now the compiler shows:
39
Build Started in Project 'Webserver': 2009-04-29 04:58:53 Generation of makefiles started. Generation of makefiles finished (Elapsed Time: 00:00). Platform: Wind River VxWorks 6.6 Command: make --no-print-directory BUILD_SPEC=PPC860sfdiab DEBUG_MODE=0 TRACE=1 Working Directory: C:/WindRiver/workspace/Webserver/PPC860sfdiab if [ ! -d "`dirname "Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o"`" ]; then mkdir -p "`dirname "Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o"`"; fi;echo "building Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o"; dcc -XO -Xsize-opt -tPPC860FS:vxworks66 -W:c:,-Xclib-optim-off -Xansi -Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd -IC:/WindRiver/vxworks-6.6/target/h -IC:/WindRiver/vxworks-6.6/target/h/wrn/coreip -DCPU=PPC860 -DTOOL_FAMILY=diab -DTOOL=sfdiab -D_WRS_KERNEL -o "Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o" -c "C:/WindRiver/workspace/Webserver/webserver/ipclib/ipclib.c" building Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\wrapper/wrapperHostLib.h", line 36: error (dcc:1633): parse error near 'socklen_t' "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\wrapper/wrapperHostLib.h", line 37: error (dcc:1086): redeclaration of size_t "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\wrapper/wrapperHostLib.h", line 37: error (dcc:1086): redeclaration of size_t "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netinet/in.h", line 471: error (dcc:1100): member is incomplete "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netinet/in.h", line 480: error (dcc:1100): member is incomplete "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netinet/in.h", line 481: error (dcc:1100): member is incomplete "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netdb.h", line 226: error (dcc:1633): parse error near 'socklen_t' "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netdb.h", line 227: error (dcc:1086): redeclaration of size_t "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\netdb.h", line 227: error (dcc:1086): redeclaration of size_t "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\hostLib.h", line 158: error (dcc:1633): parse error near 'socklen_t' "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\hostLib.h", line 158: warning (dcc:1503): missing semi-colon "C:/WindRiver/vxworks-6.6/target/h/wrn/coreip\hostLib.h", line 158: warning (dcc:1503): missing semi-colon C:\WindRiver\workbench-3.0\x86-win32\bin\make.exe: *** [Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipclib.o] Error 1 Build Failed in Project 'Webserver' (Process Exit Value was 2): 2009-04-29 04:58:54 (Elapsed Time: 00:01)
I am uncertain of why these errors occur since no modification of the headers has
happened since October 2007.
I have changed the build specs to gnu and edited some code. The web server now
runs after some minor editing.
40
Functions that where edited:
struct tm localTime in void log_construct()
This function had an error when it referenced to localTime.tm_year since the logging
feature itself is not crucial to the web server I removed the time and dating feature.
vsprintf(&(buf[strlen(buf)]), format, ap) in void log_construct()
vsprintf() had an error when calling the function, it was commented out.
if (clientFd > maxFd){ /*JS 05/04/09 */
maxFd = clientFd-1; /*JZ 05/05/09 entered -1*/ }
clientFd – 1 was added to prevent exception.
int length = 0; /*struct stat fileStat;*/ if ((fin = fopen(file, "r")) != NULL) {
while ((no = fread(buffer, 1, WEB_OUTPUT_BUFFER, fin)) > 0) length+=no;
fclose(fin); } /*if(stat(file, &fileStat) != ERROR) {
length = fileStat.st_size; }*/
Removed stat() function since VxWorks system was not recognizing the call, and
replaced with fread().
41
6. Conclusion
At the moment the web server program is not working but it has made a
significant step in progress, considering it has not been compiled in 10 years. I am also
looking into other solutions to open source, free web servers exist for vxWorks, one is
known as GoAhead Web Server and the other is Klone 2 webserver, WindRiver also has
their own web server program. Since the web servers are supported by professionals it
may be a better solution to the problem.
7. References
[1] Desavouret, E., and J. Nogiec. "Web Tools To Monitor And Debug DAQ Hardware."
Fermilab 131 (2003).
[2] Fink, J. "What is a kernel?" What is a kernel? 25 Sept. 2008
<http://systhread.net/texts/200606kern_def.php>.
[3] Rogers, D. "Software on board mars pathfinder has Berkeley lab ties." Berkeley Lab
Currents. 8 Aug. 1997. 23 Sept. 2008
<http://www.lbl.gov/publications/currents/archive/aug-8-1997.html#rtftoc2>.
[4] "Wind River VxWorks." Wind River. Jan. 2008. Wind River. 21 Sept. 2008
<http://www.windriver.com/products/vxworks>.
[5] "Wind River Workbench awarded best commercial Eclipse-based developer tool by
the Eclipse Foundation." Wind River at EclipseCon 2008. 19 Mar. 2008. Wind River.
<http://www.windriver.com/announces/eclipsecon2008/>.
[6] "Introduction of an Embedded system." MIZI Linux SDK for S3C2410. MIZI
Research, Inc. 6 Oct. 2008 <http://www.mizi.com/developer/s3c2410x/index.html>.
[7] “Webserver - Portable Web server.” Jerzy M. Nogiec. July 30, 1999.
[8] Alphabetical List of Error Codes <
http://www.slac.stanford.edu/exp/glast/flight/sw/vxdocs/vxworks/errno/errnoAlphaList.ht
ml >
42
Appendix
Compilation 1 Checking License... OK Connecting host shell to target connection 'VxWorks6x_69.88.163.22@JZ-HP-WINXP'...OK Detected target plugin 'unifiedtargetplugin'. Establishing direct WTX connection with target server 'VxWorks6x_69.88.163.22@JZ-HP-W INXP'. Loading the 'c','cmd','gdb' shell interpreters... OK. ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ////// ////// ////// ////// ////// | ////// ////// ////// ////// ////// | W I N D R I V E R ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | Development System //// //// //// //// //// | //// //// //// //// //// | //// //// //// //// //// | Host Based Shell //// //// //// //// //// | //// //// //// //// //// | /// /// /// /// /// | Version 2.2 /// /// /// /// /// | // // // // // | // // // // // | // // // // // | // // // // // | Copyright 1995-2007 Wind River Systems, Inc. C++ Constructors/Destructors Strategy is AUTOMATIC -> taskSpawn "tWeb", 100, 8, 160000, webserver, 80, 50, "/webserver/" value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver, 80, 50, "/webserver/" value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- -----
43
tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend+T 0xb1e6c 0x2b0001 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend+T 0xb1e6c 0x2b0001 0 value = 0 = 0x0 -> -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> td tWeb cannot kill task 0x16d4470 which is currently safe from deletion. value = -1 = 0xffffffff -> Rebooting... Waiting for target to reboot. (Press Ctrl+D to exit)| Checking License... OK
44
Compilation 2 Connecting host shell to target connection 'VxWorks6x_69.88.163.22@JZ-HP-WINXP'...OK Detected target plugin 'unifiedtargetplugin'. Establishing direct WTX connection with target server 'VxWorks6x_69.88.163.22@JZ-HP-W INXP'. Loading the 'c','cmd','gdb' shell interpreters... OK. ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ////// ////// ////// ////// ////// | ////// ////// ////// ////// ////// | W I N D R I V E R ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | Development System //// //// //// //// //// | //// //// //// //// //// | //// //// //// //// //// | Host Based Shell //// //// //// //// //// | //// //// //// //// //// | /// /// /// /// /// | Version 2.2 /// /// /// /// /// | // // // // // | // // // // // | // // // // // | // // // // // | Copyright 1995-2007 Wind River Systems, Inc. C++ Constructors/Destructors Strategy is AUTOMATIC -> -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0
45
value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver, 80, 50, "/webserver/" value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> Break at 0x21810: vxTaskEntry Task: 0x16D3438 (tWeb) i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> Break at 0x21810: vxTaskEntry Task: 0x16D3438 (tWeb) -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> Break at 0x21810: vxTaskEntry Task: 0x16D3438 (tWeb) i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> -> Break at 0x21810: vxTaskEntry Task: 0x16D3438 (tWeb) -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0
46
tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver value = 23938160 = 0x16d4470 -> o C interp: unknown symbol name 'o'. -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY
47
---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver, 50 value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver value = 23938160 = 0x16d4470 -> Break at 0x21810: vxTaskEntry Task: 0x16D3438 (tWeb) -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d3438 100 Pend+T 0xb1e6c 0x2b0001 0
48
value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d3438 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d3438 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d3438 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> Rebooting... Waiting for target to reboot. (Press Ctrl+D to exit)\ Checking License... OK
49
Compilation 3 Connecting host shell to target connection 'VxWorks6x_69.88.163.22@JZ-HP-WINXP'...OK Detected target plugin 'unifiedtargetplugin'. Establishing direct WTX connection with target server 'VxWorks6x_69.88.163.22@JZ-HP-W INXP'. Loading the 'c','cmd','gdb' shell interpreters... OK. ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ////// ////// ////// ////// ////// | ////// ////// ////// ////// ////// | W I N D R I V E R ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | ///// ///// ///// ///// ///// | Development System //// //// //// //// //// | //// //// //// //// //// | //// //// //// //// //// | Host Based Shell //// //// //// //// //// | //// //// //// //// //// | /// /// /// /// /// | Version 2.2 /// /// /// /// /// | // // // // // | // // // // // | // // // // // | // // // // // | Copyright 1995-2007 Wind River Systems, Inc. C++ Constructors/Destructors Strategy is AUTOMATIC -> taskSpawn "tWeb", 100, 8, 160000, webserver value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0
50
tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend+T 0xb1e6c 0x2b0001 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0
51
tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Ready 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Ready 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0
52
tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0
53
tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 0 value = 0 = 0x0 -> td tWeb cannot kill task 0x16d4470 which is currently safe from deletion. value = -1 = 0xffffffff -> td tWeb value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO DELAY ---------- ------------ ---------- --- ---------- ---------- ---------- ----- tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 0 value = 0 = 0x0 -> Break at 0x21810: vxTaskEntry Task: 0x16D3438 (tWeb) Break at 0x21810: vxTaskEntry Task: 0x16FA7D8 (tWeb) Break at 0x21810: vxTaskEntry Task: 0x1721B78 (tWeb)