source: rtems/c/src/librdbg/src/rdbg.c @ cab2730

4.104.114.84.95
Last change on this file since cab2730 was c92fb641, checked in by Joel Sherrill <joel.sherrill@…>, on 10/19/00 at 15:35:21

2000-10-19 Antti P Miettinen <anmietti@…>

  • configure.in: Add m68k support.
  • include/rdbg/m68k, src/m68k, src/m68k/any: New subdirectory.
  • src/_servtgt.c: add status text to prinf upon task creation failure.
  • src/rdbg.c: reconnect rdbg exception handlers upon RPC calls.
  • src/m68k/Makefile.am, src/m68k/any/Makefile.am, src/m68k/any/remdeb_f.x, src/m68k/any/.cvsignore, src/m68k/any/remdeb.h, src/m68k/any/remdeb_xdr.c, src/m68k/any/remdeb_svc.c, src/m68k/excep_f.c, src/m68k/rdbg_cpu_asm.S, src/m68k/rdbg_f.c, src/m68k/.cvsignore: New files.
  • Property mode set to 100644
File size: 3.2 KB
Line 
1/*
2 **************************************************************************
3 *
4 * Component =   
5 *
6 * Synopsis  =   rkdb/rkdb.c
7 *
8 * $Id$
9 *
10 **************************************************************************
11 */
12
13#include <assert.h>
14#include <errno.h>
15#include <rtems.h>
16#include <rtems/error.h>
17#include <rdbg/rdbg.h>
18#include <rdbg/servrpc.h>
19#include <rtems/rtems_bsdnet.h>
20#include <rpc/pmap_clnt.h>
21#include <sys/socket.h>
22#include <netinet/in.h>
23
24u_short  rtemsPort = RTEMS_PORT;
25int      BackPort = RTEMS_BACK_PORT;
26int      rtemsActive = 0;
27SVCXPRT* rtemsXprt;
28int      rtemsSock;
29char     ActName[] = "RTEMS";
30volatile int            ExitForSingleStep = 0 ;
31volatile int            Continue;
32volatile int            justSaveContext;
33volatile Objects_Id     currentTargetThread;
34volatile int            CannotRestart = 0;
35volatile int            TotalReboot = 0;
36int CONN_LIST_INC = 3;
37int PID_LIST_INC  = 1;
38int TSP_RETRIES   = 10;
39
40
41int
42getId()
43{
44  rtems_id id;
45 
46  rtems_task_ident(RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &id);
47    return (int)(id) ;
48}
49
50static void
51remotedeb_2_hook(struct svc_req *rqstp, register SVCXPRT *transp)
52{
53  connect_rdbg_exception(); /* monitor stub changes trace vector */
54  remotedeb_2(rqstp, transp);
55  connect_rdbg_exception();
56}
57
58static int
59rdbgInit (void)
60{
61    int sock;
62    struct sockaddr_in addr;
63
64    sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
65    if (sock == -1) {
66        printf("%s: rkdbInit: cannot allocate socket\n", ActName);
67        return -1;
68    }
69
70    bzero( (void *)&addr, sizeof(struct sockaddr_in));
71    addr.sin_port = htons(rtemsPort);
72    if ((bind(sock, (struct sockaddr*) &addr, sizeof(addr))) == -1) {
73        printf("%s: rkdbInit: cannot bind socket\n", ActName);
74        return -2;
75    }
76    rtemsXprt = svcudp_create(sock);
77    if (svcudp_enablecache(rtemsXprt, 1) == 0) {
78        printf("%s: rkdbInit: cannot enable rpc cache\n", ActName);
79        return -3;
80    }
81    rtemsSock = sock;
82    if (!svc_register(rtemsXprt, REMOTEDEB, REMOTEVERS, remotedeb_2, 0)) {
83        printf(stderr, "unable to register (REMOTEDEB, REMOTEVERS, udp).");
84        return -4;
85    }
86
87    return 0;
88}
89
90rtems_task
91rdbgDaemon (rtems_task_argument argument)
92{
93  svc_run();
94}
95
96void
97rtems_rdbg_initialize (void)
98{
99  rtems_name        task_name;
100  rtems_id          tid;
101  rtems_status_code status;
102
103#ifdef DDEBUG
104        rdb_debug = 1;           /* DPRINTF now will display */
105#endif
106
107    DPRINTF (("%s init starting\n", ActName));
108
109    /* Print version string */
110#ifdef DDEBUG
111    printk ("RDBG v.%d built on [%s %s]\n", SERVER_VERS, __DATE__, __TIME__);
112#else
113    printk ("RDBG v.%d\n", SERVER_VERS);
114#endif
115
116    /* Create socket and init UDP RPC server */
117    if (rdbgInit() != 0) goto error;
118
119    Continue = 1;
120    justSaveContext = 0;
121    currentTargetThread = 0;
122   
123    task_name = rtems_build_name( 'R', 'D', 'B', 'G' );
124    if ((status = rtems_task_create( task_name, 5, 24576,
125                                     RTEMS_INTERRUPT_LEVEL(0),
126                                     RTEMS_DEFAULT_ATTRIBUTES | RTEMS_SYSTEM_TASK
127                                     , &tid ))
128        != RTEMS_SUCCESSFUL){
129      printf("status = %d\n",status);
130      rtems_panic ("Can't create task.\n");
131    }
132
133    status = rtems_task_start(tid, rdbgDaemon, 0);
134
135    return;
136
137error:
138    printf ("initialization failed.\n");
139}
140
141void
142setErrno (int error)
143{
144    errno = error;
145}
146
147int
148getErrno()
149{
150    return errno;
151}
Note: See TracBrowser for help on using the repository browser.