/* * Copyright 2013, Michael Ellerman, IBM Corp. * Licensed under GPLv2. */ #include #include #include #include #include #include #include #include #include #include #include #include #include "subunit.h" #include "utils.h" #define KILL_TIMEOUT 5 static uint64_t timeout = 120; int run_test(int (test_function)(void), char *name) { bool terminated; int rc, status; pid_t pid; /* Make sure output is flushed before forking */ fflush(stdout); pid = fork(); if (pid == 0) { setpgid(0, 0); exit(test_function()); } else if (pid == -1) { perror("fork"); return 1; } setpgid(pid, pid); /* Wake us up in timeout seconds */ alarm(timeout); terminated = false; wait: rc = waitpid(pid, &status, 0); if (rc == -1) { if (errno != EINTR) { printf("unknown error from waitpid\n"); return 1; } if (terminated) { printf("!! force killing %s\n", name); kill(-pid, SIGKILL); return 1; } else { printf("!! killing %s\n", name); kill(-pid, SIGTERM); terminated = true; alarm(KILL_TIMEOUT); goto wait; } } /* Kill anything else in the process group that is still running */ kill(-pid, SIGTERM); if (WIFEXITED(status)) status = WEXITSTATUS(status); else { if (WIFSIGNALED(status)) printf("!! child died by signal %d\n", WTERMSIG(status)); else printf("!! child died by unknown cause\n"); status = 1; /* Signal or other */ } return status; } static void alarm_handler(int signum) { /* Jut wake us up from waitpid */ } static struct sigaction alarm_action = { .sa_handler = alarm_handler, }; void test_harness_set_timeout(uint64_t time) { timeout = time; } int test_harness(int (test_function)(void), char *name) { int rc; test_start(name); test_set_git_version(GIT_VERSION); if (sigaction(SIGALRM, &alarm_action, NULL)) { perror("sigaction"); test_error(name); return 1; } rc = run_test(test_function, name); if (rc == MAGIC_SKIP_RETURN_VALUE) test_skip(name); else test_finish(name, rc); return rc; }
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2017-01-18 21:31:31 +0100
committerJohan Hovold <johan@kernel.org>2017-01-19 09:08:37 +0100
commit24d615a694d649aa2e167c3f97f62bdad07e3f84 (patch)
tree2fe33c115bdec6bf4b01e27afd90bb16fa668e22 /net/ipv6/xfrm6_output.c
parent49def1853334396f948dcb4cedb9347abb318df5 (diff)
USB: serial: qcserial: add Dell DW5570 QDL
The Dell DW5570 is a re-branded Sierra Wireless MC8805 which will by default boot with vid 0x413c and pid 0x81a3. When triggered QDL download mode, the device switches to pid 0x81a6 and provides the standard TTY used for firmware upgrade. Cc: <stable@vger.kernel.org> Signed-off-by: Aleksander Morgado <aleksander@aleksander.es> Signed-off-by: Johan Hovold <johan@kernel.org>
Diffstat (limited to 'net/ipv6/xfrm6_output.c')