summaryrefslogblamecommitdiffstats
path: root/c/src/lib/libc/syscalls.c
blob: d56749ff52b0d20d785e520c8fbca5567c4a3ff9 (plain) (tree)





















                                                                          
                   


                                       
 


                   
  



                                                                            
                                              
 
                  
                                                    

                




                           

 
                           



           
                        

                                              
                                      
              
   
                                 













                                                 


                                       





















                                                     
      
 
      
/*
 *  RTEMS Fake System Calls
 *
 *  This file contains "fake" versions of the system call routines
 *  which are reference by many libc implementations.  Once a routine
 *  has been implemented in terms of RTEMS services, it should be
 *  taken out of this file.
 *
 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
 *  On-Line Applications Research Corporation (OAR).
 *  All rights assigned to U.S. Government, 1994.
 *
 *  This material may be reproduced by or for the U.S. Government pursuant
 *  to the copyright license under the clause at DFARS 252.227-7013.  This
 *  notice must appear in all copies of this file and its derivatives.
 *
 *  $Id$
 *
 */

#include <sys/types.h>
#include <sys/stat.h>
#include <assert.h>
#include <errno.h>
#include <string.h>
#include <stdio.h>  /* only for puts */

#include <rtems.h>

#ifdef RTEMS_NEWLIB
/*
 *  fstat, stat, and isatty must lie consistently and report that everything
 *  is a tty or stdout will not be line buffered.
 */

int __rtems_fstat(int _fd, struct stat* _sbuf)
{
  if ( _fd > 2 ) {
    puts( "__rtems_fstat -- only stdio supported" );
    assert( 0 );
  }
  _sbuf->st_mode = S_IFCHR;
#ifdef HAVE_BLKSIZE
  _sbuf->st_blksize = 0;
#endif
  return 0;
}

int __rtems_isatty(int _fd)
{
  return 1;
}

#if !defined(RTEMS_UNIX)
int stat( const char *path, struct stat *buf )
{
  if ( strncmp( "/dev/", path, 5 ) ) {
    return -1;
  }
  return __rtems_fstat( 0, buf );
}

int link( const char *existing, const char *new )
{
  /* always fail */
  return -1;
}

int unlink( const char *path )
{
  /* always fail */
  return -1;
}

char *getcwd( char *_buf, size_t _size)
{

/*  assert( FALSE ); */
  errno = ENOSYS;
  return 0;
}
int fork() {
  puts( "fork -- not supported!!!" );
  assert( 0 );
  errno = ENOSYS;
  return -1;
}
int execv(const char *_path, char * const _argv[] ) {
  puts( "execv -- not supported!!!" ); 
  assert( 0 );
  errno = ENOSYS;
  return -1;
}
int wait() {
  puts( "wait -- not supported!!!" );
  assert( 0 );
  errno = ENOSYS;
  return -1;
}
#endif

#endif