2007-06-20 Patrick Mansfield <patmans@us.ibm.com>
* spu/jsre.h: Add JSRE_LSTAT.
        * spu/lstat.c: New file add lstat support via an assist call.
        * spu/conv_stat.c: New file, add common stat conversion code.
        * spu/fstat.c: Use __conv_stat.
        * spu/stat.c: Use __conv_stat.
        * spu/Makefile.in: Add conv_stat.o and lstat.o.
			
			
This commit is contained in:
		| @@ -1,3 +1,12 @@ | ||||
| 2007-06-20  Patrick Mansfield  <patmans@us.ibm.com> | ||||
|  | ||||
| 	* spu/jsre.h: Add JSRE_LSTAT. | ||||
| 	* spu/lstat.c: New file add lstat support via an assist call. | ||||
| 	* spu/conv_stat.c: New file, add common stat conversion code. | ||||
| 	* spu/fstat.c: Use __conv_stat. | ||||
| 	* spu/stat.c: Use __conv_stat. | ||||
| 	* spu/Makefile.in: Add conv_stat.o and lstat.o. | ||||
|  | ||||
| 2007-06-20  Patrick Mansfield  <patmans@us.ibm.com> | ||||
|  | ||||
| 	* spu/jsre.h: Add JSRE_GETCWD. | ||||
|   | ||||
| @@ -55,11 +55,11 @@ OBJCOPY = `t='$(program_transform_name)'; echo objcopy | sed -e $$t` | ||||
|  | ||||
| # object files needed | ||||
| OBJS = \ | ||||
| 	access.o chdir.o chmod.o chown.o close.o dup.o exit.o fchdir.o \ | ||||
| 	fchmod.o fchown.o fstat.o ftruncate.o getcwd.o getpagesize.o getpid.o \ | ||||
| 	gettimeofday.o isatty.o kill.o lchown.o lseek.o mkdir.o \ | ||||
| 	mknod.o nanosleep.o open.o read.o rmdir.o sbrk.o stat.o syscalls.o \ | ||||
| 	unlink.o write.o | ||||
| 	access.o chdir.o chmod.o chown.o close.o conv_stat.o dup.o exit.o \ | ||||
| 	fchdir.o fchmod.o fchown.o fstat.o ftruncate.o getcwd.o \ | ||||
| 	getpagesize.o getpid.o gettimeofday.o isatty.o kill.o lchown.o \ | ||||
| 	lseek.o lstat.o mkdir.o mknod.o nanosleep.o open.o read.o rmdir.o \ | ||||
| 	sbrk.o stat.o syscalls.o unlink.o write.o | ||||
|  | ||||
| # Object files specific to particular targets. | ||||
| EVALOBJS = ${OBJS} | ||||
|   | ||||
							
								
								
									
										57
									
								
								libgloss/spu/conv_stat.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								libgloss/spu/conv_stat.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| /* | ||||
|   Copyright 2007 | ||||
|   International Business Machines Corporation, | ||||
|   Sony Computer Entertainment, Incorporated, | ||||
|   Toshiba Corporation, | ||||
|  | ||||
|   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 names of the copyright holders nor the names of their | ||||
|   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 <sys/stat.h> | ||||
| #include "jsre.h" | ||||
|  | ||||
| /* | ||||
|  * Convert the jsre stat structure to the newlib stat. | ||||
|  */ | ||||
|  | ||||
| void | ||||
| __conv_stat (struct stat *stat, struct jsre_stat *jstat) | ||||
| { | ||||
|   stat->st_dev = jstat->dev; | ||||
|   stat->st_ino = jstat->ino; | ||||
|   stat->st_mode = jstat->mode; | ||||
|   stat->st_nlink = jstat->nlink; | ||||
|   stat->st_uid = jstat->uid; | ||||
|   stat->st_gid = jstat->gid; | ||||
|   stat->st_rdev = jstat->rdev; | ||||
|   stat->st_size = jstat->size; | ||||
|   stat->st_blksize = jstat->blksize; | ||||
|   stat->st_blocks = jstat->blocks; | ||||
|   stat->st_atime = jstat->atime; | ||||
|   stat->st_mtime = jstat->mtime; | ||||
|   stat->st_ctime = jstat->ctime; | ||||
| } | ||||
| @@ -45,26 +45,12 @@ int | ||||
| fstat (int file, struct stat *pstat) | ||||
| { | ||||
|         syscall_fstat_t sys; | ||||
|         jsre_stat_t pjstat; | ||||
|         struct jsre_stat pjstat; | ||||
|         int ret; | ||||
|  | ||||
|         sys.file = file; | ||||
|         sys.ptr = ( unsigned int )&pjstat; | ||||
|         ret = __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_FSTAT, &sys); | ||||
|  | ||||
|         pstat->st_dev = pjstat.dev; | ||||
|         pstat->st_ino = pjstat.ino; | ||||
|         pstat->st_mode = pjstat.mode; | ||||
|         pstat->st_nlink = pjstat.nlink; | ||||
|         pstat->st_uid = pjstat.uid; | ||||
|         pstat->st_gid = pjstat.gid; | ||||
|         pstat->st_rdev = pjstat.rdev; | ||||
|         pstat->st_size = pjstat.size; | ||||
|         pstat->st_blksize = pjstat.blksize; | ||||
|         pstat->st_blocks = pjstat.blocks; | ||||
|         pstat->st_atime = pjstat.atime; | ||||
|         pstat->st_mtime = pjstat.mtime; | ||||
|         pstat->st_ctime = pjstat.ctime; | ||||
|  | ||||
|         __conv_stat (pstat, &pjstat); | ||||
|         return ret; | ||||
| } | ||||
|   | ||||
| @@ -32,6 +32,9 @@ Author: Andreas Neukoetter (ti95neuk@de.ibm.com) | ||||
|  | ||||
| /* this file provides the mappings for the JSRE defined interface for PE assisted libary calls */ | ||||
|  | ||||
| #include <sys/stat.h> | ||||
| #include <sys/syscall.h> | ||||
|  | ||||
| #ifndef __JSRE_H | ||||
| #define __JSRE_H | ||||
|  | ||||
| @@ -42,6 +45,7 @@ Author: Andreas Neukoetter (ti95neuk@de.ibm.com) | ||||
| #define JSRE_GETPAGESIZE 6 | ||||
| #define JSRE_GETTIMEOFDAY 7 | ||||
| #define JSRE_LSEEK 9 | ||||
| #define JSRE_LSTAT 10 | ||||
| #define JSRE_OPEN 15 | ||||
| #define JSRE_READ 16 | ||||
| #define JSRE_STAT 23 | ||||
| @@ -64,7 +68,7 @@ Author: Andreas Neukoetter (ti95neuk@de.ibm.com) | ||||
| #define JSRE_LCHOWN 42 | ||||
| #define JSRE_GETCWD 43 | ||||
|  | ||||
| typedef struct { | ||||
| struct jsre_stat { | ||||
|     unsigned int dev; | ||||
|     unsigned int ino; | ||||
|     unsigned int mode; | ||||
| @@ -78,8 +82,8 @@ typedef struct { | ||||
|     unsigned int atime; | ||||
|     unsigned int mtime; | ||||
|     unsigned int ctime; | ||||
| } jsre_stat_t; | ||||
| }; | ||||
|  | ||||
| #include <sys/syscall.h> | ||||
| void __conv_stat (struct stat *stat, struct jsre_stat *jstat); | ||||
|  | ||||
| #endif | ||||
|   | ||||
							
								
								
									
										58
									
								
								libgloss/spu/lstat.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								libgloss/spu/lstat.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| /* | ||||
|   Copyright 2007 | ||||
|   International Business Machines Corporation, | ||||
|   Sony Computer Entertainment, Incorporated, | ||||
|   Toshiba Corporation, | ||||
|  | ||||
|   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 names of the copyright holders nor the names of their | ||||
|   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 <stdarg.h> | ||||
| #include <fcntl.h> | ||||
| #include "jsre.h" | ||||
|  | ||||
| typedef struct | ||||
| { | ||||
|   unsigned int pathname; | ||||
|   unsigned int pad0[3]; | ||||
|   unsigned int ptr; | ||||
|   unsigned int pad1[3]; | ||||
| } syscall_stat_t; | ||||
|  | ||||
| int | ||||
| lstat (const char *pathname, struct stat *pstat) | ||||
| { | ||||
|   syscall_stat_t sys; | ||||
|   struct jsre_stat pjstat; | ||||
|   int ret; | ||||
|  | ||||
|   sys.pathname = (unsigned int)pathname; | ||||
|   sys.ptr = ( unsigned int )&pjstat; | ||||
|   ret = __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_LSTAT, &sys); | ||||
|   __conv_stat (pstat, &pjstat); | ||||
|   return ret; | ||||
| } | ||||
| @@ -46,26 +46,12 @@ int | ||||
| stat (const char *pathname, struct stat *pstat) | ||||
| { | ||||
| 	syscall_stat_t sys; | ||||
| 	jsre_stat_t pjstat; | ||||
| 	struct jsre_stat pjstat; | ||||
| 	int ret; | ||||
|  | ||||
| 	sys.pathname = (unsigned int)pathname; | ||||
| 	sys.ptr = ( unsigned int )&pjstat; | ||||
| 	ret = __send_to_ppe (JSRE_POSIX1_SIGNALCODE, JSRE_STAT, &sys); | ||||
|  | ||||
| 	pstat->st_dev = pjstat.dev; | ||||
| 	pstat->st_ino = pjstat.ino; | ||||
| 	pstat->st_mode = pjstat.mode; | ||||
| 	pstat->st_nlink = pjstat.nlink; | ||||
| 	pstat->st_uid = pjstat.uid; | ||||
| 	pstat->st_gid = pjstat.gid; | ||||
| 	pstat->st_rdev = pjstat.rdev; | ||||
| 	pstat->st_size = pjstat.size; | ||||
| 	pstat->st_blksize = pjstat.blksize; | ||||
| 	pstat->st_blocks = pjstat.blocks; | ||||
| 	pstat->st_atime = pjstat.atime; | ||||
| 	pstat->st_mtime = pjstat.mtime; | ||||
| 	pstat->st_ctime = pjstat.ctime; | ||||
|  | ||||
| 	__conv_stat (pstat, &pjstat); | ||||
| 	return ret; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user