X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fgdb_select.h;h=69021ac28eae234dcf530018f4f6f8a835b76f3c;hb=d16c467a501547e37b111f775396e28f8bf27c1e;hp=a54cdc496c36d0f649e76bb56a057e8cab6cd2ee;hpb=6aba47ca06d9150c6196a374b745c2711b46e045;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/gdb_select.h b/gdb/gdb_select.h index a54cdc496c..69021ac28e 100644 --- a/gdb/gdb_select.h +++ b/gdb/gdb_select.h @@ -1,12 +1,12 @@ /* Slightly more portable version of . - Copyright (C) 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2006-2020 Free Software Foundation, Inc. This file is part of GDB. This program 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 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -15,15 +15,15 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ #if !defined(GDB_SELECT_H) #define GDB_SELECT_H #ifdef HAVE_SYS_SELECT_H #include +#else +#include "gdbsupport/gdb_sys_time.h" #endif #ifdef USE_WIN32API @@ -33,4 +33,19 @@ extern int gdb_select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); +/* Convenience wrapper around gdb_select that returns -1/EINTR if + set_quit_flag is set, either on entry or from a signal handler or + from a different thread while select is blocked. The quit flag is + not cleared on exit -- the caller is responsible to check it with + check_quit_flag or QUIT. + + Note this does NOT return -1/EINTR if any signal handler other than + SIGINT runs, nor if the current SIGINT handler does not call + set_quit_flag. */ +extern int interruptible_select (int n, + fd_set *readfds, + fd_set *writefds, + fd_set *exceptfds, + struct timeval *timeout); + #endif /* !defined(GDB_SELECT_H) */