A awaited IO request completion signal can case lio_listio return EINTR.
PATCH 1/1 A awaited IO request completion signal can case lio_listio return EINTR.
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.
--- .../conformance/interfaces/lio_listio/1-1.c | 35 ++------------------ 1 files changed, 3 insertions(+), 32 deletions(-)
testcases/open_posix_testsuite/conformance/interfaces/lio_listio/1-1.c +3 -32
@@ -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" );
Signature · 19 lines
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 [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
Quoted 11 lines · Bian Naimeng
Open posix documents point
lio_listiomay 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 anLIO_WAIToperation. Note that, since each I/O operation invoked bylio_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.
Quoted 6 lines
So it's unnecessary to setup handler for IO operation completion, we just need check the
aio_errorandaio_returnfor each request, it has same effect on checkingreceived_selected.Signed-off-by Bian Naimeng <[email protected]>
Hi Garrett,
Would you like to pick up this patch? Any reply is helpful to me, so please let me
know what's your opinion if you are free. ^_^
Best Regards
Bian
Quoted 79 lines
--- .../conformance/interfaces/lio_listio/1-1.c | 35 ++------------------ 1 files changed, 3 insertions(+), 32 deletions(-)testcases/open_posix_testsuite/conformance/interfaces/lio_listio/1-1.c +3
-32@@ -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" );
Signature · 14 lines
Regards Bian Naimeng ------------------------------------------------------------------------------ The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now! http://p.sf.net/sfu/SAP-dev2dev _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
Quoted 16 lines · Bian Naimeng
Quoted 15 lines · Bian Naimeng
Open posix documents point
lio_listiomay 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 anLIO_WAIToperation. Note that, since each I/O operation invoked bylio_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_errorandaio_returnfor each request, it has same effect on checkingreceived_selected.
Quoted 7 lines
Quoted 2 lines
Signed-off-by Bian Naimeng <[email protected]>Hi Garrett,
Would you like to pick up this patch? Any reply is helpful to me, so please let me know what's your opinion if you are free. ^_^
I have some potential concerns with the above patch. Let me fully digest it and I'll get back to you.
------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper David G. Thomson, author of the best-selling book "Blueprint to a Billion" shares his insights and actions to help propel your business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Hi!
Quoted 18 lines
Quoted 18 lines
Quoted 17 lines
Open posix documents point
lio_listiomay 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 anLIO_WAIToperation. Note that, since each I/O operation invoked bylio_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_errorandaio_returnfor each request, it has same effect on checkingreceived_selected.Signed-off-by Bian Naimeng <[email protected]>
Quoted 8 lines
Quoted 4 lines
Hi Garrett,
Would you like to pick up this patch? Any reply is helpful to me, so please let me know what's your opinion if you are free. ^_^
I have some potential concerns with the above patch. Let me fully digest it and I'll get back to you.
Ping. The patch seems to be reasonable.
Signature · 13 lines
Cyril Hrubis [email protected] ------------------------------------------------------------------------------ Learn how Oracle Real Application Clusters (RAC) One Node allows customers to consolidate database storage, standardize their database environment, and, should the need arise, upgrade to a full multi-node Oracle RAC database without downtime or disruption http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list