diff options
-rw-r--r-- | libgloss/ChangeLog | 9 | ||||
-rw-r--r-- | libgloss/spu/Makefile.in | 3 | ||||
-rw-r--r-- | libgloss/spu/access.c | 49 | ||||
-rw-r--r-- | libgloss/spu/dup.c | 48 | ||||
-rw-r--r-- | libgloss/spu/ftruncate.c | 49 | ||||
-rw-r--r-- | libgloss/spu/jsre.h | 32 | ||||
-rw-r--r-- | libgloss/spu/time.c | 49 |
7 files changed, 238 insertions, 1 deletions
diff --git a/libgloss/ChangeLog b/libgloss/ChangeLog index 67a6930..0dd35fa 100644 --- a/libgloss/ChangeLog +++ b/libgloss/ChangeLog @@ -1,3 +1,12 @@ +2006-12-13 Sa Liu <saliu@de.ibm.com> + + * spu/access.c: New file + * spu/dup.c: New file + * spu/ftruncate.c: New file + * spu/jsre.h: add structures for new functions + * spu/time.c: New file + * spu/Makefile.in (access.o, dup.o, ftruncate.o, time.o): New targets. + 2006-12-12 Ben Elliston <bje@au.ibm.com> * configure.in: Remove superfluous semicolons. diff --git a/libgloss/spu/Makefile.in b/libgloss/spu/Makefile.in index b147bda..a68d8b7 100644 --- a/libgloss/spu/Makefile.in +++ b/libgloss/spu/Makefile.in @@ -55,7 +55,8 @@ OBJCOPY = `t='$(program_transform_name)'; echo objcopy | sed -e $$t` # object files needed OBJS = syscalls.o exit.o sbrk.o close.o fstat.o getpid.o isatty.o \ - kill.o lseek.o open.o read.o unlink.o write.o stat.o + kill.o lseek.o open.o read.o unlink.o write.o stat.o \ + ftruncate.o dup.o access.o time.o # Object files specific to particular targets. EVALOBJS = ${OBJS} diff --git a/libgloss/spu/access.c b/libgloss/spu/access.c new file mode 100644 index 0000000..ae3ab2d --- /dev/null +++ b/libgloss/spu/access.c @@ -0,0 +1,49 @@ +/* +(C) Copyright IBM Corp. 2005, 2006 + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + * Neither the name of IBM nor the names of its contributors may be +used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include <errno.h> +#include "jsre.h" + +int +access (const char *pathname, int mode) +{ + syscall_access_t sys; + syscall_out_t *psys_out = ( syscall_out_t* )&sys; + + sys.pathname = (unsigned int) pathname; + sys.mode = mode; + + _send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_ACCESS, &sys); + + errno = psys_out->err; + return ( psys_out->rc); +} + diff --git a/libgloss/spu/dup.c b/libgloss/spu/dup.c new file mode 100644 index 0000000..86562e7 --- /dev/null +++ b/libgloss/spu/dup.c @@ -0,0 +1,48 @@ +/* +(C) Copyright IBM Corp. 2005, 2006 + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + * Neither the name of IBM nor the names of its contributors may be +used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include <errno.h> +#include "jsre.h" + +int +dup (int oldfd) +{ + syscall_dup_t sys; + syscall_out_t *psys_out = ( syscall_out_t* )&sys; + + sys.oldfd = oldfd; + + _send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_DUP, &sys); + + errno = psys_out->err; + return ( psys_out->rc); +} + diff --git a/libgloss/spu/ftruncate.c b/libgloss/spu/ftruncate.c new file mode 100644 index 0000000..4f05bef --- /dev/null +++ b/libgloss/spu/ftruncate.c @@ -0,0 +1,49 @@ +/* +(C) Copyright IBM Corp. 2005, 2006 + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + * Neither the name of IBM nor the names of its contributors may be +used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +*/ +#include <unistd.h> +#include <errno.h> +#include "jsre.h" + +int +ftruncate (int file, off_t length) +{ + syscall_ftruncate_t sys; + syscall_out_t *psys_out = ( syscall_out_t* )&sys; + + sys.file = file; + sys.length = length; + + _send_to_ppe(JSRE_POSIX1_SIGNALCODE, JSRE_FTRUNCATE, &sys); + + errno = psys_out->err; + return ( psys_out->rc); +} + diff --git a/libgloss/spu/jsre.h b/libgloss/spu/jsre.h index 2bf0be0..4b95618 100644 --- a/libgloss/spu/jsre.h +++ b/libgloss/spu/jsre.h @@ -62,6 +62,10 @@ Author: Andreas Neukoetter (ti95neuk@de.ibm.com) #define JSRE_STAT 23 #define JSRE_UNLINK 24 #define JSRE_WRITE 27 +#define JSRE_FTRUNCATE 28 +#define JSRE_ACCESS 29 +#define JSRE_DUP 30 +#define JSRE_TIME 31 typedef struct { @@ -111,6 +115,34 @@ typedef struct typedef struct { + unsigned int file; + unsigned int pad0[ 3 ]; + unsigned int length; + unsigned int pad1[ 3 ]; +} syscall_ftruncate_t; + +typedef struct +{ + unsigned int pathname; + unsigned int pad0[ 3 ]; + unsigned int mode; + unsigned int pad1[ 3 ]; +} syscall_access_t; + +typedef struct +{ + unsigned int oldfd; + unsigned int pad0[ 3 ]; +} syscall_dup_t; + +typedef struct +{ + unsigned int time; + unsigned int pad0[ 3 ]; +} syscall_time_t; + +typedef struct +{ unsigned int pathname; unsigned int pad0[ 3 ]; } syscall_unlink_t; diff --git a/libgloss/spu/time.c b/libgloss/spu/time.c new file mode 100644 index 0000000..03fd02e --- /dev/null +++ b/libgloss/spu/time.c @@ -0,0 +1,49 @@ +/* +(C) Copyright IBM Corp. 2005, 2006 + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + * Neither the name of IBM nor the names of its contributors may be +used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include <unistd.h> +#include <errno.h> +#include "jsre.h" + +time_t +time (time_t *t) +{ + syscall_time_t sys; + syscall_out_t *psys_out = ( syscall_out_t* )&sys; + + sys.time = t; + + _send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_TIME, &sys); + + errno = psys_out->err; + return ( psys_out->rc); +} + |