This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/25829] [F03] Asynchronous IO support
- From: "koenigni at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 08 Apr 2018 14:04:35 +0000
- Subject: [Bug fortran/25829] [F03] Asynchronous IO support
- Auto-submitted: auto-generated
- References: <bug-25829-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25829
Nicolas Koenig <koenigni at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #42494|0 |1
is obsolete| |
--- Comment #34 from Nicolas Koenig <koenigni at gcc dot gnu.org> ---
Created attachment 43877
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43877&action=edit
Proof of concept for transfer of a single integer
Here is a proof of concept patch which transfers a single integer:
$ cat foo.f90
program main
integer :: i
i = 42
open(10,asynchronous="yes")
write (10, *, asynchronous="yes") i
close (10)
end program main
$ gfortran foo.f90 -lpthread
$ ./a.out
M: LOCK: lock prev: unlocked change_pdt():336
M: ACQ: lock
M: UNLOCK: lock change_pdt():345
M: SIGNAL: &au->work change_pdt():346
T: LOCK: lock prev: unlocked async_io():164
T: ACQ: lock
T: UNLOCK: lock async_io():166
T: WAITING: &au->work async_io():169
M: LOCK: lock prev: unlocked
enqueue_transfer():278
M: ACQ: lock
M: UNLOCK: lock
enqueue_transfer():287
M: SIGNAL: &au->work
enqueue_transfer():288
T: LOCK: lock prev: unlocked async_io():170
T: ACQ: lock
T: UNLOCK: lock async_io():175
T: NOTE: Changing pdts update_pdt():134
T: LOCK: lock prev: unlocked async_io():200
T: ACQ: lock
T: UNLOCK: lock async_io():175
T: NOTE: Starting transfer async_io():189
M: LOCK: lock prev: unlocked enqueue_done():297
M: ACQ: lock
M: UNLOCK: lock enqueue_done():306
M: SIGNAL: &au->work enqueue_done():307
T: LOCK: lock prev: locked async_io():200
T: ACQ: lock
T: UNLOCK: lock async_io():175
T: NOTE: Finalizing write async_io():182
T: LOCK: lock prev: unlocked async_io():200
T: ACQ: lock
T: SIGNAL: &au->emptysignal async_io():215
T: UNLOCK: lock async_io():219
T: WAITING: &au->work async_io():169
T: LOCK: lock prev: unlocked async_io():170
T: ACQ: lock
T: SIGNAL: &au->emptysignal async_io():215
T: UNLOCK: lock async_io():219
T: WAITING: &au->work async_io():169
M: LOCK: lock prev: locked async_close():388
M: ACQ: lock
M: UNLOCK: lock async_close():390
M: SIGNAL: &(au->work) async_wait():375
M: LOCK: lock prev: unlocked async_wait():376
M: ACQ: lock
M: UNLOCK: lock async_wait():378
T: REC: &au->work async_io():169
T: LOCK: lock prev: unlocked async_io():170
T: ACQ: lock
T: SIGNAL: &au->emptysignal async_io():215
T: UNLOCK: lock async_io():221
$ cat fort.10
42