mirror of
https://gitlab.freedesktop.org/plymouth/plymouth.git
synced 2026-05-08 21:48:09 +02:00
add ply_fd_has_data and ply_fd_can_take_data apis
The calls in this commit just do a one-off poll of the passed in fd to see if the fd is read for read or write call
This commit is contained in:
parent
088020c3c2
commit
e7c3b04e4f
2 changed files with 31 additions and 0 deletions
|
|
@ -5,6 +5,7 @@
|
|||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <poll.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
|
|
@ -70,3 +71,31 @@ ply_write (int fd,
|
|||
|
||||
return bytes_left_to_write == 0;
|
||||
}
|
||||
|
||||
bool
|
||||
ply_fd_has_data (int fd)
|
||||
{
|
||||
struct pollfd poll_data;
|
||||
int result;
|
||||
|
||||
poll_data.fd = fd;
|
||||
poll_data.events = POLLIN | POLLPRI;
|
||||
poll_data.revents = 0;
|
||||
result = poll (&poll_data, 1, 10);
|
||||
|
||||
return result == 1;
|
||||
}
|
||||
|
||||
bool
|
||||
ply_fd_can_take_data (int fd)
|
||||
{
|
||||
struct pollfd poll_data;
|
||||
int result;
|
||||
|
||||
poll_data.fd = fd;
|
||||
poll_data.events = POLLOUT;
|
||||
poll_data.revents = 0;
|
||||
result = poll (&poll_data, 1, 10);
|
||||
|
||||
return result == 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@ bool ply_open_unidirectional_pipe (int *sender_fd,
|
|||
bool ply_write (int fd,
|
||||
const void *buffer,
|
||||
size_t number_of_bytes);
|
||||
bool ply_fd_has_data (int fd);
|
||||
bool ply_fd_can_take_data (int fd);
|
||||
#endif
|
||||
|
||||
#endif /* PLY_UTILS_H */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue