00

Committer:
ganlikun
Date:
Sun Jun 12 14:02:44 2022 +0000
Revision:
0:13413ea9a877
00

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ganlikun 0:13413ea9a877 1 /* mbed Microcontroller Library
ganlikun 0:13413ea9a877 2 * Copyright (c) 2017 ARM Limited
ganlikun 0:13413ea9a877 3 *
ganlikun 0:13413ea9a877 4 * Licensed under the Apache License, Version 2.0 (the "License");
ganlikun 0:13413ea9a877 5 * you may not use this file except in compliance with the License.
ganlikun 0:13413ea9a877 6 * You may obtain a copy of the License at
ganlikun 0:13413ea9a877 7 *
ganlikun 0:13413ea9a877 8 * http://www.apache.org/licenses/LICENSE-2.0
ganlikun 0:13413ea9a877 9 *
ganlikun 0:13413ea9a877 10 * Unless required by applicable law or agreed to in writing, software
ganlikun 0:13413ea9a877 11 * distributed under the License is distributed on an "AS IS" BASIS,
ganlikun 0:13413ea9a877 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ganlikun 0:13413ea9a877 13 * See the License for the specific language governing permissions and
ganlikun 0:13413ea9a877 14 * limitations under the License.
ganlikun 0:13413ea9a877 15 */
ganlikun 0:13413ea9a877 16 #ifndef MBED_POLL_H
ganlikun 0:13413ea9a877 17 #define MBED_POLL_H
ganlikun 0:13413ea9a877 18
ganlikun 0:13413ea9a877 19 #define POLLIN 0x0001 ///< Data may be read without blocking
ganlikun 0:13413ea9a877 20 #define POLLOUT 0x0010 ///< Data may be written without blocking
ganlikun 0:13413ea9a877 21 #define POLLERR 0x1000 ///< An error has occurred on the device or stream
ganlikun 0:13413ea9a877 22 #define POLLHUP 0x2000 ///< The device has been disconnected
ganlikun 0:13413ea9a877 23 #define POLLNVAL 0x4000 ///< The specified file handle value is invalid
ganlikun 0:13413ea9a877 24
ganlikun 0:13413ea9a877 25 namespace mbed {
ganlikun 0:13413ea9a877 26
ganlikun 0:13413ea9a877 27 class FileHandle;
ganlikun 0:13413ea9a877 28
ganlikun 0:13413ea9a877 29 /** \addtogroup platform */
ganlikun 0:13413ea9a877 30
ganlikun 0:13413ea9a877 31
ganlikun 0:13413ea9a877 32 struct pollfh {
ganlikun 0:13413ea9a877 33 FileHandle *fh;
ganlikun 0:13413ea9a877 34 short events;
ganlikun 0:13413ea9a877 35 short revents;
ganlikun 0:13413ea9a877 36 };
ganlikun 0:13413ea9a877 37
ganlikun 0:13413ea9a877 38 /** A mechanism to multiplex input/output over a set of file handles(file descriptors).
ganlikun 0:13413ea9a877 39 * For every file handle provided, poll() examines it for any events registered for that particular
ganlikun 0:13413ea9a877 40 * file handle.
ganlikun 0:13413ea9a877 41 *
ganlikun 0:13413ea9a877 42 * @param fhs an array of PollFh struct carrying a FileHandle and bitmasks of events
ganlikun 0:13413ea9a877 43 * @param nfhs number of file handles
ganlikun 0:13413ea9a877 44 * @param timeout timer value to timeout or -1 for loop forever
ganlikun 0:13413ea9a877 45 *
ganlikun 0:13413ea9a877 46 * @return number of file handles selected (for which revents is non-zero). 0 if timed out with nothing selected. -1 for error.
ganlikun 0:13413ea9a877 47 */
ganlikun 0:13413ea9a877 48 int poll(pollfh fhs[], unsigned nfhs, int timeout);
ganlikun 0:13413ea9a877 49
ganlikun 0:13413ea9a877 50 } // namespace mbed
ganlikun 0:13413ea9a877 51
ganlikun 0:13413ea9a877 52 #endif //MBED_POLL_H
ganlikun 0:13413ea9a877 53