Skip to content

Commit

Permalink
Merge pull request #1021 from slyshykO/develop
Browse files Browse the repository at this point in the history
Use SetConsoleCtrlHandler for Windows
  • Loading branch information
Nightwalker-87 committed Aug 29, 2020
2 parents 430d74e + 5ea485d commit 5c03678
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ build-mingw
.project
obj-*
*.user*
.cmake/
21 changes: 18 additions & 3 deletions src/st-util/gdb-server.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,19 +71,30 @@ int serve(stlink_t *sl, st_state_t *st);
char* make_memory_map(stlink_t *sl);
static void init_cache(stlink_t *sl);

static void cleanup(int signum) {
(void)signum;

static void _cleanup() {
if (connected_stlink) {
// Switch back to mass storage mode before closing
stlink_run(connected_stlink);
stlink_exit_debug_mode(connected_stlink);
stlink_close(connected_stlink);
}
}

static void cleanup(int signum) {
printf("Receive signal %i. Exiting...\n", signum);
_cleanup();
exit(1);
(void)signum;
}

#if defined(_WIN32)
BOOL WINAPI CtrlHandler(DWORD fdwCtrlType) {
printf("Receive signal %i. Exiting...\r\n", (int)fdwCtrlType);
_cleanup();
return FALSE;
}
#endif


static stlink_t* do_connect(st_state_t *st) {
stlink_t *sl = NULL;
Expand Down Expand Up @@ -234,9 +245,13 @@ int main(int argc, char** argv) {
}

connected_stlink = sl;
#if defined(_WIN32)
SetConsoleCtrlHandler((PHANDLER_ROUTINE) CtrlHandler, TRUE);
#else
signal(SIGINT, &cleanup);
signal(SIGTERM, &cleanup);
signal(SIGSEGV, &cleanup);
#endif

if (state.reset) { stlink_reset(sl); }

Expand Down

0 comments on commit 5c03678

Please sign in to comment.