Sei sulla pagina 1di 53

VxWorks Real-Time Kernel Connectivity: Cumulative Report CEN 4935 Joanne Sirois FGCU May 4, 2009

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
2

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
3

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

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].

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 projects 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

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
7

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.
8

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.

Serial Connection

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.
9

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.

10

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.

11

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 projects 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>.

12

[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.

13

Serial Connection

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: 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.
14

WEBSERVER

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 corresponding to the given service ipc_makeServer ipc_attachClient - create a socket a bind it to a given port - 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 ipc_rpc ipc_rpcTmout - connect client to a server using a port as address - send request to the server and receive reply - 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 ipc_write ipc_close - read a given number of bytes from a stream socket - write a given number of bytes to a stream socket - close connection (call shutdown() and close())
15

- create a socket and bind it to the port

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_warning() log_event() private routine: log_doit() log_construct() - print error/event information - assemble message - log error information - log warning information - log event information

3.1.4 Message-oriented IPC utility functions. Message format:

Figure 6 - Message Format for Web Server msg_send() msg_receive() msg_receiveOrTimeout - write message to a given fd - read message from a given fd - read message from a given fd or time-out
16

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() srv_loop() srv_closeAllConnections() srv_closeConnection() srv_clientNextFd() - init Server Control Block - receive and serve requests - close all active connections - close single connection - iterator function to go thru all the connections srv_clientAdd() srv_clientDel() srv_clientGetName() srv_getClientInfo() - add a new connection (client) - remove a given connection (client) - get client's name - 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() srv_getSpecialFd() srv_catchSignals() - set special file descriptor - get special file descriptor - 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.
17

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.

18

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 Elcis 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


19

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

20

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

21

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)

22

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

23

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

24

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.

25

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.)

26

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


27

Figure 16 - Flow Chart of Entry Point Part B

28

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; }

29

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.

30

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

31

Figure 20 - Windows Firewall 4. Click the Exceptions tab, and verify that the Remote Desktop check box is selected.

32

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.

33

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

34

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:

35

