X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftest%2Fexternal-agent.c;h=055b5de736f6f04334fd990dc2409d1630650ff6;hp=081b8500a0fb206ab2ec239e94d9bb333f399516;hb=8bc38cb177928ef739440c32e33a8eaf23a5dd22;hpb=0468e6992770e5082f2fb11cd93c2d8209e3f351 diff --git a/ccan/tdb2/test/external-agent.c b/ccan/tdb2/test/external-agent.c index 081b8500..055b5de7 100644 --- a/ccan/tdb2/test/external-agent.c +++ b/ccan/tdb2/test/external-agent.c @@ -124,6 +124,10 @@ static enum agent_return do_operation(enum operation op, const char *name) ret = tdb_close(tdb) == 0 ? SUCCESS : OTHER_FAILURE; tdb = NULL; break; + case SEND_SIGNAL: + /* We do this async */ + ret = SUCCESS; + break; default: ret = OTHER_FAILURE; } @@ -175,6 +179,13 @@ struct agent *prepare_external_agent(void) if (write(response[1], &result, sizeof(result)) != sizeof(result)) err(1, "Writing response"); + if (name[0] == SEND_SIGNAL) { + struct timeval ten_ms; + ten_ms.tv_sec = 0; + ten_ms.tv_usec = 10000; + select(0, NULL, NULL, NULL, &ten_ms); + kill(getppid(), SIGUSR1); + } } exit(0); } @@ -225,6 +236,7 @@ const char *operation_name(enum operation op) case TRANSACTION_START: return "TRANSACTION_START"; case TRANSACTION_COMMIT: return "TRANSACTION_COMMIT"; case NEEDS_RECOVERY: return "NEEDS_RECOVERY"; + case SEND_SIGNAL: return "SEND_SIGNAL"; case CLOSE: return "CLOSE"; } return "**INVALID**";