# io_uring_prep_poll_update

## NAME



           io_uring_prep_poll_update - update an existing poll request
    


## SYNOPSIS



           **#include <poll.h>**
           **#include <liburing.h>**
    
           **void io_uring_prep_poll_update(struct io_uring_sqe ***_sqe_**,**
                                          **__u64** _old_user_data_**,**
                                          **__u64** _new_user_data_**,**
                                          **unsigned** _poll_mask_**,**
                                          **unsigned** _flags_**);**
    


## DESCRIPTION



           The io_uring_prep_poll_update(3) function prepares a poll update
           request. The submission queue entry _sqe_ is setup to update a poll
           request identified by _old_user_data_ , replacing it with the
           _new_user_data_ information. The _poll_mask_ arguments contains the
           new mask to use for the poll request, and _flags_ argument contains
           modifier flags telling io_uring what fields to update.
    
           The _flags_ modifier flags is a bitmask and may contain and OR'ed
           mask of:
    
           **IORING_POLL_UPDATE_EVENTS**
                  If set, the poll update request will replace the existing
                  events being waited for with the ones specified in the
                  _poll_mask_ argument to the function. Note that only the
                  lower 16 bits of events can be updated. This includes
                  things like **EPOLLIN** and **EPOLLOUT .** Higher order
                  masks/settings are included as internal state, and cannot
                  be modified. That includes settings like **EPOLLONESHOT ,**
                  **EPOLLEXCLUSIVE ,** and **EPOLLET .** If an application wishes to
                  modify these, it must cancel/remove the existing poll
                  request and arm a new one.
    
           **IORING_POLL_UPDATE_USER_DATA**
                  If set, the poll update request will update the existing
                  user_data of the request with the value passed in as the
                  _new_user_data_ argument.
    
           **IORING_POLL_ADD_MULTI**
                  If set, this will change the poll request from a singleshot
                  to a multishot request. This must be used along with
                  **IORING_POLL_UPDATE_EVENTS** as the event field must be
                  updated to enable multishot.
    


## RETURN VALUE



           None
    


## ERRORS



           These are the errors that are reported in the CQE _res_ field. On
           success, **0** is returned.
    
           **-ENOENT**
                  The request identified by _user_data_ could not be located.
                  This could be because it completed before the cancelation
                  request was issued, or if an invalid identifier is used.
    
           **-EINVAL**
                  One of the fields set in the SQE was invalid.
    
           **-EALREADY**
                  The execution state of the request has progressed far
                  enough that cancelation is no longer possible. This should
                  normally mean that it will complete shortly, either
                  successfully, or interrupted due to the cancelation.
    
           **-ECANCELED**
                  **IORING_POLL_UPDATE_EVENTS** was set and an error occurred re-
                  arming the poll request with the new mask.  The original
                  poll request is terminated if this happens, and that
                  termination CQE will contain the reason for the error re-
                  arming.
    


* * *