Exemplo n.º 1
0
static off_t IMFS_fifo_lseek(
    rtems_libio_t *iop,
    off_t          offset,
    int            whence
)
{
    off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop);
    IMFS_FIFO_RETURN(err);
}
Exemplo n.º 2
0
epos_off64_t IMFS_fifo_lseek(
  epos_libio_t *iop,
  epos_off64_t  offset,
  int            whence
)
{
  off_t err = pipe_lseek(LIBIO2PIPE(iop), offset, whence, iop);
  IMFS_FIFO_RETURN(err);
}
Exemplo n.º 3
0
static int IMFS_fifo_close(
    rtems_libio_t *iop
)
{
    int err = 0;
    IMFS_jnode_t *jnode = iop->pathinfo.node_access;

    pipe_release(&JNODE2PIPE(jnode), iop);

    IMFS_FIFO_RETURN(err);
}
Exemplo n.º 4
0
static int IMFS_fifo_open(
    rtems_libio_t *iop,
    const char    *pathname,
    int            oflag,
    mode_t         mode
)
{
    IMFS_jnode_t *jnode = iop->pathinfo.node_access;

    int err = fifo_open(&JNODE2PIPE(jnode), iop);
    IMFS_FIFO_RETURN(err);
}
Exemplo n.º 5
0
int IMFS_fifo_open(
  epos_libio_t *iop,
  const char    *pathname,
  uint32_t       flag,
  uint32_t       mode
)
{
  IMFS_jnode_t *jnode = iop->file_info;

  int err = fifo_open(&JNODE2PIPE(jnode), iop);
  IMFS_FIFO_RETURN(err);
}
Exemplo n.º 6
0
static ssize_t IMFS_fifo_read(
    rtems_libio_t *iop,
    void          *buffer,
    size_t         count
)
{
    IMFS_jnode_t *jnode = iop->pathinfo.node_access;

    int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
    if (err > 0)
        IMFS_update_atime(jnode);

    IMFS_FIFO_RETURN(err);
}
Exemplo n.º 7
0
ssize_t IMFS_fifo_read(
  epos_libio_t *iop,
  void          *buffer,
  size_t         count
)
{
  IMFS_jnode_t *jnode = iop->file_info;

  int err = pipe_read(JNODE2PIPE(jnode), buffer, count, iop);
  if (err > 0)
    IMFS_update_atime(jnode);

  IMFS_FIFO_RETURN(err);
}
Exemplo n.º 8
0
static ssize_t IMFS_fifo_write(
    rtems_libio_t *iop,
    const void    *buffer,
    size_t         count
)
{
    IMFS_jnode_t *jnode = iop->pathinfo.node_access;

    int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
    if (err > 0) {
        IMFS_mtime_ctime_update(jnode);
    }

    IMFS_FIFO_RETURN(err);
}
Exemplo n.º 9
0
ssize_t IMFS_fifo_write(
  epos_libio_t *iop,
  const void    *buffer,
  size_t         count
)
{
  IMFS_jnode_t *jnode = iop->file_info;

  int err = pipe_write(JNODE2PIPE(jnode), buffer, count, iop);
  if (err > 0) {
    IMFS_mtime_ctime_update(jnode);
  }

  IMFS_FIFO_RETURN(err);
}
Exemplo n.º 10
0
int IMFS_fifo_close(
  epos_libio_t *iop
)
{
  IMFS_jnode_t *jnode = iop->file_info;

  int err = pipe_release(&JNODE2PIPE(jnode), iop);

  if (! err) {
    iop->flags &= ~LIBIO_FLAGS_OPEN;
    /* Free jnode if file is already unlinked and no one opens it */
    if (! epos_libio_is_file_open(jnode) && jnode->st_nlink < 1)
      free(jnode);
  }

  IMFS_FIFO_RETURN(err);
}
Exemplo n.º 11
0
static int IMFS_fifo_ioctl(
    rtems_libio_t   *iop,
    ioctl_command_t  command,
    void            *buffer
)
{
    int err;

    if (command == FIONBIO) {
        if (buffer == NULL)
            err = -EFAULT;
        else {
            if (*(int *)buffer)
                iop->flags |= LIBIO_FLAGS_NO_DELAY;
            else
                iop->flags &= ~LIBIO_FLAGS_NO_DELAY;
            return 0;
        }
    }
    else
        err = pipe_ioctl(LIBIO2PIPE(iop), command, buffer, iop);

    IMFS_FIFO_RETURN(err);
}