source: rtems/cpukit/libcsupport/src/libio_sockets.c @ a29d2e7

4.104.114.84.95
Last change on this file since a29d2e7 was 83c5fc1, checked in by Ralf Corsepius <ralf.corsepius@…>, on 03/23/04 at 06:07:53

2004-03-23 Ralf Corsepius <ralf_corsepius@…>

  • libcsupport/include/chain.h, libcsupport/include/clockdrv.h, libcsupport/include/ringbuf.h, libcsupport/include/spurious.h, libcsupport/include/timerdrv.h, libcsupport/include/vmeintr.h, libcsupport/include/motorola/mc68230.h, libcsupport/include/rtems/assoc.h, libcsupport/include/rtems/libio.h, libcsupport/include/rtems/libio_.h, libcsupport/include/rtems/termiostypes.h, libcsupport/include/zilog/z8036.h, libcsupport/include/zilog/z8530.h, libcsupport/include/zilog/z8536.h, libcsupport/src/gettod.c, libcsupport/src/assoc.c, libcsupport/src/assocnamebad.c, libcsupport/src/error.c, libcsupport/src/libio.c, libcsupport/src/libio_sockets.c, libcsupport/src/malloc.c, libcsupport/src/no_libc.c, libcsupport/src/termios.c, libcsupport/src/termiosreserveresources.c: Convert to using c99 fixed-size types.
  • Property mode set to 100644
File size: 1.5 KB
Line 
1/*
2 *  This file contains the support infrastructure used to manage the
3 *  table of integer style file descriptors used by the socket calls.
4 *
5 *  COPYRIGHT (c) 1989-1999.
6 *  On-Line Applications Research Corporation (OAR).
7 *
8 *  The license and distribution terms for this file may be
9 *  found in the file LICENSE in this distribution or at
10 *  http://www.rtems.com/license/LICENSE.
11 *
12 *  $Id$
13 */
14
15#if HAVE_CONFIG_H
16#include "config.h"
17#endif
18
19#include <rtems/libio_.h>             /* libio_.h pulls in rtems */
20#include <rtems.h>
21
22#include <errno.h>
23
24/*
25 * Convert an RTEMS file descriptor to a BSD socket pointer.
26 */
27
28struct socket *rtems_bsdnet_fdToSocket(
29  int fd
30)
31{
32  rtems_libio_t *iop;
33
34  /* same as rtems_libio_check_fd(_fd) but different return */
35  if ((uint32_t  )fd >= rtems_libio_number_iops) {
36    errno = EBADF;
37    return NULL;
38  }
39  iop = &rtems_libio_iops[fd];
40
41  /* same as rtems_libio_check_is_open(iop) but different return */
42  if ((iop->flags & LIBIO_FLAGS_OPEN) == 0) {
43    errno = EBADF;
44    return NULL;
45  }
46
47  if (iop->data1 == NULL)
48    errno = EBADF;
49  return iop->data1;
50}
51
52/*
53 * Create an RTEMS file descriptor for a socket
54 */
55
56int rtems_bsdnet_makeFdForSocket(
57  void *so,
58  const rtems_filesystem_file_handlers_r *h
59)
60{
61  rtems_libio_t *iop;
62  int fd;
63
64  iop = rtems_libio_allocate();
65  if (iop == 0) {
66      errno = ENFILE;
67      return -1;
68  }
69  fd = iop - rtems_libio_iops;
70  iop->flags |= LIBIO_FLAGS_WRITE | LIBIO_FLAGS_READ;
71  iop->data0 = fd;
72  iop->data1 = so;
73  iop->handlers = (rtems_filesystem_file_handlers_r *) h;
74  return fd;
75}
Note: See TracBrowser for help on using the repository browser.