#include <limits.h>
#include <pthread.h>
#include <sys/mman.h>
-#include <time.h>
+#include <common/compat/time.h>
#define BUF_SIZE 256
#define NB_FD 1
*/
void pselect_fd_too_big(void)
{
- fd_set rfds;
+ long rfds[2048 / (sizeof(long) * CHAR_BIT)] = { 0 };
int ret;
int fd2;
char buf[BUF_SIZE];
perror("dup2");
return;
}
- FD_ZERO(&rfds);
- FD_SET(fd2, &rfds);
+ FD_SET(fd2, (fd_set *) &rfds);
ret = syscall(SYS_pselect6, fd2 + 1, &rfds, NULL, NULL, NULL, NULL);
if (ret == -1) {
do_ppoll(fds, ufds);
}
stop_thread = 1;
- pthread_join(writer, NULL);
+ ret = pthread_join(writer, NULL);
+ if (ret) {
+ fprintf(stderr, "[error] pthread_join\n");
+ goto end;
+ }
end:
return;
}
int ret, epollfd, i, fds[MAX_FDS];
char buf[BUF_SIZE];
struct epoll_event *epoll_event;
- void *addr = NULL;
pthread_t writer;
-
epollfd = epoll_create(MAX_FDS);
if (epollfd < 0) {
perror("[eppoll] create");
goto end;
}
- epoll_event = mmap(addr, MAX_FDS * sizeof(struct epoll_event),
+ epoll_event = mmap(NULL, MAX_FDS * sizeof(struct epoll_event),
PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS,
-1, 0);
if (epoll_event == MAP_FAILED) {
(void *) epoll_event);
if (ret != 0) {
fprintf(stderr, "[error] pthread_create\n");
- goto end;
+ goto end_unmap;
}
ret = epoll_pwait(epollfd, epoll_event, 1, 1, NULL);
}
stop_thread = 1;
- pthread_join(writer, NULL);
-
+ ret = pthread_join(writer, NULL);
+ if (ret) {
+ fprintf(stderr, "[error] pthread_join\n");
+ goto end_unmap;
+ }
end_unmap:
for (i = 0; i < MAX_FDS; i++) {
ret = close(fds[i]);
}
}
- ret = munmap(addr, MAX_FDS * sizeof(struct epoll_event));
+ ret = munmap(epoll_event, MAX_FDS * sizeof(struct epoll_event));
if (ret != 0) {
perror("munmap");
}