[PATCH] add misc cell spu POSIX functions
Jeff Johnston
jjohnstn@redhat.com
Wed Dec 13 22:25:00 GMT 2006
Patch checked in.
-- Jeff J.
jschopp wrote:
> The attached patch is for the cell spu and adds some POSIX functions to
> libgloss that the fortran compiler is fond of having. It's a
> straightforward patch. Originally authored by Sa, forward ported by me.
>
> 2006-12-12 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.
>
>
> ------------------------------------------------------------------------
>
> Index: src/libgloss/spu/access.c
> ===================================================================
> --- /dev/null
> +++ src/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);
> +}
> +
> Index: src/libgloss/spu/dup.c
> ===================================================================
> --- /dev/null
> +++ src/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);
> +}
> +
> Index: src/libgloss/spu/ftruncate.c
> ===================================================================
> --- /dev/null
> +++ src/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);
> +}
> +
> Index: src/libgloss/spu/jsre.h
> ===================================================================
> --- src.orig/libgloss/spu/jsre.h
> +++ src/libgloss/spu/jsre.h
> @@ -62,6 +62,10 @@ Author: Andreas Neukoetter (ti95neuk@de.
> #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;
> Index: src/libgloss/spu/Makefile.in
> ===================================================================
> --- src.orig/libgloss/spu/Makefile.in
> +++ src/libgloss/spu/Makefile.in
> @@ -55,7 +55,8 @@ OBJCOPY = `t='$(program_transform_name)'
>
> # 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}
> Index: src/libgloss/spu/time.c
> ===================================================================
> --- /dev/null
> +++ src/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);
> +}
> +
More information about the Newlib
mailing list