X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Ftests%2Ftest-thread.c;h=30e27a2e455aef6da86a115c51c3e48e45c7c433;hb=a88ecb472d5a82c80b0ccf8f0ef1594ec0d6c878;hp=2f0e1853d482986bcfc26e7e57622c1ccfc7cb98;hpb=48827b7b9862ab5961f938f38a8667e15421a50c;p=src%2Fapp-framework-binder.git diff --git a/src/tests/test-thread.c b/src/tests/test-thread.c index 2f0e1853..30e27a2e 100644 --- a/src/tests/test-thread.c +++ b/src/tests/test-thread.c @@ -24,7 +24,7 @@ void unref(void *closure) { struct foo *foo = closure; if(!--foo->refcount) { - printf("%06d FREE\n", foo->value); + /* printf("%06d FREE\n", foo->value); */ free(foo); } } @@ -32,7 +32,7 @@ void unref(void *closure) void fail(void *closure, const char *status, const char *info) { struct foo *foo = closure; - printf("%06d ERROR %s\n", foo->value, status); + printf("%06d ABORT T%d %s\n", foo->value, (int)syscall(SYS_gettid), status); } struct afb_req_itf itf = { @@ -70,6 +70,17 @@ void process(struct afb_req req) // nanosleep(&ts, NULL); } +void terminate(int signum) +{ + printf("---------------- TERMINATE T%d (%d)\n", (int)syscall(SYS_gettid), signum); +#if 1 + jobs_terminate(); +#else + jobs_invoke0(0, jobs_terminate); +#endif + exit(0); +} + int main() { int i; @@ -85,14 +96,17 @@ int main() foo->refcount = 1; afb_thread_req_call(req, process, 5, (&ts) + (i % 7)); unref(foo); + if (i == 5000) +#if 0 + jobs_invoke0(0, terminate); +#else + jobs_queue0(NULL, 0, terminate); +#endif ts.tv_sec = 0; ts.tv_nsec = 1000000; // nanosleep(&ts, NULL); } - ts.tv_sec = 1; - ts.tv_nsec = 0; - nanosleep(&ts, NULL); - jobs_terminate(); + return -jobs_add_me(); }