### Method

# FwupdPlugin Ioctl execute

since: 2.0.2

#### Declaration [src]

    gboolean
    fu_ioctl_execute (
      FuIoctl* self,
      gulong request,
      gpointer buf,
      gsize bufsz,
      gint* rc,
      guint timeout,
      FuIoctlFlags flags,
      GError** error
    )

#### Description [src]

Executes the ioctl, emulating as required. Each fixup defined using `fu_ioctl_add_mutable_buffer()` of `fu_ioctl_add_const_buffer()` is run before the ioctl is executed.

If there are no fixups defined, the `buf` is emulated, and so you must ensure that there are no ioctl wrapper structures that use indirect pointer values.

Available since: 2.0.2

#### Parameters

`request`

  Type: `gulong`

  Request number.

`buf`

  Type: `gpointer`

  A buffer to use, which must be large enough for the request.

  The argument can be `NULL`.
  The data is owned by the caller of the method.

`bufsz`

  Type: `gsize`

  The size of `buf`.

`rc`

  Type: `gint*`

  The raw return value from the ioctl.

  The argument will be set by the function.
  The argument can be set to `NULL` by the method.

`timeout`

  Type: `guint`

  Timeout in ms for the retry action, see `FU_IOCTL_FLAG_RETRY`.

`flags`

  Type: `FuIoctlFlags`

  Some `FuIoctlFlags`, e.g. `FU_IOCTL_FLAG_RETRY`.

`error`

  Type: `GError **`

  The return location for a recoverable error.

  The argument can be `NULL`.
  If the return location is not `NULL`, then you must initialize it to a `NULL` `GError*`.
  The argument will be left initialized to `NULL` by the method if there are no errors.
  In case of error, the argument will be set to a newly allocated `GError`; the caller will take ownership of the data, and be responsible for freeing it.

#### Return value

Type: `gboolean`

`TRUE` for success.