[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