dpev.fd = fd;
dpev.events = events;
dpev.revents = 0;
- if (write(devpollop->dpfd, &dpev, sizeof(dpev)) == -1)
+ /*
+ * Due to a bug in Solaris, we have to use pwrite with an offset of 0.
+ * Write is limited to 2GB of data, until it will fail.
+ */
+ if (pwrite(devpollop->dpfd, &dpev, sizeof(dpev), 0) == -1)
return (-1);
/* Update events responsible */
dpev.events = events | POLLREMOVE;
dpev.revents = 0;
- if (write(devpollop->dpfd, &dpev, sizeof(dpev)) == -1)
+ if (pwrite(devpollop->dpfd, &dpev, sizeof(dpev), 0) == -1)
return (-1);
if (needreaddelete)