Expand choices for exitall
[fio.git] / libfio.c
index 674bc1dc0a9ed37216bf86ae25acef05e33dd4f4..7348b16491ff266cadb7ba46d75e503984ccbc95 100644 (file)
--- a/libfio.c
+++ b/libfio.c
@@ -233,7 +233,7 @@ void fio_mark_td_terminate(struct thread_data *td)
        td->terminate = true;
 }
 
-void fio_terminate_threads(unsigned int group_id)
+void fio_terminate_threads(unsigned int group_id, unsigned int terminate)
 {
        struct thread_data *td;
        pid_t pid = getpid();
@@ -242,7 +242,10 @@ void fio_terminate_threads(unsigned int group_id)
        dprint(FD_PROCESS, "terminate group_id=%d\n", group_id);
 
        for_each_td(td, i) {
-               if (group_id == TERMINATE_ALL || group_id == td->groupid) {
+               if ((terminate == TERMINATE_GROUP && group_id == TERMINATE_ALL) ||
+                   (terminate == TERMINATE_GROUP && group_id == td->groupid) ||
+                   (terminate == TERMINATE_STONEWALL && td->runstate >= TD_RUNNING) ||
+                   (terminate == TERMINATE_ALL)) {
                        dprint(FD_PROCESS, "setting terminate on %s/%d\n",
                                                td->o.name, (int) td->pid);