mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
367c567c5f
sys_poll() is only needed if the signal pipe is set up and used, but as no signal handler ever writes to the pipe, this can all be removed. signal based events are now handled via tevent. Andrew Bartlett Signed-off-by: Jeremy Allison <jra@samba.org>
51 lines
1.3 KiB
C
51 lines
1.3 KiB
C
/*
|
|
Unix SMB/Netbios implementation.
|
|
Version 3.0
|
|
Samba select/poll implementation
|
|
Copyright (C) Andrew Tridgell 1992-1998
|
|
|
|
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 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program 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.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "includes.h"
|
|
#include "system/filesys.h"
|
|
#include "system/select.h"
|
|
#include "lib/util/select.h"
|
|
|
|
int sys_poll_intr(struct pollfd *fds, int num_fds, int timeout)
|
|
{
|
|
int orig_timeout = timeout;
|
|
struct timespec start;
|
|
int ret;
|
|
|
|
clock_gettime_mono(&start);
|
|
|
|
while (true) {
|
|
struct timespec now;
|
|
int64_t elapsed;
|
|
|
|
ret = poll(fds, num_fds, timeout);
|
|
if (ret != -1) {
|
|
break;
|
|
}
|
|
if (errno != EINTR) {
|
|
break;
|
|
}
|
|
clock_gettime_mono(&now);
|
|
elapsed = nsec_time_diff(&now, &start);
|
|
timeout = (orig_timeout - elapsed) / 1000000;
|
|
};
|
|
return ret;
|
|
}
|