View of xos/fs/file.c


XOS | Parent Directory | View | Download

/* Copyright (C) 2008  Emmanuel Varoquaux
 
   This file is part of XOS.
 
   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.
 
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
 
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
#include "file_struct.h"
 
int file_read(struct file_struct *file, unsigned long *pos, char *fs_buf, unsigned int count)
{
  int rv;
 
  if ((rv = file->file_operations->read(file, *pos, fs_buf, count)) < 0)
    return rv;
  *pos += rv;
  return rv;
}
 
int file_write(struct file_struct *file, unsigned long *pos, const char *fs_buf, unsigned int count)
{
  int rv;
 
  if ((rv = file->file_operations->write(file, *pos, fs_buf, count)) < 0)
    return rv;
  *pos += rv;
  return rv;
}
 
long file_seek(const struct file_struct *file, unsigned long *pos, long offset, int whence)
{
  long rv;
 
  if ((rv = file->file_operations->seek(file, *pos, offset, whence)) < 0)
    return rv;
  *pos = rv;
  return rv;
}
 
int file_stat(const struct file_struct *file, struct stat_struct *fs_buf)
{
  return file->file_operations->stat(file, fs_buf);
}
 
int file_ioctl(const struct file_struct *file, int request, void *fs_arg)
{
  return file->file_operations->ioctl(file, request, fs_arg);
}