rtos: remove broken code for handling the deprecated qP packet
Change-Id: Icca522c1e2a2877abb20665b171c61079b1d8f48 Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> Reviewed-on: http://openocd.zylin.com/37 Tested-by: jenkins Reviewed-by: Peter Stuge <peter@stuge.se>__archive__
parent
3d2305f2e6
commit
6b209e7489
|
@ -132,91 +132,7 @@ int gdb_thread_packet(struct connection *connection, char *packet, int packet_si
|
|||
{
|
||||
struct target *target = get_target_from_connection(connection);
|
||||
|
||||
if (strstr(packet, "qP"))
|
||||
{
|
||||
#define TAG_THREADID 1 /* Echo the thread identifier */
|
||||
#define TAG_EXISTS 2 /* Is this process defined enough to
|
||||
fetch registers and its stack */
|
||||
#define TAG_DISPLAY 4 /* A short thing maybe to put on a window */
|
||||
#define TAG_THREADNAME 8 /* string, maps 1-to-1 with a thread is */
|
||||
#define TAG_MOREDISPLAY 16 /* Whatever the kernel wants to say about */
|
||||
|
||||
// TODO: need to scanf the mode variable (or it with the tags), and the threadid
|
||||
|
||||
unsigned long mode;
|
||||
threadid_t threadid = 0;
|
||||
struct thread_detail* detail;
|
||||
sscanf(packet, "qP%8lx%16" SCNx64, &mode, &threadid);
|
||||
|
||||
|
||||
int found = -1;
|
||||
|
||||
if ((target->rtos != NULL) && (target->rtos->thread_details
|
||||
!= NULL)) {
|
||||
int thread_num;
|
||||
for (thread_num = 0; thread_num
|
||||
< target->rtos->thread_count; thread_num++) {
|
||||
if (target->rtos->thread_details[thread_num].threadid
|
||||
== threadid) {
|
||||
if (target->rtos->thread_details[thread_num].exists) {
|
||||
found = thread_num;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (found == -1) {
|
||||
gdb_put_packet(connection, "E01", 3); // thread not found
|
||||
return ERROR_OK;
|
||||
}
|
||||
|
||||
detail = &target->rtos->thread_details[found];
|
||||
|
||||
if ( detail->display_str != NULL )
|
||||
{
|
||||
mode &= TAG_DISPLAY;
|
||||
}
|
||||
if ( detail->thread_name_str != NULL )
|
||||
{
|
||||
mode &= TAG_THREADNAME;
|
||||
}
|
||||
if ( detail->extra_info_str != NULL )
|
||||
{
|
||||
mode &= TAG_MOREDISPLAY;
|
||||
}
|
||||
|
||||
|
||||
mode &= TAG_THREADID | TAG_EXISTS;
|
||||
|
||||
char thread_str[1000];
|
||||
|
||||
sprintf(thread_str, "%08lx", mode);
|
||||
sprintf(thread_str, "%016" PRIx64, threadid);
|
||||
|
||||
|
||||
if (mode & TAG_THREADID) {
|
||||
sprintf(thread_str, "%08" PRIx32 "10%016" PRIx64, TAG_THREADID, threadid);
|
||||
}
|
||||
if (mode & TAG_EXISTS) {
|
||||
sprintf(thread_str, "%08" PRIx32 "08%08" PRIx32, TAG_EXISTS, (detail->exists==true)?1:0);
|
||||
}
|
||||
if (mode & TAG_DISPLAY) {
|
||||
sprintf(thread_str, "%08" PRIx32 "%02x%s", TAG_DISPLAY, (unsigned char)strlen(detail->display_str), detail->display_str );
|
||||
}
|
||||
if (mode & TAG_MOREDISPLAY) {
|
||||
sprintf(thread_str, "%08" PRIx32 "%02x%s", TAG_MOREDISPLAY, (unsigned char)strlen(detail->extra_info_str), detail->extra_info_str );
|
||||
}
|
||||
if (mode & TAG_THREADNAME) {
|
||||
sprintf(thread_str, "%08" PRIx32 "%02x%s", TAG_THREADNAME, (unsigned char)strlen(detail->thread_name_str), detail->thread_name_str );
|
||||
}
|
||||
|
||||
//gdb_put_packet(connection, tmpstr, sizeof(tmpstr)-1);
|
||||
gdb_put_packet(connection, thread_str, strlen(thread_str));
|
||||
|
||||
// gdb_put_packet(connection, "", 0);
|
||||
// gdb_put_packet(connection, "OK", 2); // all threads alive
|
||||
return ERROR_OK;
|
||||
}
|
||||
else if (strstr(packet, "qThreadExtraInfo,"))
|
||||
if (strstr(packet, "qThreadExtraInfo,"))
|
||||
{
|
||||
if ((target->rtos != NULL) && (target->rtos->thread_details != NULL) && (target->rtos->thread_count != 0))
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue