]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - embedded/arch/arm/generic/libs/misc/system_stub.c
Update of system-less architecture and board support code to actual uLAN.sf.net version.
[lincan.git] / embedded / arch / arm / generic / libs / misc / system_stub.c
index 24fa2f9677a4f35d886d4906b980fc509bdc69d5..81faf43171a79288680fd708ba0c044ed406754c 100644 (file)
 #include <errno.h>
 #include <reent.h>
 #include <system_def.h>
+#include "system_stub.h"
 
 /* Register name faking - works in collusion with the linker.  */
 register char * stack_ptr asm ("sp");
 
 system_stub_ops_t system_stub_ops;
 
+int _read(int file, char *ptr, int len);
 int
 _read (int file,
        char * ptr,
@@ -28,9 +30,10 @@ _read (int file,
   return system_stub_ops.read(file,ptr,len);
 }
 
+int _write(int file, const char *ptr, int len);
 int
 _write (int    file,
-       char * ptr,
+       const char * ptr,
        int    len)
 {
   if(!system_stub_ops.write)
@@ -49,6 +52,7 @@ _lseek (int file,
   return system_stub_ops.lseek(file,pos,dir);
 }
 
+int _open(const char *path, int flags, ...);
 int
 _open (const char * path,
        int          flags,
@@ -59,6 +63,7 @@ _open (const char * path,
   return system_stub_ops.open(path,flags,0);
 }
 
+int _close(int file);
 int
 _close (int file)
 {
@@ -69,6 +74,7 @@ _close (int file)
 
 typedef int (local_call_t)(void);
 
+void _exit(int n);
 void
 _exit (int n)
 {
@@ -76,21 +82,31 @@ _exit (int n)
   while(1);
 }
 
+void abort(void);
+void abort(void)
+{
+  ((local_call_t*)0)();
+  while(1);
+}
+
+int _kill(int n, int m);
 int
 _kill (int n, int m)
 {
   return -1;
 }
 
+int _getpid(void);
 int
-_getpid (int n)
+_getpid (void)
 {
   return 1;
 }
 
 
-caddr_t
-_sbrk (int incr)
+void *_sbrk(ptrdiff_t incr);
+void *
+_sbrk (ptrdiff_t incr)
 {
   extern char   end asm ("end");       /* Defined by the linker.  */
   static char   *heap_end;
@@ -100,9 +116,9 @@ _sbrk (int incr)
 
   if (heap_end == NULL)
     heap_end = & end;
-  
+
   prev_heap_end = heap_end;
-    
+
   if (heap_end + incr > stack_ptr)
     {
       /* Some of the libstdc++-v3 tests rely upon detecting
@@ -111,50 +127,58 @@ _sbrk (int incr)
       extern void abort (void);
 
       _write (1, "_sbrk: Heap and stack collision\n", 32);
-      
+
       abort ();
 #else
       errno = ENOMEM;
       return (caddr_t) -1;
 #endif
     }
-  
+
   heap_end += incr;
 
-  return (caddr_t) prev_heap_end;
+  return /*(caddr_t)*/ prev_heap_end;
 }
 
+int _fstat(int file, struct stat *st);
 int
 _fstat (int file, struct stat * st)
 {
   return -1;
 }
 
+int _stat (const char *fname, struct stat *st);
 int _stat (const char *fname, struct stat *st)
 {
   return -1;
 }
 
+int _link(const char *path1, const char *path2);
 int
-_link (void)
+_link (const char *path1,
+       const char *path2)
 {
   return -1;
 }
 
+int _unlink(const char *path);
 int
-_unlink (void)
+_unlink (const char *path)
 {
   return -1;
 }
 
+void _raise(void);
 void
 _raise (void)
 {
   return;
 }
 
+int _gettimeofday(struct timeval *tp, struct timezone *tzp);
 int
-_gettimeofday (struct timeval * tp, struct timezone * tzp)
+_gettimeofday (struct timeval *tp,
+              struct timezone *tzp)
 {
 
   if(tp) 
@@ -173,11 +197,12 @@ _gettimeofday (struct timeval * tp, struct timezone * tzp)
 }
 
 /* Return a clock that ticks at 100Hz.  */
+clock_t _times(struct tms *tp);
 clock_t 
 _times (struct tms * tp)
 {
   clock_t timeval = 0;
-  
+
   if (tp)
     {
       tp->tms_utime  = timeval;        /* user time */
@@ -185,25 +210,139 @@ _times (struct tms * tp)
       tp->tms_cutime = 0;      /* user time, children */
       tp->tms_cstime = 0;      /* system time, children */
     }
-  
+
   return timeval;
 };
 
 
+int isatty(int fd);
 int
 isatty (int fd)
 {
   return 1;
 }
 
+int _system(const char *s);
 int
 _system (const char *s)
 {
   return -1;
 }
 
+int _rename(const char *oldpath, const char *newpath);
 int
 _rename (const char * oldpath, const char * newpath)
 {
   return -1;
 }
+
+/* extern (.*) ([^ ]*) _PARAMS \(\(struct _reent \*(,*)(.*)\)\); */
+/* \1 \2 (struct _reent *\3\4) { return \2(\4);} */
+
+struct _reent;
+
+int _close_r(struct _reent *reent, int file) 
+{ return _close(file);}
+/*
+  int _fcntl_r(struct _reent *, int, int, int)
+  { return _fcntl( int, int, int);}
+*/
+int _fstat_r(struct _reent *reent, int file, struct stat *st);
+int _fstat_r(struct _reent *reent, int file, struct stat *st)
+{ return _fstat(file, st);}
+
+int _getpid_r(struct _reent *reent);
+int _getpid_r(struct _reent *reent)
+{ return _getpid();}
+
+int _kill_r(struct _reent *reent, int n, int m);
+int _kill_r(struct _reent *reent, int n, int m)
+{ return _kill(n, m);}
+
+int _link_r(struct _reent *reent, const char *path1, const char *path2);
+int _link_r(struct _reent *reent, const char *path1, const char *path2)
+{ return _link(path1, path2);}
+
+_off_t _lseek_r(struct _reent *reent, int file, _off_t pos, int dir);
+_off_t _lseek_r(struct _reent *reent, int file, _off_t pos, int dir)
+{ return _lseek(file, pos, dir);}
+
+int _open_r(struct _reent *reent, const char *path, int flags, int opts);
+int _open_r(struct _reent *reent, const char *path, int flags, int opts)
+{ return _open(path, flags, opts);}
+
+_ssize_t _read_r(struct _reent *reent, int file, void *ptr, size_t len);
+_ssize_t _read_r(struct _reent *reent, int file, void *ptr, size_t len)
+{ return _read(file, ptr, len);}
+
+void *_sbrk_r(struct _reent *reent, ptrdiff_t incr);
+void *_sbrk_r(struct _reent *reent, ptrdiff_t incr)
+{ return _sbrk(incr);}
+
+int _stat_r(struct _reent *reent, const char *path, struct stat *st);
+int _stat_r(struct _reent *reent, const char *path, struct stat *st)
+{ return _stat(path, st);}
+
+int _unlink_r(struct _reent *reent, const char *path);
+int _unlink_r(struct _reent *reent, const char *path)
+{ return _unlink(path);}
+
+_ssize_t _write_r(struct _reent *reent, int file, const void *ptr, size_t len);
+_ssize_t _write_r(struct _reent *reent, int file, const void *ptr, size_t len)
+{ return _write(file, ptr, len);}
+
+/* FIXME: TDK added dummy functions. Need to implement. */
+int _isatty(int fd);
+int _isatty(int fd)
+{
+  return -1;
+}
+
+int _swistat(int fd, struct stat *st);
+int _swistat(int fd, struct stat *st)
+{
+  return -1;
+}
+
+/* Return a clock that ticks at 100Hz.  */
+clock_t _clock(void);
+clock_t _clock(void)
+{
+  clock_t timeval=0;
+  return timeval;
+}
+
+int _swiclose(int fh);
+int _swiclose(int fh)
+{
+  return -1;
+}
+
+int _swiopen(const char *path, int flags);
+int _swiopen(const char *path, int flags)
+{
+  return -1;
+}
+
+int _swiwrite(int fh, char *ptr, int len);
+int _swiwrite(int fh, char *ptr, int len)
+{
+  return -1;
+}
+
+int _swilseek(int fd, int ptr, int dir);
+int _swilseek(int fd, int ptr, int dir)
+{
+  return -1;
+}
+
+int _swiread(int fh, char *ptr,        int len);
+int _swiread(int fh, char *ptr,        int len)
+{
+  return -1;
+}
+
+void initialise_monitor_handles(void);
+void initialise_monitor_handles(void)
+{
+}