+2018-12-13 Tom de Vries <tdevries@suse.de>
+
+ * affinity-fmt.c (gomp_print_string): New function, factored out of ...
+ (omp_display_affinity, gomp_display_affinity_thread): ... here, and ...
+ * fortran.c (omp_display_affinity_): ... here.
+ * libgomp.h (gomp_print_string): Declare.
+ * config/nvptx/affinity-fmt.c: New file. Include affinity-fmt.c,
+ undefining HAVE_GETPID and HAVE_GETHOSTNAME, and mapping fwrite to
+ write.
+
2018-12-13 Jakub Jelinek <jakub@redhat.com>
PR libgomp/88460
#include <sys/utsname.h>
#endif
+void
+gomp_print_string (const char *str, size_t len)
+{
+ fwrite (str, 1, len, stderr);
+}
+
void
gomp_set_affinity_format (const char *format, size_t len)
{
if (ret < sizeof buf)
{
buf[ret] = '\n';
- fwrite (buf, 1, ret + 1, stderr);
+ gomp_print_string (buf, ret + 1);
return;
}
b = gomp_malloc (ret + 1);
ialias_call (omp_capture_affinity) (b, ret + 1, format);
b[ret] = '\n';
- fwrite (b, 1, ret + 1, stderr);
+ gomp_print_string (b, ret + 1);
free (b);
}
if (ret < sizeof buf)
{
buf[ret] = '\n';
- fwrite (buf, 1, ret + 1, stderr);
+ gomp_print_string (buf, ret + 1);
return;
}
b = gomp_malloc (ret + 1);
gomp_display_affinity (b, ret + 1, gomp_affinity_format_var,
handle, ts, place);
b[ret] = '\n';
- fwrite (b, 1, ret + 1, stderr);
+ gomp_print_string (b, ret + 1);
free (b);
}
--- /dev/null
+/* Copyright (C) 2018 Free Software Foundation, Inc.
+
+ This file is part of the GNU Offloading and Multi Processing Library
+ (libgomp).
+
+ Libgomp is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "libgomp.h"
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h> /* For PRIx64. */
+#endif
+#ifdef HAVE_UNAME
+#include <sys/utsname.h>
+#endif
+
+/* The HAVE_GETPID and HAVE_GETHOSTNAME configure tests are passing for nvptx,
+ while the nvptx newlib implementation does not support those functions.
+ Override the configure test results here. */
+#undef HAVE_GETPID
+#undef HAVE_GETHOSTNAME
+
+/* The nvptx newlib implementation does not support fwrite, but it does support
+ write. Map fwrite to write. */
+#undef fwrite
+#define fwrite(ptr, size, nmemb, stream) write (1, (ptr), (nmemb) * (size))
+
+#include "../../affinity-fmt.c"
+
if (ret < sizeof buf)
{
buf[ret] = '\n';
- fwrite (buf, 1, ret + 1, stderr);
+ gomp_print_string (buf, ret + 1);
}
else
{
format_len ? fmt : gomp_affinity_format_var,
gomp_thread_self (), &thr->ts, thr->place);
b[ret] = '\n';
- fwrite (b, 1, ret + 1, stderr);
+ gomp_print_string (b, ret + 1);
free (b);
}
if (fmt && fmt != fmt_buf)
/* affinity-fmt.c */
+extern void gomp_print_string (const char *str, size_t len);
extern void gomp_set_affinity_format (const char *, size_t);
extern void gomp_display_string (char *, size_t, size_t *, const char *,
size_t);