static int info_cb (const td_thrhandle_t *th, void *s) { td_err_e ret; td_thrinfo_t ti; if ((ret = p_td_thr_get_info (th, &ti)) == TD_OK) { printf_filtered ("%s thread #%d, lwp %d, ", ti.ti_type == TD_THR_SYSTEM ? "system" : "user ", ti.ti_tid, ti.ti_lid); switch (ti.ti_state) { default: case TD_THR_UNKNOWN: printf_filtered ("<unknown state>"); break; case TD_THR_STOPPED: printf_filtered ("(stopped)"); break; case TD_THR_RUN: printf_filtered ("(run) "); break; case TD_THR_ACTIVE: printf_filtered ("(active) "); break; case TD_THR_ZOMBIE: printf_filtered ("(zombie) "); break; case TD_THR_SLEEP: printf_filtered ("(asleep) "); break; case TD_THR_STOPPED_ASLEEP: printf_filtered ("(stopped asleep)"); break; } /* Print thr_create start function: */ if (ti.ti_startfunc != 0) { struct minimal_symbol *msym; msym = lookup_minimal_symbol_by_pc (ti.ti_startfunc); if (msym) printf_filtered (" startfunc: %s\n", SYMBOL_NAME (msym)); else printf_filtered (" startfunc: 0x%s\n", paddr (ti.ti_startfunc)); } /* If thread is asleep, print function that went to sleep: */ if (ti.ti_state == TD_THR_SLEEP) { struct minimal_symbol *msym; msym = lookup_minimal_symbol_by_pc (ti.ti_pc); if (msym) printf_filtered (" - Sleep func: %s\n", SYMBOL_NAME (msym)); else printf_filtered (" - Sleep func: 0x%s\n", paddr (ti.ti_startfunc)); } /* Wrap up line, if necessary */ if (ti.ti_state != TD_THR_SLEEP && ti.ti_startfunc == 0) printf_filtered ("\n"); /* don't you hate counting newlines? */ } else warning ("info sol-thread: failed to get info for thread."); return 0; }
enum mi_cmd_result mi_cmd_var_create (char *command, char **argv, int argc) { CORE_ADDR frameaddr = 0; struct varobj *var; char *name; char *frame; char *expr; char *type; struct cleanup *old_cleanups; enum varobj_type var_type; if (argc != 3) { /* xasprintf (&mi_error_message, "mi_cmd_var_create: Usage: ."); return MI_CMD_ERROR; */ error ("mi_cmd_var_create: Usage: NAME FRAME EXPRESSION."); } name = xstrdup (argv[0]); /* Add cleanup for name. Must be free_current_contents as name can be reallocated */ old_cleanups = make_cleanup (free_current_contents, &name); frame = xstrdup (argv[1]); old_cleanups = make_cleanup (xfree, frame); expr = xstrdup (argv[2]); if (strcmp (name, "-") == 0) { xfree (name); name = varobj_gen_name (); } else if (!isalpha (*name)) error ("mi_cmd_var_create: name of object must begin with a letter"); if (strcmp (frame, "*") == 0) var_type = USE_CURRENT_FRAME; else if (strcmp (frame, "@") == 0) var_type = USE_SELECTED_FRAME; else { var_type = USE_SPECIFIED_FRAME; frameaddr = string_to_core_addr (frame); } if (varobjdebug) fprintf_unfiltered (gdb_stdlog, "Name=\"%s\", Frame=\"%s\" (0x%s), Expression=\"%s\"\n", name, frame, paddr (frameaddr), expr); var = varobj_create (name, expr, frameaddr, var_type); if (var == NULL) error ("mi_cmd_var_create: unable to create variable object"); ui_out_field_string (uiout, "name", name); ui_out_field_int (uiout, "numchild", varobj_get_num_children (var)); type = varobj_get_type (var); if (type == NULL) ui_out_field_string (uiout, "type", ""); else { ui_out_field_string (uiout, "type", type); xfree (type); } do_cleanups (old_cleanups); return MI_CMD_DONE; }
main(int argc, char *argv[]) { int s; /* s = socket */ struct sockaddr_in in_addr; /* Structure used for bind() */ struct sockaddr_in sock_addr; /* Output structure from getsockname */ struct sockaddr_in src_addr; /* Used to receive (addr,port) of sender */ int src_addr_len; /* Length of src_addr */ int len; /* Length of result from getsockname */ char line[MAXSIZE]; int seqno; if (argc == 1) { printf("Usage: %s port\n", argv[0]); exit(1); } /* --- Create a socket --- */ s = socket(AF_INET, SOCK_DGRAM, 0); /* --- Set up socket end-point info for binding --- */ memset((char *)&in_addr, 0, sizeof(in_addr)); in_addr.sin_family = AF_INET; /* Protocol family */ in_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* Wildcard IP address */ in_addr.sin_port = htons(atoi(argv[1])); /* Use any UDP port */ /* --- Here goes the binding... --- */ if (bind(s, (struct sockaddr *)&in_addr, sizeof(in_addr)) == -1) { perror("bind: "); printf("- Note: this program can be run on any machine...\n"); printf(" but you have to pick an unsed port#\n"); exit(1); } else { printf("OK: bind SUCCESS\n"); } /* -------------------------------------------------------- **** Print socket "name" (which is IP-address + Port#) -------------------------------------------------------- */ len = sizeof(sock_addr); getsockname(s, (struct sockaddr *) &sock_addr, &len); printf("Socket is bind to:\n"); printf(" addr = %u\n", ntohl(sock_addr.sin_addr.s_addr) ); printf(" port = %u\n", ntohs(sock_addr.sin_port) ); seqno = 0; while(1) { src_addr_len = sizeof(src_addr); len = reliable_recvfrom(seqno, s, line, MAXSIZE, 0 /* flags */, (struct sockaddr *) &src_addr, src_addr_len); printf("Msg from ("); paddr( (void*) &src_addr.sin_addr); printf("/%u): `%s' (%u bytes)\n", src_addr.sin_port, line, len); seqno++; } }