Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.11 176 lines 5.0 kB view raw
1.. -*- coding: utf-8; mode: rst -*- 2 3.. _CEC_DQEVENT: 4 5***************** 6ioctl CEC_DQEVENT 7***************** 8 9Name 10==== 11 12CEC_DQEVENT - Dequeue a CEC event 13 14 15Synopsis 16======== 17 18.. c:function:: int ioctl( int fd, CEC_DQEVENT, struct cec_event *argp ) 19 :name: CEC_DQEVENT 20 21Arguments 22========= 23 24``fd`` 25 File descriptor returned by :ref:`open() <cec-func-open>`. 26 27``argp`` 28 29 30Description 31=========== 32 33CEC devices can send asynchronous events. These can be retrieved by 34calling :c:func:`CEC_DQEVENT`. If the file descriptor is in 35non-blocking mode and no event is pending, then it will return -1 and 36set errno to the ``EAGAIN`` error code. 37 38The internal event queues are per-filehandle and per-event type. If 39there is no more room in a queue then the last event is overwritten with 40the new one. This means that intermediate results can be thrown away but 41that the latest event is always available. This also means that is it 42possible to read two successive events that have the same value (e.g. 43two :ref:`CEC_EVENT_STATE_CHANGE <CEC-EVENT-STATE-CHANGE>` events with 44the same state). In that case the intermediate state changes were lost but 45it is guaranteed that the state did change in between the two events. 46 47.. tabularcolumns:: |p{1.2cm}|p{2.9cm}|p{13.4cm}| 48 49.. c:type:: cec_event_state_change 50 51.. flat-table:: struct cec_event_state_change 52 :header-rows: 0 53 :stub-columns: 0 54 :widths: 1 1 8 55 56 * - __u16 57 - ``phys_addr`` 58 - The current physical address. This is ``CEC_PHYS_ADDR_INVALID`` if no 59 valid physical address is set. 60 * - __u16 61 - ``log_addr_mask`` 62 - The current set of claimed logical addresses. This is 0 if no logical 63 addresses are claimed or if ``phys_addr`` is ``CEC_PHYS_ADDR_INVALID``. 64 If bit 15 is set (``1 << CEC_LOG_ADDR_UNREGISTERED``) then this device 65 has the unregistered logical address. In that case all other bits are 0. 66 67 68.. c:type:: cec_event_lost_msgs 69 70.. tabularcolumns:: |p{1.0cm}|p{2.0cm}|p{14.5cm}| 71 72.. flat-table:: struct cec_event_lost_msgs 73 :header-rows: 0 74 :stub-columns: 0 75 :widths: 1 1 16 76 77 * - __u32 78 - ``lost_msgs`` 79 - Set to the number of lost messages since the filehandle was opened 80 or since the last time this event was dequeued for this 81 filehandle. The messages lost are the oldest messages. So when a 82 new message arrives and there is no more room, then the oldest 83 message is discarded to make room for the new one. The internal 84 size of the message queue guarantees that all messages received in 85 the last two seconds will be stored. Since messages should be 86 replied to within a second according to the CEC specification, 87 this is more than enough. 88 89 90.. tabularcolumns:: |p{1.0cm}|p{4.2cm}|p{2.5cm}|p{8.8cm}| 91 92.. c:type:: cec_event 93 94.. flat-table:: struct cec_event 95 :header-rows: 0 96 :stub-columns: 0 97 :widths: 1 1 1 8 98 99 * - __u64 100 - ``ts`` 101 - :cspan:`1` Timestamp of the event in ns. 102 103 The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access 104 the same clock from userspace use :c:func:`clock_gettime`. 105 * - __u32 106 - ``event`` 107 - :cspan:`1` The CEC event type, see :ref:`cec-events`. 108 * - __u32 109 - ``flags`` 110 - :cspan:`1` Event flags, see :ref:`cec-event-flags`. 111 * - union 112 - (anonymous) 113 - 114 - 115 * - 116 - struct cec_event_state_change 117 - ``state_change`` 118 - The new adapter state as sent by the :ref:`CEC_EVENT_STATE_CHANGE <CEC-EVENT-STATE-CHANGE>` 119 event. 120 * - 121 - struct cec_event_lost_msgs 122 - ``lost_msgs`` 123 - The number of lost messages as sent by the :ref:`CEC_EVENT_LOST_MSGS <CEC-EVENT-LOST-MSGS>` 124 event. 125 126 127.. tabularcolumns:: |p{5.6cm}|p{0.9cm}|p{11.0cm}| 128 129.. _cec-events: 130 131.. flat-table:: CEC Events Types 132 :header-rows: 0 133 :stub-columns: 0 134 :widths: 3 1 16 135 136 * .. _`CEC-EVENT-STATE-CHANGE`: 137 138 - ``CEC_EVENT_STATE_CHANGE`` 139 - 1 140 - Generated when the CEC Adapter's state changes. When open() is 141 called an initial event will be generated for that filehandle with 142 the CEC Adapter's state at that time. 143 * .. _`CEC-EVENT-LOST-MSGS`: 144 145 - ``CEC_EVENT_LOST_MSGS`` 146 - 2 147 - Generated if one or more CEC messages were lost because the 148 application didn't dequeue CEC messages fast enough. 149 150 151.. tabularcolumns:: |p{6.0cm}|p{0.6cm}|p{10.9cm}| 152 153.. _cec-event-flags: 154 155.. flat-table:: CEC Event Flags 156 :header-rows: 0 157 :stub-columns: 0 158 :widths: 3 1 8 159 160 * .. _`CEC-EVENT-FL-INITIAL-VALUE`: 161 162 - ``CEC_EVENT_FL_INITIAL_VALUE`` 163 - 1 164 - Set for the initial events that are generated when the device is 165 opened. See the table above for which events do this. This allows 166 applications to learn the initial state of the CEC adapter at 167 open() time. 168 169 170 171Return Value 172============ 173 174On success 0 is returned, on error -1 and the ``errno`` variable is set 175appropriately. The generic error codes are described at the 176:ref:`Generic Error Codes <gen-errors>` chapter.