⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libio_sockets.c

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 C
字号:
/* *  This file contains the support infrastructure used to manage the *  table of integer style file descriptors used by the socket calls. * *  COPYRIGHT (c) 1989-1999. *  On-Line Applications Research Corporation (OAR). * *  The license and distribution terms for this file may be *  found in the file LICENSE in this distribution or at *  http://www.rtems.com/license/LICENSE. * *  $Id: libio_sockets.c,v 1.8.4.1 2003/09/04 18:46:58 joel Exp $ */#if HAVE_CONFIG_H#include "config.h"#endif#include <rtems/libio_.h>             /* libio_.h pulls in rtems */#include <rtems.h>#include <errno.h>/* * Convert an RTEMS file descriptor to a BSD socket pointer. */struct socket *rtems_bsdnet_fdToSocket(  int fd){  rtems_libio_t *iop;  /* same as rtems_libio_check_fd(_fd) but different return */  if ((unsigned32)fd >= rtems_libio_number_iops) {    errno = EBADF;    return NULL;  }  iop = &rtems_libio_iops[fd];  /* same as rtems_libio_check_is_open(iop) but different return */  if ((iop->flags & LIBIO_FLAGS_OPEN) == 0) {    errno = EBADF;    return NULL;  }  if (iop->data1 == NULL)    errno = EBADF;  return iop->data1;}/* * Create an RTEMS file descriptor for a socket */int rtems_bsdnet_makeFdForSocket(  void *so,  const rtems_filesystem_file_handlers_r *h){  rtems_libio_t *iop;  int fd;  iop = rtems_libio_allocate();  if (iop == 0) {      errno = ENFILE;      return -1;  }  fd = iop - rtems_libio_iops;  iop->flags |= LIBIO_FLAGS_WRITE | LIBIO_FLAGS_READ;  iop->data0 = fd;  iop->data1 = so;  iop->handlers = (rtems_filesystem_file_handlers_r *) h;  return fd;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -