epoll_params
struct epoll_params epoll_params;
if (copy_from_user(&epoll_params, uarg, sizeof(epoll_params)))
if (epoll_params.__pad)
if (epoll_params.busy_poll_usecs > S32_MAX)
if (epoll_params.prefer_busy_poll > 1)
if (epoll_params.busy_poll_budget > NAPI_POLL_WEIGHT &&
WRITE_ONCE(ep->busy_poll_usecs, epoll_params.busy_poll_usecs);
WRITE_ONCE(ep->busy_poll_budget, epoll_params.busy_poll_budget);
WRITE_ONCE(ep->prefer_busy_poll, epoll_params.prefer_busy_poll);
memset(&epoll_params, 0, sizeof(epoll_params));
epoll_params.busy_poll_usecs = READ_ONCE(ep->busy_poll_usecs);
epoll_params.busy_poll_budget = READ_ONCE(ep->busy_poll_budget);
epoll_params.prefer_busy_poll = READ_ONCE(ep->prefer_busy_poll);
if (copy_to_user(uarg, &epoll_params, sizeof(epoll_params)))
#define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params)
#define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)
struct epoll_params epoll_params = {0};
epoll_params.busy_poll_usecs = cfg_busy_poll_usecs;
epoll_params.busy_poll_budget = cfg_busy_poll_budget;
epoll_params.prefer_busy_poll = cfg_prefer_busy_poll;
epoll_params.__pad = 0;
if (ioctl(epfd, EPIOCSPARAMS, &epoll_params) == -1)
#define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params)
#define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)
self->invalid_params = (struct epoll_params *)0xdeadbeef;
memset(&self->params, 0, sizeof(struct epoll_params));
self->invalid_params = (struct epoll_params *)0xdeadbeef;
memset(&self->params, 0, sizeof(struct epoll_params));
memset(&self->params, 0, sizeof(struct epoll_params));
#define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params)
#define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)
struct epoll_params params;
memset(&self->params, 0, sizeof(struct epoll_params));
struct epoll_params params;
struct epoll_params *invalid_params;