Fix poll() to only update revents.

This commit is contained in:
mtheall 2015-01-24 11:48:50 -06:00 committed by Dave Murphy
parent 4fa477c039
commit 67f991e452

View File

@ -1,6 +1,7 @@
#include "soc_common.h"
#include <poll.h>
#include <stdlib.h>
#include <stdio.h>
int poll(struct pollfd *fds, nfds_t nfds, int timeout)
{
@ -47,7 +48,7 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout)
saved_threadstorage[1] = cmdbuf[0x104>>2];
cmdbuf[0x100>>2] = (size<<14) | 2;
cmdbuf[0x104>>2] = (u32)fds;
cmdbuf[0x104>>2] = (u32)tmp_fds;
if((ret = svcSendSyncRequest(SOCU_handle)) != 0)
{
@ -55,6 +56,11 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout)
return ret;
}
for(i = 0; i < nfds; ++i)
{
fds[i].revents = tmp_fds[i].revents;
}
free(tmp_fds);
cmdbuf[0x100>>2] = saved_threadstorage[0];