[PATCH] Use vectored writes when reporting errors and warnings.
Jerry DeLisle
jvdelisle@charter.net
Fri Sep 21 16:37:00 GMT 2018
Janne, this looks OK. Since you are touching on configuration and posix
dependencies have you tested under any other systems?
Jerry
On 9/21/18 1:41 AM, Janne Blomqvist wrote:
> PING
>
> On Wed, Sep 12, 2018 at 10:17 PM Janne Blomqvist <blomqvist.janne@gmail.com>
> wrote:
>
>> When producing error and warning messages, libgfortran writes a
>> message by using many system calls. By using vectored writes (the
>> POSIX writev function) when available and feasible to use without
>> major surgery, we reduce the chance that output gets intermingled with
>> other output to stderr.
>>
>> In practice, this is done by introducing a new function estr_writev in
>> addition to the existing estr_write. In order to use this, the old
>> st_vprintf is removed, replaced by direct calls of vsnprintf, allowing
>> more message batching.
>>
>> Regtested on x86_64-pc-linux-gnu, Ok for trunk?
>>
>> libgfortran/ChangeLog:
>>
>> 2018-09-12 Janne Blomqvist <jb@gcc.gnu.org>
>>
>> * config.h.in: Regenerated.
>> * configure: Regenerated.
>> * configure.ac: Check for writev and sys/uio.h.
>> * libgfortran.h: Include sys/uio.h.
>> (st_vprintf): Remove prototype.
>> (struct iovec): Define if not available.
>> (estr_writev): New prototype.
>> * runtime/backtrace.c (error_callback): Use estr_writev.
>> * runtime/error.c (ST_VPRINTF_SIZE): Remove.
>> (estr_writev): New function.
>> (st_vprintf): Remove.
>> (gf_vsnprintf): New function.
>> (ST_ERRBUF_SIZE): New macro.
>> (st_printf): Use vsnprintf.
>> (os_error): Use estr_writev.
>> (runtime_error): Use vsnprintf and estr_writev.
>> (runtime_error_at): Likewise.
>> (runtime_warning_at): Likewise.
>> (internal_error): Use estr_writev.
>> (generate_error_common): Likewise.
>> (generate_warning): Likewise.
>> (notify_std): Likewise.
>> * runtime/pause.c (pause_string): Likewise.
>> * runtime/stop.c (report_exception): Likewise.
>> (stop_string): Likewise.
>> (error_stop_string): Likewise.
--- snip ---
More information about the Fortran
mailing list