Skip to content

Commit 4be145f

Browse files
committed
openocd: persistence added to most fields
- avoid NPE on kill() - use scheduleUpdateJob() consistently
1 parent 181d40e commit 4be145f

File tree

4 files changed

+545
-277
lines changed

4 files changed

+545
-277
lines changed

ilg.gnuarmeclipse.debug.gdbjtag.openocd/src/ilg/gnuarmeclipse/debug/gdbjtag/openocd/Backend.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -470,9 +470,14 @@ public void run() {
470470
void kill() {
471471
synchronized (fProcess) {
472472
if (!fMonitorExited) {
473-
System.out.println("ServerMonitorJob.kill() interrupt "
474-
+ getThread().toString());
475-
getThread().interrupt();
473+
Thread thread = getThread();
474+
if (thread != null) {
475+
System.out.println("ServerMonitorJob.kill() interrupt "
476+
+ thread.toString());
477+
getThread().interrupt();
478+
} else {
479+
System.out.println("null thread");
480+
}
476481
}
477482
}
478483
}
@@ -793,10 +798,15 @@ public void run() {
793798
void kill() {
794799
synchronized (fProcess) {
795800
if (!fMonitorExited) {
796-
System.out
797-
.println("SemihostingMonitorJob.kill() interrupt "
798-
+ getThread().toString());
799-
getThread().interrupt();
801+
Thread thread = getThread();
802+
if (thread != null) {
803+
System.out
804+
.println("SemihostingMonitorJob.kill() interrupt "
805+
+ thread.toString());
806+
thread.interrupt();
807+
} else {
808+
System.out.println("null thread");
809+
}
800810
}
801811
}
802812
}

ilg.gnuarmeclipse.debug.gdbjtag.openocd/src/ilg/gnuarmeclipse/debug/gdbjtag/openocd/SharedStorage.java

Lines changed: 166 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,52 @@
1515

1616
public class SharedStorage {
1717

18-
public static final String FLASH_DEVICE_NAME = Activator.PLUGIN_ID
19-
+ ".flashDeviceName";
20-
public static final String GDB_CLIENT_EXECUTABLE = Activator.PLUGIN_ID
21-
+ ".gdbClientExecutable";
22-
public static final String GDB_SERVER_EXECUTABLE = Activator.PLUGIN_ID
23-
+ ".gdbServerExecutable";
24-
25-
public static final String GDB_SERVER_CONNECTION = Activator.PLUGIN_ID
26-
+ ".gdbServerConnection";
27-
public static final String GDB_SERVER_CONNECTION_ADDRESS = Activator.PLUGIN_ID
28-
+ ".gdbServerConnectionAddress";
18+
// Tab Debugger
19+
// GDB Server Setup
20+
public static final String GDB_SERVER = Activator.PLUGIN_ID
21+
+ ".gdb.server.";
22+
23+
public static final String GDB_SERVER_DO_START = GDB_SERVER + "doStart";
24+
25+
public static final String GDB_SERVER_EXECUTABLE = GDB_SERVER
26+
+ "executable";
27+
28+
public static final String GDB_SERVER_OTHER_OPTIONS = GDB_SERVER + "other";
29+
30+
// GDB Client Setup
31+
public static final String GDB_CLIENT = Activator.PLUGIN_ID
32+
+ ".gdb.client.";
33+
34+
public static final String GDB_CLIENT_EXECUTABLE = GDB_CLIENT
35+
+ "executable";
36+
37+
public static final String GDB_CLIENT_OTHER_OPTIONS = GDB_CLIENT + "other";
38+
39+
public static final String GDB_CLIENT_COMMANDS = GDB_CLIENT + "commands";
40+
41+
// Tab Startup
42+
// Initialisation Commands
43+
public static final String GDB_OPENOCD = Activator.PLUGIN_ID
44+
+ ".gdb.openocd.";
45+
46+
public static final String GDB_OPENOCD_DO_INITIAL_RESET = GDB_OPENOCD
47+
+ "doInitialReset";
48+
public static final String GDB_OPENOCD_INITIAL_RESET_TYPE = GDB_OPENOCD
49+
+ "initialReset.type";
50+
public static final String GDB_OPENOCD_INIT_OTHER = GDB_OPENOCD
51+
+ "init.other";
52+
53+
public static final String GDB_OPENOCD_ENABLE_SEMIHOSTING = GDB_OPENOCD
54+
+ "enableSemihosting";
55+
56+
// Run Commands
57+
public static final String GDB_OPENOCD_DO_PRERUN_RESET = GDB_OPENOCD
58+
+ "doPreRunReset";
59+
public static final String GDB_OPENOCD_PRERUN_RESET_TYPE = GDB_OPENOCD
60+
+ "preRunReset.type";
61+
62+
public static final String GDB_OPENOCD_PRERUN_OTHER = GDB_OPENOCD
63+
+ "preRun.other";
2964

3065
// ----- getter & setter --------------------------------------------------
3166
private static String getValueForId(String id, String defaultValue) {
@@ -42,65 +77,157 @@ private static String getValueForId(String id, String defaultValue) {
4277
return value;
4378
}
4479

45-
private static void putValueForId(String id, String value){
80+
private static void putValueForId(String id, String value) {
4681

4782
SharedDefaults.getInstance().getSharedDefaultsMap()
48-
.put(id, value.trim());
83+
.put(id, value.trim());
4984
}
50-
51-
// ----- flash device id --------------------------------------------------
52-
public static String getFlashDeviceName(String defaultValue) {
5385

54-
return getValueForId(FLASH_DEVICE_NAME, defaultValue);
86+
// ----- gdb server doStart -----------------------------------------------
87+
public static boolean getGdbServerDoStart(boolean defaultValue) {
88+
89+
return Boolean.valueOf(getValueForId(GDB_SERVER_DO_START,
90+
Boolean.toString(defaultValue)));
5591
}
5692

57-
public static void putFlashDeviceName(String value) {
93+
public static void putGdbServerDoStart(boolean value) {
94+
95+
putValueForId(GDB_SERVER_DO_START, Boolean.toString(value));
96+
}
5897

59-
putValueForId(FLASH_DEVICE_NAME, value);
98+
// ----- gdb server executable --------------------------------------------
99+
public static String getGdbServerExecutable(String defaultValue) {
100+
101+
return getValueForId(GDB_SERVER_EXECUTABLE, defaultValue);
102+
}
103+
104+
public static void putGdbServerExecutable(String value) {
105+
106+
putValueForId(GDB_SERVER_EXECUTABLE, value);
107+
}
108+
109+
// ----- gdb server other options -----------------------------------------
110+
public static String getGdbServerOtherOptions(String defaultValue) {
111+
112+
return getValueForId(GDB_SERVER_OTHER_OPTIONS, defaultValue);
113+
}
114+
115+
public static void putGdbServerOtherOptions(String value) {
116+
117+
putValueForId(GDB_SERVER_OTHER_OPTIONS, value);
60118
}
61119

62120
// ----- gdb client executable --------------------------------------------
63121
public static String getGdbClientExecutable(String defaultValue) {
64122

65123
return getValueForId(GDB_CLIENT_EXECUTABLE, defaultValue);
66124
}
67-
68-
public static void putGdbClientExecutable(String value){
125+
126+
public static void putGdbClientExecutable(String value) {
69127

70128
putValueForId(GDB_CLIENT_EXECUTABLE, value);
71129
}
72130

73-
// ----- gdb server executable --------------------------------------------
74-
public static String getGdbServerExecutable(String defaultValue) {
131+
// ----- gdb client other options -----------------------------------------
132+
public static String getGdbClientOtherOptions(String defaultValue) {
75133

76-
return getValueForId(GDB_SERVER_EXECUTABLE, defaultValue);
134+
return getValueForId(GDB_CLIENT_OTHER_OPTIONS, defaultValue);
77135
}
78-
79-
public static void putGdbServerExecutable(String value){
80136

81-
putValueForId(GDB_SERVER_EXECUTABLE, value);
137+
public static void putGdbClientOtherOptions(String value) {
138+
139+
putValueForId(GDB_CLIENT_OTHER_OPTIONS, value);
82140
}
83141

84-
// ----- gdb server connection --------------------------------------------
85-
public static String getGdbServerConnection(String defaultValue) {
142+
// ----- gdb client commands ----------------------------------------------
143+
public static String getGdbClientCommands(String defaultValue) {
86144

87-
return getValueForId(GDB_SERVER_CONNECTION, defaultValue);
145+
return getValueForId(GDB_CLIENT_COMMANDS, defaultValue);
88146
}
89-
90-
public static void putGdbServerConnection(String value){
91147

92-
putValueForId(GDB_SERVER_CONNECTION, value);
148+
public static void putGdbClientCommands(String value) {
149+
150+
putValueForId(GDB_CLIENT_COMMANDS, value);
93151
}
94152

95-
// ----- gdb server connection address ------------------------------------
96-
public static String getGdbServerConnectionAddress(String defaultValue) {
153+
// ----- OpenOCD do initial reset -----------------------------------------
154+
public static boolean getOpenOCDDoInitialReset(boolean defaultValue) {
97155

98-
return getValueForId(GDB_SERVER_CONNECTION_ADDRESS, defaultValue);
156+
return Boolean.valueOf(getValueForId(GDB_OPENOCD_DO_INITIAL_RESET,
157+
Boolean.toString(defaultValue)));
99158
}
100-
101-
public static void putGdbServerConnectionAddress(String value){
102159

103-
putValueForId(GDB_SERVER_CONNECTION_ADDRESS, value);
160+
public static void putOpenOCDDoInitialReset(boolean value) {
161+
162+
putValueForId(GDB_OPENOCD_DO_INITIAL_RESET, Boolean.toString(value));
163+
}
164+
165+
// ----- OpenOCD initial reset type ---------------------------------------
166+
public static String getOpenOCDInitialResetType(String defaultValue) {
167+
168+
return getValueForId(GDB_OPENOCD_INITIAL_RESET_TYPE, defaultValue);
169+
}
170+
171+
public static void putOpenOCDInitialResetType(String value) {
172+
173+
putValueForId(GDB_OPENOCD_INITIAL_RESET_TYPE, value);
174+
}
175+
176+
// ----- OpenOCD enable semihosting ---------------------------------------
177+
public static boolean getOpenOCDEnableSemihosting(boolean defaultValue) {
178+
179+
return Boolean.valueOf(getValueForId(GDB_OPENOCD_ENABLE_SEMIHOSTING,
180+
Boolean.toString(defaultValue)));
181+
}
182+
183+
public static void putOpenOCDEnableSemihosting(boolean value) {
184+
185+
putValueForId(GDB_OPENOCD_ENABLE_SEMIHOSTING, Boolean.toString(value));
186+
}
187+
188+
// ----- OpenOCD init other -----------------------------------------------
189+
public static String getOpenOCDInitOther(String defaultValue) {
190+
191+
return getValueForId(GDB_OPENOCD_INIT_OTHER, defaultValue);
192+
}
193+
194+
public static void putOpenOCDInitOther(String value) {
195+
196+
putValueForId(GDB_OPENOCD_INIT_OTHER, value);
197+
}
198+
199+
// ----- OpenOCD do prerun reset ------------------------------------------
200+
public static boolean getOpenOCDDoPreRunReset(boolean defaultValue) {
201+
202+
return Boolean.valueOf(getValueForId(GDB_OPENOCD_DO_PRERUN_RESET,
203+
Boolean.toString(defaultValue)));
204+
}
205+
206+
public static void putOpenOCDDoPreRunReset(boolean value) {
207+
208+
putValueForId(GDB_OPENOCD_DO_PRERUN_RESET, Boolean.toString(value));
209+
}
210+
211+
// ----- OpenOCD prerun reset type ----------------------------------------
212+
public static String getOpenOCDPreRunResetType(String defaultValue) {
213+
214+
return getValueForId(GDB_OPENOCD_PRERUN_RESET_TYPE, defaultValue);
215+
}
216+
217+
public static void putOpenOCDPreRunResetType(String value) {
218+
219+
putValueForId(GDB_OPENOCD_PRERUN_RESET_TYPE, value);
220+
}
221+
222+
// ----- OpenOCD init other -----------------------------------------
223+
public static String getOpenOCDPreRunOther(String defaultValue) {
224+
225+
return getValueForId(GDB_OPENOCD_PRERUN_OTHER, defaultValue);
226+
}
227+
228+
public static void putOpenOCDPreRunOther(String value) {
229+
230+
putValueForId(GDB_OPENOCD_PRERUN_OTHER, value);
104231
}
105232

106233
// ----- update -----------------------------------------------------------

0 commit comments

Comments
 (0)