Main Page | Alphabetical List | Class List | File List | Class Members | File Members

unistd.h

Go to the documentation of this file.
00001 /* =============
00002  * apeNEXT/nlibc
00003  * =============
00004  *
00005  * $Id: unistd.h,v 2.8 2006/05/06 08:16:46 pleiter Exp $
00006  * -------------------------------------------------------------------------- */
00007 
00008 #ifndef _NLIBC_UNISTD_H
00009 #define _NLIBC_UNISTD_H
00010 
00011 #include <nlibc.h>
00012 #include <errno.h>
00013 #include <stddef.h>
00014 
00015 /* -------------------------------------------------------------------------- */
00050 /* -------------------------------------------------------------------------- */
00051 
00052 #ifndef __HAS_MAIN
00053 extern void *w_sbrk(ptrdiff_t words);
00054 #else
00055 #if !defined(__cflow_processed) || defined(_uses_w_sbrk_unistd_h)
00056 void *w_sbrk(ptrdiff_t words)
00057 {
00058   register void *newHP;
00059 
00060   asm("\tatr $HP 0.$HP.-%0" :: "r" (words));
00061   asm("\tlutmove %0 $HP" : "=r" (newHP));
00062   asm("\tipushandbislt.L $HP $SP\n"
00063       "\t  pragma_stk_c5\n"
00064       "\t  sex <$SEX_NLCC_STK_OVFL>\n"
00065       "\t  pragma_stk_e5\n"
00066       "\tspop\n");
00067 
00068   return newHP;
00069 }
00070 #endif // _uses_w_sbrk_unistd_h
00071 #endif // Has Main
00072 
00073 
00074 #ifndef __HAS_MAIN
00075 extern void *sbrk(ptrdiff_t inc_bytes);
00076 #else
00077 #if !defined(__cflow_processed) || defined(_uses_sbrk_unistd_h)
00078 void *sbrk(ptrdiff_t inc_bytes)
00079 {
00080   int words = (inc_bytes+15)>>4;
00081   return w_sbrk(words);
00082 }
00083 #endif // _uses_sbrk_unistd_h
00084 #endif // Has Main
00085 
00086 
00087 /* -------------------------------------------------------------------------- */
00113 /* -------------------------------------------------------------------------- */
00114 
00115 enum {
00116         _SC_CLK_TCK=2,          
00117 };
00118 
00119 #ifndef __HAS_MAIN
00120 extern long sysconf(int name);
00121 #else
00122 #if !defined(__cflow_processed) || defined(_uses_sysconf_unistd_h)
00123 long sysconf(int name)
00124 {
00125   register long ret;
00126 
00127   switch (name) {
00128     case _SC_CLK_TCK:
00129     {
00130       register double clk_normfac;
00131       asm("\tLMTR %0 :1 $MEM_CLK_NORMFAC\n" : "=r" (clk_normfac));
00132       ret = (long) (1000. / clk_normfac);
00133       break;
00134     }
00135     default:
00136       errno = EINVAL;
00137       ret = -1;
00138   }
00139 
00140   return ret;
00141 }
00142 #endif // _uses_sysconf_unistd_h
00143 #endif // Has Main
00144 
00145 
00146 #ifdef _OS_
00147 #include <os1/unistd.h>
00148 #endif
00149 
00150 #endif  // _NLIBC_UNISTD_H

Generated on Fri Jul 14 10:51:32 2006 for nlibc by doxygen 1.3.5