/*#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:

36

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-dataarea-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)

37

I decide to check out hostlib.h


hostlib.h calls: #include #include #include #include #include #include #include <wrapper/wrapperHostLib.h> <netinet/in.h> <sys/socket.h> <netdb.h> <lstLib.h> <vwModNum.h> <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:

38

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/ipcli b.o"`" ]; then mkdir -p "`dirname "Webserver_partialImage/NonDebug/Objects/Webserver/webserver/ipclib/ipcli b.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 -Xmakedependency=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/ipcli b.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/ipcli b.o] Error 1 Build Failed in Project 'Webserver' (Process Exit Value was 2): 200904-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.
39

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().

40

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 >

41

Appendix Compilation 1
Checking License... OK Connecting host shell to target connection 'VxWorks6x_69.88.163.22@JZ-HPWINXP'...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 ---------- ------------ ---------- --- ---------- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 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 ----0 0 0 0 0 0

DELAY -----

42

tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 tWeb webserver 0x16d4470 100 Pend+T 0xb1e6c 0x2b0001 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO ---------- ------------ ---------- --- ---------- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 tWeb webserver 0x16d4470 100 Pend+T 0xb1e6c 0x2b0001 value = 0 = 0x0 -> -> i NAME ENTRY TID PRI STATUS PC ERRNO ---------- ------------ ---------- --- ---------- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 tWeb webserver 0x16d4470 100 Pend 0xb1e6c 0x37 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

0 0 0 0 0 0 0

DELAY ----0 0 0 0 0 0 0

DELAY ----0 0 0 0 0 0 0

43

Compilation 2
Connecting host shell to target connection 'VxWorks6x_69.88.163.22@JZ-HPWINXP'...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 ---------- ------------ ---------- --- ---------- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO ---------- ------------ ---------- --- ---------- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0

DELAY ----0 0 0 0 0 0

DELAY ----0 0 0 0 0 0

44

value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver, 80, 50, "/webserver/" value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS PC ERRNO ---------- ------------ ---------- --- ---------- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 value = 0 = 0x0 -> Break at 0x21810: vxTaskEntry Task: 0x16D3438 (tWeb) i NAME ENTRY TID PRI STATUS PC ERRNO ---------- ------------ ---------- --- ---------- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 value = 0 = 0x0 -> Break at 0x21810: vxTaskEntry Task: 0x16D3438 (tWeb) -> i NAME ENTRY TID PRI ---------- ------------ ---------- --tExcTask excTask 0xd7568 0 tJobTask jobTask 0x113d700 0 tLogTask logTask 0x1140878 0 tNbioLog nbioLogServe 0x1144120 0 tWdbTask wdbTask 0x16aae98 3 tNetTask netTask 0x1149140 50 value = 0 = 0x0 -> Break at 0x21810: vxTaskEntry Task: i NAME ENTRY TID PRI ---------- ------------ ---------- --tExcTask excTask 0xd7568 0 tJobTask jobTask 0x113d700 0 tLogTask logTask 0x1140878 0 tNbioLog nbioLogServe 0x1144120 0 tWdbTask wdbTask 0x16aae98 3 tNetTask netTask 0x1149140 50 value = 0 = 0x0 -> -> Break at 0x21810: vxTaskEntry Task:

DELAY ----0 0 0 0 0 0

DELAY ----0 0 0 0 0 0

STATUS PC ERRNO DELAY ---------- ---------- ---------- ----Pend 0xb1e6c 0 0 Pend 0xb1e6c 0 0 Pend 0xafed0 0 0 Pend 0xb1e6c 0 0 Ready 0xb1e6c 0 0 Ready 0xb1cb8 0 0 0x16D3438 (tWeb) STATUS PC ERRNO DELAY ---------- ---------- ---------- ----Pend 0xb1e6c 0 0 Pend 0xb1e6c 0 0 Pend 0xafed0 0 0 Pend 0xb1e6c 0 0 Ready 0xb1e6c 0 0 Ready 0xb1cb8 0 0

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

45

tLogTask logTask 0x1140878 0 Pend tNbioLog nbioLogServe 0x1144120 0 Pend tWdbTask wdbTask 0x16aae98 3 Ready tNetTask netTask 0x1149140 50 Ready value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS ---------- ------------ ---------- --- ---------tExcTask excTask 0xd7568 0 Pend tJobTask jobTask 0x113d700 0 Pend tLogTask logTask 0x1140878 0 Pend tNbioLog nbioLogServe 0x1144120 0 Pend tWdbTask wdbTask 0x16aae98 3 Ready tNetTask netTask 0x1149140 50 Ready 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 ---------- ------------ ---------- --- ---------tExcTask excTask 0xd7568 0 Pend tJobTask jobTask 0x113d700 0 Pend tLogTask logTask 0x1140878 0 Pend tNbioLog nbioLogServe 0x1144120 0 Pend tWdbTask wdbTask 0x16aae98 3 Ready tNetTask netTask 0x1149140 50 Ready value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS ---------- ------------ ---------- --- ---------tExcTask excTask 0xd7568 0 Pend tJobTask jobTask 0x113d700 0 Pend tLogTask logTask 0x1140878 0 Pend tNbioLog nbioLogServe 0x1144120 0 Pend tWdbTask wdbTask 0x16aae98 3 Ready tNetTask netTask 0x1149140 50 Ready value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS ---------- ------------ ---------- --- ---------tExcTask excTask 0xd7568 0 Pend tJobTask jobTask 0x113d700 0 Pend tLogTask logTask 0x1140878 0 Pend tNbioLog nbioLogServe 0x1144120 0 Pend tWdbTask wdbTask 0x16aae98 3 Ready tNetTask netTask 0x1149140 50 Ready value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS

0xafed0 0xb1e6c 0xb1e6c 0xb1cb8

0 0 0 0

0 0 0 0

PC ERRNO DELAY ---------- ---------- ----0xb1e6c 0 0 0xb1e6c 0 0 0xafed0 0 0 0xb1e6c 0 0 0xb1e6c 0 0 0xb1cb8 0 0

PC ERRNO DELAY ---------- ---------- ----0xb1e6c 0 0 0xb1e6c 0 0 0xafed0 0 0 0xb1e6c 0 0 0xb1e6c 0 0 0xb1cb8 0 0

PC ERRNO DELAY ---------- ---------- ----0xb1e6c 0 0 0xb1e6c 0 0 0xafed0 0 0 0xb1e6c 0 0 0xb1e6c 0 0 0xb1cb8 0 0

PC ERRNO DELAY ---------- ---------- ----0xb1e6c 0 0 0xb1e6c 0 0 0xafed0 0 0 0xb1e6c 0 0 0xb1e6c 0 0 0xb1cb8 0 0

PC

ERRNO

DELAY

46

---------- ------------ ---------- --- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c tJobTask jobTask 0x113d700 0 Pend 0xb1e6c tLogTask logTask 0x1140878 0 Pend 0xafed0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c tNetTask netTask 0x1149140 50 Ready 0xb1cb8 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ---------- ------------ ---------- --- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c tJobTask jobTask 0x113d700 0 Pend 0xb1e6c tLogTask logTask 0x1140878 0 Pend 0xafed0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c tNetTask netTask 0x1149140 50 Ready 0xb1cb8 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ---------- ------------ ---------- --- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c tJobTask jobTask 0x113d700 0 Pend 0xb1e6c tLogTask logTask 0x1140878 0 Pend 0xafed0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c tNetTask netTask 0x1149140 50 Ready 0xb1cb8 value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver, 50 value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS PC ---------- ------------ ---------- --- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c tJobTask jobTask 0x113d700 0 Pend 0xb1e6c tLogTask logTask 0x1140878 0 Pend 0xafed0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c tNetTask netTask 0x1149140 50 Ready 0xb1cb8 value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver value = 23938160 = 0x16d4470 -> Break at 0x21810: vxTaskEntry Task: 0x16D3438 (tWeb) -> i NAME ---------tExcTask tJobTask tLogTask tNbioLog tWdbTask tNetTask tWeb

---------- ----0 0 0 0 0 0 0 0 0 0 0 0

ERRNO DELAY ---------- ----0 0 0 0 0 0 0 0 0 0 0 0

ERRNO DELAY ---------- ----0 0 0 0 0 0 0 0 0 0 0 0

ERRNO DELAY ---------- ----0 0 0 0 0 0 0 0 0 0 0 0

ENTRY TID PRI ------------ ---------- --excTask 0xd7568 0 jobTask 0x113d700 0 logTask 0x1140878 0 nbioLogServe 0x1144120 0 wdbTask 0x16aae98 3 netTask 0x1149140 50 webserver 0x16d3438 100

STATUS PC ERRNO DELAY ---------- ---------- ---------- ----Pend 0xb1e6c 0 0 Pend 0xb1e6c 0 0 Pend 0xafed0 0 0 Pend 0xb1e6c 0 0 Ready 0xb1e6c 0 0 Ready 0xb1cb8 0 0 Pend+T 0xb1e6c 0x2b0001 0

47

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

48

Compilation 3
Connecting host shell to target connection 'VxWorks6x_69.88.163.22@JZ-HPWINXP'...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 ---------- ------------ ---------- --- ---------- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0 tNetTask netTask 0x1149140 50 Ready 0xb1cb8 0 value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS PC ERRNO ---------- ------------ ---------- --- ---------- ---------- ---------tExcTask excTask 0xd7568 0 Pend 0xb1e6c 0 tJobTask jobTask 0x113d700 0 Pend 0xb1e6c 0 tLogTask logTask 0x1140878 0 Pend 0xafed0 0 tNbioLog nbioLogServe 0x1144120 0 Pend 0xb1e6c 0 tWdbTask wdbTask 0x16aae98 3 Ready 0xb1e6c 0

DELAY ----0 0 0 0 0 0

DELAY ----0 0 0 0 0

49

tNetTask netTask 0x1149140 50 Ready value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS ---------- ------------ ---------- --- ---------tExcTask excTask 0xd7568 0 Pend tJobTask jobTask 0x113d700 0 Pend tLogTask logTask 0x1140878 0 Pend tNbioLog nbioLogServe 0x1144120 0 Pend tWdbTask wdbTask 0x16aae98 3 Ready tNetTask netTask 0x1149140 50 Ready value = 0 = 0x0 -> taskSpawn "tWeb", 100, 8, 160000, webserver value = 23938160 = 0x16d4470 -> i NAME ENTRY TID PRI STATUS ---------- ------------ ---------- --- ---------tExcTask excTask 0xd7568 0 Pend tJobTask jobTask 0x113d700 0 Pend tLogTask logTask 0x1140878 0 Pend tNbioLog nbioLogServe 0x1144120 0 Pend tWdbTask wdbTask 0x16aae98 3 Ready tNetTask netTask 0x1149140 50 Ready tWeb webserver 0x16d4470 100 Pend+T value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS ---------- ------------ ---------- --- ---------tExcTask excTask 0xd7568 0 Pend tJobTask jobTask 0x113d700 0 Pend tLogTask logTask 0x1140878 0 Pend tNbioLog nbioLogServe 0x1144120 0 Pend tWdbTask wdbTask 0x16aae98 3 Ready tNetTask netTask 0x1149140 50 Ready tWeb webserver 0x16d4470 100 Pend value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS ---------- ------------ ---------- --- ---------tExcTask excTask 0xd7568 0 Pend tJobTask jobTask 0x113d700 0 Pend tLogTask logTask 0x1140878 0 Pend tNbioLog nbioLogServe 0x1144120 0 Pend tWdbTask wdbTask 0x16aae98 3 Ready tNetTask netTask 0x1149140 50 Ready tWeb webserver 0x16d4470 100 Pend value = 0 = 0x0 -> i NAME ENTRY TID PRI STATUS ---------- ------------ ---------- --- ---------tExcTask excTask 0xd7568 0 Pend tJobTask jobTask 0x113d700 0 Pend tLogTask logTask 0x1140878 0 Pend tNbioLog nbioLogServe 0x1144120 0 Pend tWdbTask wdbTask 0x16aae98 3 Ready

0xb1cb8

PC ERRNO DELAY ---------- ---------- ----0xb1e6c 0 0 0xb1e6c 0 0 0xafed0 0 0 0xb1e6c 0 0 0xb1e6c 0 0 0xb1cb8 0 0

PC ERRNO DELAY ---------- ---------- ----0xb1e6c 0 0 0xb1e6c 0 0 0xafed0 0 0 0xb1e6c 0 0 0xb1e6c 0 0 0xb1cb8 0 0 0xb1e6c 0x2b0001 0

PC ERRNO DELAY ---------- ---------- ----0xb1e6c 0 0 0xb1e6c 0 0 0xafed0 0 0 0xb1e6c 0 0 0xb1e6c 0 0 0xb1cb8 0 0 0xb1e6c 0x37 0

PC ERRNO DELAY ---------- ---------- ----0xb1e6c 0 0 0xb1e6c 0 0 0xafed0 0 0 0xb1e6c 0 0 0xb1e6c 0 0 0xb1cb8 0 0 0xb1e6c 0x37 0

PC ERRNO DELAY ---------- ---------- ----0xb1e6c 0 0 0xb1e6c 0 0 0xafed0 0 0 0xb1e6c 0 0 0xb1e6c 0 0

50

tNetTask netTask tWeb webserver value = 0 = 0x0 -> i NAME ENTRY ---------- -----------tExcTask excTask tJobTask jobTask tLogTask logTask tNbioLog nbioLogServe tWdbTask wdbTask tNetTask netTask tWeb webserver value = 0 = 0x0 -> i NAME ENTRY ---------- -----------tExcTask excTask tJobTask jobTask tLogTask logTask tNbioLog nbioLogServe tWdbTask wdbTask tNetTask netTask tWeb webserver value = 0 = 0x0 -> i NAME ENTRY ---------- -----------tExcTask excTask tJobTask jobTask tLogTask logTask tNbioLog nbioLogServe tWdbTask wdbTask tNetTask netTask tWeb webserver value = 0 = 0x0 -> i NAME ENTRY ---------- -----------tExcTask excTask tJobTask jobTask tLogTask logTask tNbioLog nbioLogServe tWdbTask wdbTask tNetTask netTask tWeb webserver value = 0 = 0x0 -> i NAME ENTRY ---------- -----------tExcTask excTask tJobTask jobTask tLogTask logTask tNbioLog nbioLogServe tWdbTask wdbTask

0x1149140 50 Ready 0x16d4470 100 Pend

0xb1cb8 0xb1e6c

0 0x37

0 0

TID PRI STATUS PC ERRNO DELAY ---------- --- ---------- ---------- ---------- ----0xd7568 0 Pend 0xb1e6c 0 0 0x113d700 0 Pend 0xb1e6c 0 0 0x1140878 0 Pend 0xafed0 0 0 0x1144120 0 Pend 0xb1e6c 0 0 0x16aae98 3 Ready 0xb1e6c 0 0 0x1149140 50 Ready 0xb1cb8 0 0 0x16d4470 100 Ready 0xb1e6c 0x37 0

TID PRI STATUS PC ERRNO DELAY ---------- --- ---------- ---------- ---------- ----0xd7568 0 Pend 0xb1e6c 0 0 0x113d700 0 Pend 0xb1e6c 0 0 0x1140878 0 Pend 0xafed0 0 0 0x1144120 0 Pend 0xb1e6c 0 0 0x16aae98 3 Ready 0xb1e6c 0 0 0x1149140 50 Ready 0xb1cb8 0 0 0x16d4470 100 Pend 0xb1e6c 0x37 0

TID PRI STATUS PC ERRNO DELAY ---------- --- ---------- ---------- ---------- ----0xd7568 0 Pend 0xb1e6c 0 0 0x113d700 0 Pend 0xb1e6c 0 0 0x1140878 0 Pend 0xafed0 0 0 0x1144120 0 Pend 0xb1e6c 0 0 0x16aae98 3 Ready 0xb1e6c 0 0 0x1149140 50 Ready 0xb1cb8 0 0 0x16d4470 100 Pend 0xb1e6c 0x37 0

TID PRI STATUS PC ERRNO DELAY ---------- --- ---------- ---------- ---------- ----0xd7568 0 Pend 0xb1e6c 0 0 0x113d700 0 Pend 0xb1e6c 0 0 0x1140878 0 Pend 0xafed0 0 0 0x1144120 0 Pend 0xb1e6c 0 0 0x16aae98 3 Ready 0xb1e6c 0 0 0x1149140 50 Ready 0xb1cb8 0 0 0x16d4470 100 Ready 0xb1e6c 0x37 0

TID PRI STATUS PC ERRNO DELAY ---------- --- ---------- ---------- ---------- ----0xd7568 0 Pend 0xb1e6c 0 0 0x113d700 0 Pend 0xb1e6c 0 0 0x1140878 0 Pend 0xafed0 0 0 0x1144120 0 Pend 0xb1e6c 0 0 0x16aae98 3 Ready 0xb1e6c 0 0

51

tNetTask netTask tWeb webserver value = 0 = 0x0 -> i NAME ENTRY ---------- -----------tExcTask excTask tJobTask jobTask tLogTask logTask tNbioLog nbioLogServe tWdbTask wdbTask tNetTask netTask tWeb webserver value = 0 = 0x0 -> i NAME ENTRY ---------- -----------tExcTask excTask tJobTask jobTask tLogTask logTask tNbioLog nbioLogServe tWdbTask wdbTask tNetTask netTask tWeb webserver value = 0 = 0x0 -> i NAME ENTRY ---------- -----------tExcTask excTask tJobTask jobTask tLogTask logTask tNbioLog nbioLogServe tWdbTask wdbTask tNetTask netTask tWeb webserver value = 0 = 0x0 -> i NAME ENTRY ---------- -----------tExcTask excTask tJobTask jobTask tLogTask logTask tNbioLog nbioLogServe tWdbTask wdbTask tNetTask netTask tWeb webserver value = 0 = 0x0 -> i NAME ENTRY ---------- -----------tExcTask excTask tJobTask jobTask tLogTask logTask tNbioLog nbioLogServe tWdbTask wdbTask

0x1149140 50 Ready 0x16d4470 100 Pend

0xb1cb8 0xb1e6c

0 0x37

0 0

TID PRI STATUS PC ERRNO DELAY ---------- --- ---------- ---------- ---------- ----0xd7568 0 Pend 0xb1e6c 0 0 0x113d700 0 Pend 0xb1e6c 0 0 0x1140878 0 Pend 0xafed0 0 0 0x1144120 0 Pend 0xb1e6c 0 0 0x16aae98 3 Ready 0xb1e6c 0 0 0x1149140 50 Ready 0xb1cb8 0 0 0x16d4470 100 Pend 0xb1e6c 0x37 0

TID PRI STATUS PC ERRNO DELAY ---------- --- ---------- ---------- ---------- ----0xd7568 0 Pend 0xb1e6c 0 0 0x113d700 0 Pend 0xb1e6c 0 0 0x1140878 0 Pend 0xafed0 0 0 0x1144120 0 Pend 0xb1e6c 0 0 0x16aae98 3 Ready 0xb1e6c 0 0 0x1149140 50 Ready 0xb1cb8 0 0 0x16d4470 100 Pend 0xb1e6c 0x37 0

TID PRI STATUS PC ERRNO DELAY ---------- --- ---------- ---------- ---------- ----0xd7568 0 Pend 0xb1e6c 0 0 0x113d700 0 Pend 0xb1e6c 0 0 0x1140878 0 Pend 0xafed0 0 0 0x1144120 0 Pend 0xb1e6c 0 0 0x16aae98 3 Ready 0xb1e6c 0 0 0x1149140 50 Ready 0xb1cb8 0 0 0x16d4470 100 Pend 0xb1e6c 0x37 0

TID PRI STATUS PC ERRNO DELAY ---------- --- ---------- ---------- ---------- ----0xd7568 0 Pend 0xb1e6c 0 0 0x113d700 0 Pend 0xb1e6c 0 0 0x1140878 0 Pend 0xafed0 0 0 0x1144120 0 Pend 0xb1e6c 0 0 0x16aae98 3 Ready 0xb1e6c 0 0 0x1149140 50 Ready 0xb1cb8 0 0 0x16d4470 100 Pend 0xb1e6c 0x37 0

TID PRI STATUS PC ERRNO DELAY ---------- --- ---------- ---------- ---------- ----0xd7568 0 Pend 0xb1e6c 0 0 0x113d700 0 Pend 0xb1e6c 0 0 0x1140878 0 Pend 0xafed0 0 0 0x1144120 0 Pend 0xb1e6c 0 0 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 -> 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)

53

Potrebbero piacerti anche