📄 core.c
字号:
* as well. Otherwise, the call will fail. * * @note Killing a real-time task that is blocked on some device operation can * lead to stalled file descriptors. To avoid such scenarios, always close the * device before explicitely terminating any real-time task which may use it. * To cleanup a stalled file descriptor, send its number to the @c open_fildes * /proc entry, e.g. via * @code #> echo 3 > /proc/xenomai/rtdm/open_fildes @endcode * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c close() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */int rt_dev_close(int fd);/** * @brief Issue an IOCTL * * @param[in] fd File descriptor as returned by rt_dev_open() or rt_dev_socket() * @param[in] request IOCTL code * @param ... Optional third argument, depending on IOCTL function * (@c void @c * or @c unsigned @c long) * * @return Positiv value on success, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c ioctl() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */int rt_dev_ioctl(int fd, int request, ...);/** * @brief Read from device * * @param[in] fd File descriptor as returned by rt_dev_open() * @param[out] buf Input buffer * @param[in] nbyte Number of bytes to read * * @return Number of bytes read, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c read() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */ssize_t rt_dev_read(int fd, void *buf, size_t nbyte);/** * @brief Write to device * * @param[in] fd File descriptor as returned by rt_dev_open() * @param[in] buf Output buffer * @param[in] nbyte Number of bytes to write * * @return Number of bytes written, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c write() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */ssize_t rt_dev_write(int fd, const void *buf, size_t nbyte);/** * @brief Receive message from socket * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[in,out] msg Message descriptor * @param[in] flags Message flags * * @return Number of bytes received, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c recvmsg() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */ssize_t rt_dev_recvmsg(int fd, struct msghdr *msg, int flags);/** * @brief Receive message from socket * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[out] buf Message buffer * @param[in] len Message buffer size * @param[in] flags Message flags * @param[out] from Buffer for message sender address * @param[in,out] fromlen Address buffer size * * @return Number of bytes received, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c recvfrom() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */ssize_t rt_dev_recvfrom(int fd, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);/** * @brief Receive message from socket * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[out] buf Message buffer * @param[in] len Message buffer size * @param[in] flags Message flags * * @return Number of bytes received, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c recv() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */ssize_t rt_dev_recv(int fd, void *buf, size_t len, int flags);/** * @brief Transmit message to socket * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[in] msg Message descriptor * @param[in] flags Message flags * * @return Number of bytes sent, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c sendmsg() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */ssize_t rt_dev_sendmsg(int fd, const struct msghdr *msg, int flags);/** * @brief Transmit message to socket * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[in] buf Message buffer * @param[in] len Message buffer size * @param[in] flags Message flags * @param[in] to Buffer for message destination address * @param[in] tolen Address buffer size * * @return Number of bytes sent, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c sendto() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */ssize_t rt_dev_sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);/** * @brief Transmit message to socket * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[in] buf Message buffer * @param[in] len Message buffer size * @param[in] flags Message flags * * @return Number of bytes sent, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c send() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */ssize_t rt_dev_send(int fd, const void *buf, size_t len, int flags);/** * @brief Bind to local address * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[in] my_addr Address buffer * @param[in] addrlen Address buffer size * * @return 0 on success, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c bind() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */int rt_dev_bind(int fd, const struct sockaddr *my_addr, socklen_t addrlen);/** * @brief Connect to remote address * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[in] serv_addr Address buffer * @param[in] addrlen Address buffer size * * @return 0 on success, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c connect() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */int rt_dev_connect(int fd, const struct sockaddr *serv_addr, socklen_t addrlen);/** * @brief Listen for incomming connection requests * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[in] backlog Maximum queue length * * @return 0 on success, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c lsiten() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */int rt_dev_listen(int fd, int backlog);/** * @brief Accept a connection requests * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[out] addr Buffer for remote address * @param[in,out] addrlen Address buffer size * * @return 0 on success, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c accept() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */int rt_dev_accept(int fd, struct sockaddr *addr, socklen_t *addrlen);/** * @brief Shut down parts of a connection * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[in] how Specifies the part to be shut down (@c SHUT_xxx)* * @return 0 on success, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c shutdown() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */int rt_dev_shutdown(int fd, int how);/** * @brief Get socket option * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[in] level Addressed stack level * @param[in] optname Option name ID * @param[out] optval Value buffer * @param[in,out] optlen Value buffer size * * @return 0 on success, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c getsockopt() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */int rt_dev_getsockopt(int fd, int level, int optname, void *optval, socklen_t *optlen);/** * @brief Set socket option * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[in] level Addressed stack level * @param[in] optname Option name ID * @param[in] optval Value buffer * @param[in] optlen Value buffer size * * @return 0 on success, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c setsockopt() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */int rt_dev_setsockopt(int fd, int level, int optname, const void *optval, socklen_t optlen);/** * @brief Get local socket address * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[out] name Address buffer * @param[in,out] namelen Address buffer size * * @return 0 on success, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c getsockname() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */int rt_dev_getsockname(int fd, struct sockaddr *name, socklen_t *namelen);/** * @brief Get socket destination address * * @param[in] fd File descriptor as returned by rt_dev_socket() * @param[out] name Address buffer * @param[in,out] namelen Address buffer size * * @return 0 on success, otherwise negative error code * * Environments: * * Depends on driver implementation, see @ref profiles "Device Profiles". * * Rescheduling: possible. * * @see @c getpeername() in IEEE Std 1003.1, * http://www.opengroup.org/onlinepubs/009695399 */int rt_dev_getpeername(int fd, struct sockaddr *name, socklen_t *namelen);/** @} */#endif /* DOXYGEN_CPP */EXPORT_SYMBOL(rtdm_context_get);EXPORT_SYMBOL(_rtdm_open);EXPORT_SYMBOL(_rtdm_socket);EXPORT_SYMBOL(_rtdm_close);EXPORT_SYMBOL(_rtdm_ioctl);EXPORT_SYMBOL(_rtdm_read);EXPORT_SYMBOL(_rtdm_write);EXPORT_SYMBOL(_rtdm_recvmsg);EXPORT_SYMBOL(_rtdm_sendmsg);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -