1.. This file is dual-licensed: you can use it either under the terms
2.. of the GPL 2.0 or the GFDL 1.1+ license, at your option. Note that this
3.. dual licensing only applies to this file, and not this project as a
4.. whole.
5..
6.. a) This file is free software; you can redistribute it and/or
7..    modify it under the terms of the GNU General Public License as
8..    published by the Free Software Foundation version 2 of
9..    the License.
10..
11..    This file is distributed in the hope that it will be useful,
12..    but WITHOUT ANY WARRANTY; without even the implied warranty of
13..    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14..    GNU General Public License for more details.
15..
16.. Or, alternatively,
17..
18.. b) Permission is granted to copy, distribute and/or modify this
19..    document under the terms of the GNU Free Documentation License,
20..    Version 1.1 or any later version published by the Free Software
21..    Foundation, with no Invariant Sections, no Front-Cover Texts
22..    and no Back-Cover Texts. A copy of the license is included at
23..    Documentation/userspace-api/media/fdl-appendix.rst.
24..
25.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
26
27.. _media_request_ioc_reinit:
28
29******************************
30ioctl MEDIA_REQUEST_IOC_REINIT
31******************************
32
33Name
34====
35
36MEDIA_REQUEST_IOC_REINIT - Re-initialize a request
37
38
39Synopsis
40========
41
42.. c:function:: int ioctl( int request_fd, MEDIA_REQUEST_IOC_REINIT )
43    :name: MEDIA_REQUEST_IOC_REINIT
44
45
46Arguments
47=========
48
49``request_fd``
50    File descriptor returned by :ref:`MEDIA_IOC_REQUEST_ALLOC`.
51
52Description
53===========
54
55If the media device supports :ref:`requests <media-request-api>`, then
56this request ioctl can be used to re-initialize a previously allocated
57request.
58
59Re-initializing a request will clear any existing data from the request.
60This avoids having to :ref:`close() <request-func-close>` a completed
61request and allocate a new request. Instead the completed request can just
62be re-initialized and it is ready to be used again.
63
64A request can only be re-initialized if it either has not been queued
65yet, or if it was queued and completed. Otherwise it will set ``errno``
66to ``EBUSY``. No other error codes can be returned.
67
68Return Value
69============
70
71On success 0 is returned, on error -1 and the ``errno`` variable is set
72appropriately.
73
74EBUSY
75    The request is queued but not yet completed.
76