From 93bdd69afb58595b3c904e422f856f6bab987e6f Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Mon, 9 Jun 2014 19:13:25 +0200 Subject: add patch series --- ...et-the-name-of-the-kernel-task-to-gnumach.patch | 25 +++++++ .../0002-ddb-print-task-names-if-available.patch | 48 +++++++++++++ ...db-use-db_thread_stat-to-format-the-flags.patch | 33 +++++++++ .../patches/0004-i386-reformat-the-key-map.patch | 82 ++++++++++++++++++++++ debian/patches/0005-i386-remap-some-keys.patch | 60 ++++++++++++++++ ...ain-the-floating-point-flag-in-kdb-output.patch | 30 ++++++++ debian/patches/series | 6 ++ 7 files changed, 284 insertions(+) create mode 100644 debian/patches/0001-kern-set-the-name-of-the-kernel-task-to-gnumach.patch create mode 100644 debian/patches/0002-ddb-print-task-names-if-available.patch create mode 100644 debian/patches/0003-ddb-use-db_thread_stat-to-format-the-flags.patch create mode 100644 debian/patches/0004-i386-reformat-the-key-map.patch create mode 100644 debian/patches/0005-i386-remap-some-keys.patch create mode 100644 debian/patches/0006-doc-explain-the-floating-point-flag-in-kdb-output.patch (limited to 'debian/patches') diff --git a/debian/patches/0001-kern-set-the-name-of-the-kernel-task-to-gnumach.patch b/debian/patches/0001-kern-set-the-name-of-the-kernel-task-to-gnumach.patch new file mode 100644 index 0000000..03df6b9 --- /dev/null +++ b/debian/patches/0001-kern-set-the-name-of-the-kernel-task-to-gnumach.patch @@ -0,0 +1,25 @@ +From 85f88e4de061ade319f720b57aaa1ba908811ecd Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Mon, 9 Jun 2014 15:12:03 +0200 +Subject: [PATCH 1/6] kern: set the name of the kernel task to 'gnumach' + +* kern/taks.c (task_init): Set the name of the kernel task to 'gnumach'. +--- + kern/task.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/kern/task.c b/kern/task.c +index 66eb25c..20acc6a 100644 +--- a/kern/task.c ++++ b/kern/task.c +@@ -70,6 +70,7 @@ void task_init(void) + * for other initialization. (:-() + */ + (void) task_create(TASK_NULL, FALSE, &kernel_task); ++ (void) task_set_name(kernel_task, "gnumach"); + } + + kern_return_t task_create( +-- +2.0.0 + diff --git a/debian/patches/0002-ddb-print-task-names-if-available.patch b/debian/patches/0002-ddb-print-task-names-if-available.patch new file mode 100644 index 0000000..266fd71 --- /dev/null +++ b/debian/patches/0002-ddb-print-task-names-if-available.patch @@ -0,0 +1,48 @@ +From 3620701499791df6f2d1ebaa378a5a9ece21f99c Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Mon, 9 Jun 2014 15:15:58 +0200 +Subject: [PATCH 2/6] ddb: print task names if available + +* ddb/db_print.c (db_print_task): Print task name if available. +* i386/i386/db_interface.c (db_task_name): Likewise. +--- + ddb/db_print.c | 7 ++++++- + i386/i386/db_interface.c | 4 ++-- + 2 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/ddb/db_print.c b/ddb/db_print.c +index c015d84..1cbff64 100644 +--- a/ddb/db_print.c ++++ b/ddb/db_print.c +@@ -258,7 +258,12 @@ db_print_task( + } else { + if (flag & OPTION_TASK_TITLE) + db_printf(" TASK THREADS\n"); +- db_printf("%3d (%0*X): ", task_id, 2*sizeof(vm_offset_t), task); ++ if (task->name[0]) ++ db_printf("%3d %s (%0*X): ", task_id, task->name, ++ 2*sizeof(vm_offset_t), task); ++ else ++ db_printf("%3d (%0*X): ", task_id, ++ 2*sizeof(vm_offset_t), task); + if (task->thread_count == 0) { + db_printf("no threads\n"); + } else { +diff --git a/i386/i386/db_interface.c b/i386/i386/db_interface.c +index 1337685..b442b86 100644 +--- a/i386/i386/db_interface.c ++++ b/i386/i386/db_interface.c +@@ -730,8 +730,8 @@ db_task_name( + vm_offset_t vaddr, kaddr; + unsigned sp; + +- if (task->map->pmap == kernel_pmap) { +- db_printf(DB_GNUMACH_TASK_NAME); ++ if (task->name[0]) { ++ db_printf("%s", task->name); + return; + } + +-- +2.0.0 + diff --git a/debian/patches/0003-ddb-use-db_thread_stat-to-format-the-flags.patch b/debian/patches/0003-ddb-use-db_thread_stat-to-format-the-flags.patch new file mode 100644 index 0000000..6994508 --- /dev/null +++ b/debian/patches/0003-ddb-use-db_thread_stat-to-format-the-flags.patch @@ -0,0 +1,33 @@ +From d3336a8fca01cf88161731ebb504530a52a051f0 Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Mon, 9 Jun 2014 15:25:57 +0200 +Subject: [PATCH 3/6] ddb: use db_thread_stat to format the flags + +* ddb/db_print.c (db_print_thread): Use db_thread_stat to format the +flags. +--- + ddb/db_print.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +diff --git a/ddb/db_print.c b/ddb/db_print.c +index 1cbff64..e711ab6 100644 +--- a/ddb/db_print.c ++++ b/ddb/db_print.c +@@ -194,12 +194,8 @@ db_print_thread( + 2*sizeof(vm_offset_t), thread); + else + db_printf("(%0*X) ", 2*sizeof(vm_offset_t), thread); +- db_printf("%c%c%c%c%c", +- (thread->state & TH_RUN) ? 'R' : ' ', +- (thread->state & TH_WAIT) ? 'W' : ' ', +- (thread->state & TH_SUSP) ? 'S' : ' ', +- (thread->state & TH_UNINT)? 'N' : ' ', +- db_thread_fp_used(thread) ? 'F' : ' '); ++ char status[8]; ++ db_printf("%s", db_thread_stat(thread, status)); + if (thread->state & TH_SWAPPED) { + if (thread->swap_func) { + db_printf("("); +-- +2.0.0 + diff --git a/debian/patches/0004-i386-reformat-the-key-map.patch b/debian/patches/0004-i386-reformat-the-key-map.patch new file mode 100644 index 0000000..67aa093 --- /dev/null +++ b/debian/patches/0004-i386-reformat-the-key-map.patch @@ -0,0 +1,82 @@ +From c2761ece5d328d3d3bf0d774d6c8603f9f9deb79 Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Mon, 9 Jun 2014 17:40:18 +0200 +Subject: [PATCH 4/6] i386: reformat the key map + +* i386/i386at/kd.c (key_map): Remove superfluous newlines so that +every entry fits into one line. This way line numbers can be used as +an index into the map. +--- + i386/i386at/kd.c | 27 +++++++++------------------ + 1 file changed, 9 insertions(+), 18 deletions(-) + +diff --git a/i386/i386at/kd.c b/i386/i386at/kd.c +index 9f9faf4..5371fb2 100644 +--- a/i386/i386at/kd.c ++++ b/i386/i386at/kd.c +@@ -240,8 +240,7 @@ unsigned char key_map[NUMKEYS][WIDTH_KMAP] = { + {K_LBRKT,NC,NC, K_LBRACE,NC,NC, K_ESC,NC,NC, 0x1b,K_LBRKT,NC, 0x1b,0x4e,K_LBRACE}, + {K_RBRKT,NC,NC, K_RBRACE,NC,NC, K_GS,NC,NC, 0x1b,K_RBRKT,NC, 0x1b,0x4e,K_RBRACE}, + {K_CR,NC,NC, K_CR,NC,NC, K_CR,NC,NC, 0x1b,K_CR,NC, K_CR,NC,NC}, +-{K_SCAN,K_CTLSC,NC, K_SCAN,K_CTLSC,NC, K_SCAN,K_CTLSC,NC, K_SCAN,K_CTLSC,NC, +- K_SCAN,K_CTLSC,NC}, ++{K_SCAN,K_CTLSC,NC, K_SCAN,K_CTLSC,NC, K_SCAN,K_CTLSC,NC, K_SCAN,K_CTLSC,NC, K_SCAN,K_CTLSC,NC}, + {K_a,NC,NC, K_A,NC,NC, K_SOH,NC,NC, 0x1b,K_a,NC, 0x1b,0x4e,K_A}, + {K_s,NC,NC, K_S,NC,NC, K_DC3,NC,NC, 0x1b,K_s,NC, 0x1b,0x4e,K_S}, + {K_d,NC,NC, K_D,NC,NC, K_EOT,NC,NC, 0x1b,K_d,NC, 0x1b,0x4e,K_D}, +@@ -254,8 +253,7 @@ unsigned char key_map[NUMKEYS][WIDTH_KMAP] = { + {K_SEMI,NC,NC, K_COLON,NC,NC, K_SEMI,NC,NC, 0x1b,K_SEMI,NC, 0x1b,0x4e,K_COLON}, + {K_SQUOTE,NC,NC,K_DQUOTE,NC,NC, K_SQUOTE,NC,NC,0x1b,K_SQUOTE,NC, 0x1b,0x4e,K_DQUOTE}, + {K_GRAV,NC,NC, K_TILDE,NC,NC, K_RS,NC,NC, 0x1b,K_GRAV,NC, 0x1b,0x4e,K_TILDE}, +-{K_SCAN,K_LSHSC,NC, K_SCAN,K_LSHSC,NC, K_SCAN,K_LSHSC,NC, K_SCAN,K_LSHSC,NC, +- K_SCAN,K_LSHSC,NC}, ++{K_SCAN,K_LSHSC,NC, K_SCAN,K_LSHSC,NC, K_SCAN,K_LSHSC,NC, K_SCAN,K_LSHSC,NC, K_SCAN,K_LSHSC,NC}, + {K_BSLSH,NC,NC, K_PIPE,NC,NC, K_FS,NC,NC, 0x1b,K_BSLSH,NC, 0x1b,0x4e,K_PIPE}, + {K_z,NC,NC, K_Z,NC,NC, K_SUB,NC,NC, 0x1b,K_z,NC, 0x1b,0x4e,K_Z}, + {K_x,NC,NC, K_X,NC,NC, K_CAN,NC,NC, 0x1b,K_x,NC, 0x1b,0x4e,K_X}, +@@ -267,14 +265,11 @@ unsigned char key_map[NUMKEYS][WIDTH_KMAP] = { + {K_COMMA,NC,NC, K_LTHN,NC,NC, K_COMMA,NC,NC, 0x1b,K_COMMA,NC, 0x1b,0x4e,K_LTHN}, + {K_PERIOD,NC,NC,K_GTHN,NC,NC, K_PERIOD,NC,NC,0x1b,K_PERIOD,NC, 0x1b,0x4e,K_GTHN}, + {K_SLASH,NC,NC, K_QUES,NC,NC, K_SLASH,NC,NC, 0x1b,K_SLASH,NC, 0x1b,0x4e,K_QUES}, +-{K_SCAN,K_RSHSC,NC, K_SCAN,K_RSHSC,NC, K_SCAN,K_RSHSC,NC, K_SCAN,K_RSHSC,NC, +- K_SCAN,K_RSHSC,NC}, ++{K_SCAN,K_RSHSC,NC, K_SCAN,K_RSHSC,NC, K_SCAN,K_RSHSC,NC, K_SCAN,K_RSHSC,NC, K_SCAN,K_RSHSC,NC}, + {K_ASTER,NC,NC, K_ASTER,NC,NC, K_ASTER,NC,NC, 0x1b,K_ASTER,NC, 0x1b,0x4e,K_ASTER}, +-{K_SCAN,K_ALTSC,NC, K_SCAN,K_ALTSC,NC, K_SCAN,K_ALTSC,NC, K_SCAN,K_ALTSC,NC, +- K_SCAN,K_ALTSC,NC}, ++{K_SCAN,K_ALTSC,NC, K_SCAN,K_ALTSC,NC, K_SCAN,K_ALTSC,NC, K_SCAN,K_ALTSC,NC, K_SCAN,K_ALTSC,NC}, + {K_SPACE,NC,NC, K_SPACE,NC,NC, K_NUL,NC,NC, 0x1b,K_SPACE,NC, K_SPACE,NC,NC}, +-{K_SCAN,K_CLCKSC,NC, K_SCAN,K_CLCKSC,NC, K_SCAN,K_CLCKSC,NC, +- K_SCAN,K_CLCKSC,NC, K_SCAN,K_CLCKSC,NC}, ++{K_SCAN,K_CLCKSC,NC, K_SCAN,K_CLCKSC,NC, K_SCAN,K_CLCKSC,NC, K_SCAN,K_CLCKSC,NC, K_SCAN,K_CLCKSC,NC}, + {K_F1, K_F1S, K_F1, K_F1A, K_F1S}, + {K_F2, K_F2S, K_F2, K_F2A, K_F2S}, + {K_F3, K_F3S, K_F3, K_F3A, K_F3S}, +@@ -285,20 +280,16 @@ unsigned char key_map[NUMKEYS][WIDTH_KMAP] = { + {K_F8, K_F8S, K_F8, K_F8A, K_F8S}, + {K_F9, K_F9S, K_F9, K_F9A, K_F9S}, + {K_F10, K_F10S, K_F10, K_F10A, K_F10S}, +-{K_SCAN,K_NLCKSC,NC, K_SCAN,K_NLCKSC,NC, K_SCAN,K_NLCKSC,NC, +- K_SCAN,K_NLCKSC,NC, K_SCAN,K_NLCKSC,NC}, ++{K_SCAN,K_NLCKSC,NC, K_SCAN,K_NLCKSC,NC, K_SCAN,K_NLCKSC,NC, K_SCAN,K_NLCKSC,NC, K_SCAN,K_NLCKSC,NC}, + {K_SCRL, K_NUL,NC,NC, K_SCRL, K_SCRL, K_NUL,NC,NC}, + {K_HOME, K_SEVEN,NC,NC, K_HOME, K_HOME, 0x1b,0x4e,K_SEVEN}, + {K_UA, K_EIGHT,NC,NC, K_UA, K_UA, 0x1b,0x4e,K_EIGHT}, + {K_PUP, K_NINE,NC,NC, K_PUP, K_PUP, 0x1b,0x4e,K_NINE}, +-{0x1b,0x5b,0x53, K_MINUS,NC,NC, 0x1b,0x5b,0x53, 0x1b,0x5b,0x53, +- 0x1b,0x4e,0x2d}, ++{0x1b,0x5b,0x53, K_MINUS,NC,NC, 0x1b,0x5b,0x53, 0x1b,0x5b,0x53, 0x1b,0x4e,0x2d}, + {K_LA, K_FOUR,NC,NC, K_LA, K_LA, 0x1b,0x4e,K_FOUR}, +-{0x1b,0x5b,0x47, K_FIVE,NC,NC, 0x1b,0x5b,0x47, 0x1b,0x5b,0x47, +- 0x1b,0x4e,0x35}, ++{0x1b,0x5b,0x47, K_FIVE,NC,NC, 0x1b,0x5b,0x47, 0x1b,0x5b,0x47, 0x1b,0x4e,0x35}, + {K_RA, K_SIX,NC,NC, K_RA, K_RA, 0x1b,0x4e,K_SIX}, +-{0x1b,0x5b,0x54, K_PLUS,NC,NC, 0x1b,0x5b,0x54, 0x1b,0x5b,0x54, +- 0x1b,0x4e,0x2b}, ++{0x1b,0x5b,0x54, K_PLUS,NC,NC, 0x1b,0x5b,0x54, 0x1b,0x5b,0x54, 0x1b,0x4e,0x2b}, + {K_END, K_ONE,NC,NC, K_END, K_END, 0x1b,0x4e,K_ONE}, + {K_DA, K_TWO,NC,NC, K_DA, K_DA, 0x1b,0x4e,K_TWO}, + {K_PDN, K_THREE,NC,NC, K_PDN, K_PDN, 0x1b,0x4e,K_THREE}, +-- +2.0.0 + diff --git a/debian/patches/0005-i386-remap-some-keys.patch b/debian/patches/0005-i386-remap-some-keys.patch new file mode 100644 index 0000000..1e91129 --- /dev/null +++ b/debian/patches/0005-i386-remap-some-keys.patch @@ -0,0 +1,60 @@ +From e8839c0aacf6c389302d21a32c14a28c8beeac4f Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Mon, 9 Jun 2014 18:15:47 +0200 +Subject: [PATCH 5/6] i386: remap some keys + +As a convenience for the nice people using our debugger, remap some +keys to the readline-like shortcuts supported by dde. + +* i386/i386at/kd.c (kdcnmaygetc): Remap some keys. +--- + i386/i386at/kd.c | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +diff --git a/i386/i386at/kd.c b/i386/i386at/kd.c +index 5371fb2..7339767 100644 +--- a/i386/i386at/kd.c ++++ b/i386/i386at/kd.c +@@ -3029,6 +3029,39 @@ kdcnmaygetc(void) + #ifdef notdef + cnsetleds(state2leds(kd_state)); + #endif ++ } else if (! up ++ && c == K_ESC ++ && key_map[scancode][char_idx+1] == 0x5b) { ++ /* As a convenience for the nice ++ people using our debugger, remap ++ some keys to the readline-like ++ shortcuts supported by dde. ++ ++ XXX This is a workaround for the ++ limited kernel getchar interface. ++ It is only used by the debugger. */ ++ c = key_map[scancode][char_idx+2]; ++ switch (c) { ++#define _MAP(A,B,C) (C) ++#define MAP(T) _MAP(T) ++#define CTRL(c) ((c) & 0x1f) ++ case MAP(K_HOME): c = CTRL('a'); break; ++ case MAP(K_UA): c = CTRL('p'); break; ++ case MAP(K_LA): c = CTRL('b'); break; ++ case MAP(K_RA): c = CTRL('f'); break; ++ case MAP(K_DA): c = CTRL('n'); break; ++ case MAP(K_END): c = CTRL('e'); break; ++ /* delete */ ++ case 0x39: c = CTRL('d'); break; ++#undef CTRL ++#undef MAP ++#undef _MAP ++ default: ++ /* Retain the old behavior. */ ++ c = K_ESC; ++ } ++ ++ return(c); + } else if (!up) { + /* regular key-down */ + if (c == K_CR) +-- +2.0.0 + diff --git a/debian/patches/0006-doc-explain-the-floating-point-flag-in-kdb-output.patch b/debian/patches/0006-doc-explain-the-floating-point-flag-in-kdb-output.patch new file mode 100644 index 0000000..f2cfe1d --- /dev/null +++ b/debian/patches/0006-doc-explain-the-floating-point-flag-in-kdb-output.patch @@ -0,0 +1,30 @@ +From ce7a47ac13e16c8f0ce667c33a5946b5e2d95b23 Mon Sep 17 00:00:00 2001 +From: Justus Winter <4winter@informatik.uni-hamburg.de> +Date: Mon, 9 Jun 2014 18:33:30 +0200 +Subject: [PATCH 6/6] doc: explain the floating point flag in kdb output + +* doc/mach.texi (Kernel Debugger Commands): Explain the floating point +flag. +--- + doc/mach.texi | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/doc/mach.texi b/doc/mach.texi +index 49c0d67..2da670f 100644 +--- a/doc/mach.texi ++++ b/doc/mach.texi +@@ -7029,8 +7029,9 @@ session. If the execution is resumed again, the numbers may change. + The current thread can be distinguished from others by a @code{#} after + the thread id instead of @code{:}. Without @code{l} option, it only + shows thread id, thread structure address and the status for each +-thread. The status consists of 5 letters, R(run), W(wait), S(suspended), +-O(swapped out) and N(interruptible), and if corresponding ++thread. The status consists of 6 letters, R(run), W(wait), S(suspended), ++O(swapped out), N(interruptible), and F(loating) point arithmetic used (if ++supported by the platform). If the corresponding + status bit is off, @code{.} is printed instead. If @code{l} option is + specified, more detail information is printed for each thread. + +-- +2.0.0 + diff --git a/debian/patches/series b/debian/patches/series index 89260fd..db52cbc 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -8,3 +8,9 @@ protected_payload.patch Add-some-padding-to-make-objects-fit-a-single-cache-.patch #acpihalt.patch +0001-kern-set-the-name-of-the-kernel-task-to-gnumach.patch +0002-ddb-print-task-names-if-available.patch +0003-ddb-use-db_thread_stat-to-format-the-flags.patch +0004-i386-reformat-the-key-map.patch +0005-i386-remap-some-keys.patch +0006-doc-explain-the-floating-point-flag-in-kdb-output.patch -- cgit v1.2.3