From: Bian Naimeng <biannm@cn.fujitsu.com>
To: yanegomi@gmail.com
Cc: ltp-list@lists.sourceforge.net
Subject: [LTP] [POSIX][PATCH]A awaited IO request completion signal can case lio_listio return EINTR.
Date: Fri, 29 Oct 2010 09:11:26 +0800 [thread overview]
Message-ID: <4CCA1F3E.5000202@cn.fujitsu.com> (raw)
Open posix documents point lio_listio may return EINTR caused by a awaited I/O requst
completion signal.
[EINTR]
A signal was delivered while waiting for all I/O requests to complete during an
LIO_WAIT operation. Note that, since each I/O operation invoked by lio_listio()
may possibly provoke a signal when it completes, this error return may be caused
by the completion of one (or more) of the very I/O operations being awaited.
Outstanding I/O requests are not canceled, and the application shall examine each
list element to determine whether the request was initiated, canceled, or completed.
So it's unnecessary to setup handler for IO operation completion, we just need check
the aio_error and aio_return for each request, it has same effect on checking
received_selected.
Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
---
.../conformance/interfaces/lio_listio/1-1.c | 35 ++------------------
1 files changed, 3 insertions(+), 32 deletions(-)
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/lio_listio/1-1.c b/testcases/open_posix_testsuite/conformance/interfaces/lio_listio/1-1.c
index f19fcd3..5e4d16a 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/lio_listio/1-1.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/lio_listio/1-1.c
@@ -38,18 +38,11 @@
#define NUM_AIOCBS 10
#define BUF_SIZE 1024*1024
-int received_selected = 0;
int received_all = 0;
void
sigrt1_handler(int signum, siginfo_t *info, void *context)
{
- received_selected = info->si_value.sival_int;
-}
-
-void
-sigrt2_handler(int signum, siginfo_t *info, void *context)
-{
received_all = 1;
}
@@ -105,30 +98,19 @@ int main()
aiocbs[i]->aio_buf = &bufs[i*BUF_SIZE];
aiocbs[i]->aio_nbytes = BUF_SIZE;
aiocbs[i]->aio_lio_opcode = LIO_WRITE;
-
- /* Use SIRTMIN+1 for individual completions */
- aiocbs[i]->aio_sigevent.sigev_notify = SIGEV_SIGNAL;
- aiocbs[i]->aio_sigevent.sigev_signo = SIGRTMIN+1;
- aiocbs[i]->aio_sigevent.sigev_value.sival_int = i;
}
- /* Use SIGRTMIN+2 for list completion */
+ /* Use SIGRTMIN+1 for list completion */
event.sigev_notify = SIGEV_SIGNAL;
- event.sigev_signo = SIGRTMIN+2;
+ event.sigev_signo = SIGRTMIN+1;
event.sigev_value.sival_ptr = NULL;
- /* Setup handler for individual operation completion */
+ /* Setup handler for list completion */
action.sa_sigaction = sigrt1_handler;
sigemptyset(&action.sa_mask);
action.sa_flags = SA_SIGINFO|SA_RESTART;
sigaction(SIGRTMIN+1, &action, NULL);
- /* Setup handler for list completion */
- action.sa_sigaction = sigrt2_handler;
- sigemptyset(&action.sa_mask);
- action.sa_flags = SA_SIGINFO|SA_RESTART;
- sigaction(SIGRTMIN+2, &action, NULL);
-
/* Submit request list */
ret = lio_listio(LIO_WAIT, aiocbs, NUM_AIOCBS, &event);
@@ -142,17 +124,6 @@ int main()
exit (PTS_FAIL);
}
- if (received_selected != NUM_AIOCBS-1)
- {
- printf(TNAME " lio_listio() did not wait\n");
- for (i=0; i<NUM_AIOCBS; i++)
- free (aiocbs[i]);
- free (bufs);
- free (aiocbs);
- close (fd);
- exit (PTS_FAIL);
- }
-
if (received_all != 0)
{
printf(TNAME " lio_listio() did not ignore the sig argument\n");
--
1.7.0.4
--
Regards
Bian Naimeng
------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
next reply other threads:[~2010-10-29 1:12 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-29 1:11 Bian Naimeng [this message]
2010-11-08 7:11 ` [LTP] [POSIX][PATCH]A awaited IO request completion signal can case lio_listio return EINTR Bian Naimeng
2010-11-08 21:49 ` Garrett Cooper
2010-12-26 13:34 ` Cyril Hrubis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CCA1F3E.5000202@cn.fujitsu.com \
--to=biannm@cn.fujitsu.com \
--cc=ltp-list@lists.sourceforge.net \
--cc=yanegomi@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox