[PATCH v2 5/5] [gdbsupport] Handle EINTR in event-pipe.cc
Tom de Vries
tdevries@suse.de
Tue Nov 5 09:58:38 GMT 2024
Use gdb syscall wrappers to handle EINTR in event-pipe.cc.
Tested on aarch64-linux.
---
gdbsupport/event-pipe.cc | 21 ++++++++-------------
1 file changed, 8 insertions(+), 13 deletions(-)
diff --git a/gdbsupport/event-pipe.cc b/gdbsupport/event-pipe.cc
index af6c943284f..692b6e5cdca 100644
--- a/gdbsupport/event-pipe.cc
+++ b/gdbsupport/event-pipe.cc
@@ -19,6 +19,7 @@
#include "gdbsupport/event-pipe.h"
#include "gdbsupport/filestuff.h"
+#include "gdbsupport/eintr.h"
#include <errno.h>
#include <fcntl.h>
@@ -41,8 +42,8 @@ event_pipe::open_pipe ()
if (gdb_pipe_cloexec (m_fds) == -1)
return false;
- if (fcntl (m_fds[0], F_SETFL, O_NONBLOCK) == -1
- || fcntl (m_fds[1], F_SETFL, O_NONBLOCK) == -1)
+ if (gdb_fcntl (m_fds[0], F_SETFL, O_NONBLOCK) == -1
+ || gdb_fcntl (m_fds[1], F_SETFL, O_NONBLOCK) == -1)
{
close_pipe ();
return false;
@@ -56,8 +57,8 @@ event_pipe::open_pipe ()
void
event_pipe::close_pipe ()
{
- ::close (m_fds[0]);
- ::close (m_fds[1]);
+ gdb_close (m_fds[0]);
+ gdb_close (m_fds[1]);
m_fds[0] = -1;
m_fds[1] = -1;
}
@@ -72,9 +73,9 @@ event_pipe::flush ()
do
{
- ret = read (m_fds[0], &buf, 1);
+ ret = gdb_read (m_fds[0], &buf, 1);
}
- while (ret >= 0 || (ret == -1 && errno == EINTR));
+ while (ret >= 0);
}
/* See event-pipe.h. */
@@ -82,18 +83,12 @@ event_pipe::flush ()
void
event_pipe::mark ()
{
- int ret;
-
/* It doesn't really matter what the pipe contains, as long we end
up with something in it. Might as well flush the previous
left-overs. */
flush ();
- do
- {
- ret = write (m_fds[1], "+", 1);
- }
- while (ret == -1 && errno == EINTR);
+ gdb_write (m_fds[1], "+", 1);
/* Ignore EAGAIN. If the pipe is full, the event loop will already
be awakened anyway. */
--
2.35.3
More information about the Gdb-patches
mailing list