Module: xenomai-forge Branch: master Commit: b274390580d24181c7d592041a2c3a1306040712 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=b274390580d24181c7d592041a2c3a1306040712
Author: Philippe Gerum <r...@xenomai.org> Date: Sun Dec 18 22:30:01 2011 +0100 alchemy/testsuite: buffer: test deletion during I/O operations --- lib/alchemy/testsuite/buffer-1.c | 15 ++++++++------- 1 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/alchemy/testsuite/buffer-1.c b/lib/alchemy/testsuite/buffer-1.c index f0997bd..36411c2 100644 --- a/lib/alchemy/testsuite/buffer-1.c +++ b/lib/alchemy/testsuite/buffer-1.c @@ -28,6 +28,9 @@ static void foreground_task(void *arg) memset(buf,0, sizeof(buf)); ret = rt_buffer_read(&buffer, buf, 2, TM_INFINITE); switch (ret) { + case -EINVAL: + case -EIDRM: /* Fine, deleted. */ + goto out; case 1: traceobj_assert(&trobj, buf[0] == ((n / 2) % 26) + 'A'); break; @@ -39,7 +42,7 @@ static void foreground_task(void *arg) } n++; } - +out: traceobj_exit(&trobj); } @@ -53,12 +56,16 @@ static void background_task(void *arg) for (;;) { ret = rt_buffer_write(&buffer, &c, 1, TM_INFINITE); + if (ret == -EINVAL || ret == -EIDRM) + break; traceobj_assert(&trobj, ret == 1); c++; if (c > 'Z') c = 'A'; sprintf(s, "%.2d", 11 * n); ret = rt_buffer_write(&buffer, s, 2, TM_INFINITE); + if (ret == -EINVAL || ret == -EIDRM) + break; traceobj_assert(&trobj, ret == 2); n = (n + 1) % 10; } @@ -95,12 +102,6 @@ int main(int argc, char *const argv[]) ret = rt_task_sleep(1500000000ULL); traceobj_assert(&trobj, ret == 0); - ret = rt_task_delete(&t_bgnd); - traceobj_assert(&trobj, ret == 0); - - ret = rt_task_delete(&t_fgnd); - traceobj_assert(&trobj, ret == 0); - ret = rt_buffer_delete(&buffer); traceobj_assert(&trobj, ret == 0); _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git